Skip to main content

redevplugin_contracts/
contracts_gen.rs

1// Code generated by scripts/generate_platform_package_contracts.mjs; DO NOT EDIT.
2
3use super::{
4    Contract, ContractId, GoModuleCoordinate, NpmPackageCoordinate, PackageSet, RustCrateCoordinate,
5};
6
7impl ContractId {
8    pub const COMPATIBILITY_MANIFEST_SCHEMA: Self =
9        Self::from_static("compatibility-manifest-schema");
10    pub const CONTRACT_REGISTRY: Self = Self::from_static("contract-registry");
11    pub const CONTRACT_REGISTRY_SCHEMA: Self = Self::from_static("contract-registry-schema");
12    pub const ERROR_CODES_SCHEMA: Self = Self::from_static("error-codes-schema");
13    pub const HOST_CAPABILITY_COMPATIBILITY_SCHEMA: Self =
14        Self::from_static("host-capability-compatibility-schema");
15    pub const HOST_CAPABILITY_CONTRACT_SCHEMA: Self =
16        Self::from_static("host-capability-contract-schema");
17    pub const HOST_CAPABILITY_MANIFEST_SCHEMA: Self =
18        Self::from_static("host-capability-manifest-schema");
19    pub const HOST_CAPABILITY_NOTICES_SCHEMA: Self =
20        Self::from_static("host-capability-notices-schema");
21    pub const HOST_CAPABILITY_PIN_SCHEMA: Self = Self::from_static("host-capability-pin-schema");
22    pub const HOST_CAPABILITY_SIGNATURE_SCHEMA: Self =
23        Self::from_static("host-capability-signature-schema");
24    pub const IFRAME_BRIDGE_SCHEMA: Self = Self::from_static("iframe-bridge-schema");
25    pub const MANIFEST_SCHEMA: Self = Self::from_static("manifest-schema");
26    pub const NETWORK_GRANT_SCHEMA: Self = Self::from_static("network-grant-schema");
27    pub const OPAQUE_SURFACE_DOCUMENT_SCHEMA: Self =
28        Self::from_static("opaque-surface-document-schema");
29    pub const OPAQUE_SURFACE_TRANSPORT_SCHEMA: Self =
30        Self::from_static("opaque-surface-transport-schema");
31    pub const OWNER_SCOPE_INVENTORY_REGISTRY: Self =
32        Self::from_static("owner-scope-inventory-registry");
33    pub const OWNER_SCOPE_INVENTORY_SCHEMA: Self =
34        Self::from_static("owner-scope-inventory-schema");
35    pub const OWNER_SCOPE_MIGRATION_SCHEMA: Self =
36        Self::from_static("owner-scope-migration-schema");
37    pub const PACKAGE_SIGNATURE_SCHEMA: Self = Self::from_static("package-signature-schema");
38    pub const PERFORMANCE_CONTRACT: Self = Self::from_static("performance-contract");
39    pub const PERFORMANCE_EVIDENCE_SCHEMA: Self = Self::from_static("performance-evidence-schema");
40    pub const PLATFORM_PACKAGE_PUBLICATION_SCHEMA: Self =
41        Self::from_static("platform-package-publication-schema");
42    pub const PLATFORM_PACKAGE_SET_SCHEMA: Self = Self::from_static("platform-package-set-schema");
43    pub const PLUGIN_PLATFORM_OPENAPI: Self = Self::from_static("plugin-platform-openapi");
44    pub const PROCESS_CONTAINMENT_SCHEMA: Self = Self::from_static("process-containment-schema");
45    pub const QUARANTINE_CLEANUP_SCHEMA: Self = Self::from_static("quarantine-cleanup-schema");
46    pub const RELEASE_METADATA_SCHEMA: Self = Self::from_static("release-metadata-schema");
47    pub const RELEASE_REVOCATION_POINTER_SCHEMA: Self =
48        Self::from_static("release-revocation-pointer-schema");
49    pub const RELEASE_REVOCATION_SCHEMA: Self = Self::from_static("release-revocation-schema");
50    pub const RELEASE_ROOT_DELEGATION_SCHEMA: Self =
51        Self::from_static("release-root-delegation-schema");
52    pub const RELEASE_SIGNATURE_ENVELOPE_SCHEMA: Self =
53        Self::from_static("release-signature-envelope-schema");
54    pub const RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA: Self =
55        Self::from_static("release-signing-ledger-evidence-schema");
56    pub const RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA: Self =
57        Self::from_static("release-signing-ledger-receipt-schema");
58    pub const RELEASE_SIGNING_LEDGER_SCHEMA: Self =
59        Self::from_static("release-signing-ledger-schema");
60    pub const RELEASE_SIGNING_SUBJECT_SCHEMA: Self =
61        Self::from_static("release-signing-subject-schema");
62    pub const RELEASE_SOURCE_POLICY_POINTER_SCHEMA: Self =
63        Self::from_static("release-source-policy-pointer-schema");
64    pub const RELEASE_SOURCE_POLICY_SCHEMA: Self =
65        Self::from_static("release-source-policy-schema");
66    pub const RELEASE_TRUST_STATE_SCHEMA: Self = Self::from_static("release-trust-state-schema");
67    pub const RESOURCE_SCOPE_SCHEMA: Self = Self::from_static("resource-scope-schema");
68    pub const RUNTIME_ADMISSION_SCHEMA: Self = Self::from_static("runtime-admission-schema");
69    pub const RUNTIME_DESCRIPTOR_SCHEMA: Self = Self::from_static("runtime-descriptor-schema");
70    pub const RUNTIME_EXEC_JOURNAL_SCHEMA: Self = Self::from_static("runtime-exec-journal-schema");
71    pub const RUST_IPC_SCHEMA: Self = Self::from_static("rust-ipc-schema");
72    pub const SESSION_SCOPE_SCHEMA: Self = Self::from_static("session-scope-schema");
73    pub const TARGET_CLASSIFIER_FIXTURE: Self = Self::from_static("target-classifier-fixture");
74    pub const TOKEN_TICKET_SCHEMA: Self = Self::from_static("token-ticket-schema");
75    pub const TRUSTED_TIME_EVIDENCE_SCHEMA: Self =
76        Self::from_static("trusted-time-evidence-schema");
77    pub const TRUSTED_TIME_LEAF_SCHEMA: Self = Self::from_static("trusted-time-leaf-schema");
78    pub const WASM_WORKER_SCHEMA: Self = Self::from_static("wasm-worker-schema");
79    pub const WORKER_INVOCATION_SCHEMA: Self = Self::from_static("worker-invocation-schema");
80}
81
82pub(crate) fn parse_contract_id(value: &str) -> Option<ContractId> {
83    match value {
84        "compatibility-manifest-schema" => Some(ContractId::COMPATIBILITY_MANIFEST_SCHEMA),
85        "contract-registry" => Some(ContractId::CONTRACT_REGISTRY),
86        "contract-registry-schema" => Some(ContractId::CONTRACT_REGISTRY_SCHEMA),
87        "error-codes-schema" => Some(ContractId::ERROR_CODES_SCHEMA),
88        "host-capability-compatibility-schema" => {
89            Some(ContractId::HOST_CAPABILITY_COMPATIBILITY_SCHEMA)
90        }
91        "host-capability-contract-schema" => Some(ContractId::HOST_CAPABILITY_CONTRACT_SCHEMA),
92        "host-capability-manifest-schema" => Some(ContractId::HOST_CAPABILITY_MANIFEST_SCHEMA),
93        "host-capability-notices-schema" => Some(ContractId::HOST_CAPABILITY_NOTICES_SCHEMA),
94        "host-capability-pin-schema" => Some(ContractId::HOST_CAPABILITY_PIN_SCHEMA),
95        "host-capability-signature-schema" => Some(ContractId::HOST_CAPABILITY_SIGNATURE_SCHEMA),
96        "iframe-bridge-schema" => Some(ContractId::IFRAME_BRIDGE_SCHEMA),
97        "manifest-schema" => Some(ContractId::MANIFEST_SCHEMA),
98        "network-grant-schema" => Some(ContractId::NETWORK_GRANT_SCHEMA),
99        "opaque-surface-document-schema" => Some(ContractId::OPAQUE_SURFACE_DOCUMENT_SCHEMA),
100        "opaque-surface-transport-schema" => Some(ContractId::OPAQUE_SURFACE_TRANSPORT_SCHEMA),
101        "owner-scope-inventory-registry" => Some(ContractId::OWNER_SCOPE_INVENTORY_REGISTRY),
102        "owner-scope-inventory-schema" => Some(ContractId::OWNER_SCOPE_INVENTORY_SCHEMA),
103        "owner-scope-migration-schema" => Some(ContractId::OWNER_SCOPE_MIGRATION_SCHEMA),
104        "package-signature-schema" => Some(ContractId::PACKAGE_SIGNATURE_SCHEMA),
105        "performance-contract" => Some(ContractId::PERFORMANCE_CONTRACT),
106        "performance-evidence-schema" => Some(ContractId::PERFORMANCE_EVIDENCE_SCHEMA),
107        "platform-package-publication-schema" => {
108            Some(ContractId::PLATFORM_PACKAGE_PUBLICATION_SCHEMA)
109        }
110        "platform-package-set-schema" => Some(ContractId::PLATFORM_PACKAGE_SET_SCHEMA),
111        "plugin-platform-openapi" => Some(ContractId::PLUGIN_PLATFORM_OPENAPI),
112        "process-containment-schema" => Some(ContractId::PROCESS_CONTAINMENT_SCHEMA),
113        "quarantine-cleanup-schema" => Some(ContractId::QUARANTINE_CLEANUP_SCHEMA),
114        "release-metadata-schema" => Some(ContractId::RELEASE_METADATA_SCHEMA),
115        "release-revocation-pointer-schema" => Some(ContractId::RELEASE_REVOCATION_POINTER_SCHEMA),
116        "release-revocation-schema" => Some(ContractId::RELEASE_REVOCATION_SCHEMA),
117        "release-root-delegation-schema" => Some(ContractId::RELEASE_ROOT_DELEGATION_SCHEMA),
118        "release-signature-envelope-schema" => Some(ContractId::RELEASE_SIGNATURE_ENVELOPE_SCHEMA),
119        "release-signing-ledger-evidence-schema" => {
120            Some(ContractId::RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA)
121        }
122        "release-signing-ledger-receipt-schema" => {
123            Some(ContractId::RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA)
124        }
125        "release-signing-ledger-schema" => Some(ContractId::RELEASE_SIGNING_LEDGER_SCHEMA),
126        "release-signing-subject-schema" => Some(ContractId::RELEASE_SIGNING_SUBJECT_SCHEMA),
127        "release-source-policy-pointer-schema" => {
128            Some(ContractId::RELEASE_SOURCE_POLICY_POINTER_SCHEMA)
129        }
130        "release-source-policy-schema" => Some(ContractId::RELEASE_SOURCE_POLICY_SCHEMA),
131        "release-trust-state-schema" => Some(ContractId::RELEASE_TRUST_STATE_SCHEMA),
132        "resource-scope-schema" => Some(ContractId::RESOURCE_SCOPE_SCHEMA),
133        "runtime-admission-schema" => Some(ContractId::RUNTIME_ADMISSION_SCHEMA),
134        "runtime-descriptor-schema" => Some(ContractId::RUNTIME_DESCRIPTOR_SCHEMA),
135        "runtime-exec-journal-schema" => Some(ContractId::RUNTIME_EXEC_JOURNAL_SCHEMA),
136        "rust-ipc-schema" => Some(ContractId::RUST_IPC_SCHEMA),
137        "session-scope-schema" => Some(ContractId::SESSION_SCOPE_SCHEMA),
138        "target-classifier-fixture" => Some(ContractId::TARGET_CLASSIFIER_FIXTURE),
139        "token-ticket-schema" => Some(ContractId::TOKEN_TICKET_SCHEMA),
140        "trusted-time-evidence-schema" => Some(ContractId::TRUSTED_TIME_EVIDENCE_SCHEMA),
141        "trusted-time-leaf-schema" => Some(ContractId::TRUSTED_TIME_LEAF_SCHEMA),
142        "wasm-worker-schema" => Some(ContractId::WASM_WORKER_SCHEMA),
143        "worker-invocation-schema" => Some(ContractId::WORKER_INVOCATION_SCHEMA),
144        _ => None,
145    }
146}
147
148static CONTRACT_BODY_COMPATIBILITY_MANIFEST_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/compatibility-manifest-v8.schema.json\",\n  \"title\": \"ReDevPlugin compatibility manifest v8\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"package_set\", \"matrix\", \"contract_set_sha256\", \"contracts\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.compatibility.v8\"},\n    \"package_set\": {\"$ref\": \"platform-package-set-v1.schema.json\"},\n    \"matrix\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"plugin_ui_protocol_version\", \"plugin_host_protocol_version\", \"rust_ipc_version\", \"wasm_abi_version\",\n        \"manifest_schema_version\", \"package_signature_schema_version\", \"release_metadata_schema_version\",\n        \"release_root_delegation_schema_version\", \"release_source_policy_schema_version\",\n        \"release_source_policy_pointer_schema_version\", \"release_revocation_schema_version\",\n        \"release_revocation_pointer_schema_version\", \"release_trust_state_schema_version\",\n        \"trusted_time_evidence_schema_version\", \"trusted_time_leaf_schema_version\",\n        \"release_signing_ledger_schema_version\", \"release_signing_subject_schema_version\",\n        \"release_signature_envelope_schema_version\", \"release_signing_ledger_receipt_schema_version\",\n        \"release_signing_ledger_evidence_schema_version\", \"token_ticket_schema_version\", \"bridge_schema_version\",\n        \"opaque_surface_document_schema_version\", \"opaque_surface_transport_schema_version\", \"target_classifier_version\",\n        \"network_grant_schema_version\", \"resource_scope_schema_version\", \"session_scope_schema_version\",\n        \"plugin_platform_openapi_version\", \"compatibility_schema_version\", \"worker_invocation_schema_version\",\n        \"host_capability_contract_schema_version\", \"host_capability_pin_schema_version\",\n        \"host_capability_manifest_schema_version\", \"host_capability_compatibility_schema_version\",\n        \"host_capability_signature_schema_version\", \"host_capability_notices_schema_version\",\n        \"error_codes_schema_version\", \"performance_contract_version\", \"performance_evidence_schema_version\",\n        \"contract_registry_version\", \"platform_package_set_schema_version\",\n        \"platform_package_publication_schema_version\", \"runtime_admission_schema_version\",\n        \"runtime_descriptor_schema_version\", \"owner_scope_inventory_registry_version\",\n        \"owner_scope_inventory_schema_version\", \"owner_scope_migration_schema_version\",\n        \"process_containment_schema_version\", \"runtime_exec_journal_schema_version\",\n        \"quarantine_cleanup_schema_version\"\n      ],\n      \"properties\": {\n        \"plugin_ui_protocol_version\": {\"const\": \"plugin-ui-v5\"},\n        \"plugin_host_protocol_version\": {\"const\": \"plugin-host-v6\"},\n        \"rust_ipc_version\": {\"const\": \"rust-ipc-v6\"},\n        \"wasm_abi_version\": {\"const\": \"redevplugin-wasm-worker-v2\"},\n        \"manifest_schema_version\": {\"const\": \"manifest-v5\"},\n        \"package_signature_schema_version\": {\"const\": \"package-signature-v1\"},\n        \"release_metadata_schema_version\": {\"const\": \"release-metadata-v5\"},\n        \"release_root_delegation_schema_version\": {\"const\": \"release-root-delegation-v1\"},\n        \"release_source_policy_schema_version\": {\"const\": \"release-source-policy-v2\"},\n        \"release_source_policy_pointer_schema_version\": {\"const\": \"release-source-policy-pointer-v1\"},\n        \"release_revocation_schema_version\": {\"const\": \"release-revocation-v2\"},\n        \"release_revocation_pointer_schema_version\": {\"const\": \"release-revocation-pointer-v1\"},\n        \"release_trust_state_schema_version\": {\"const\": \"release-trust-state-v1\"},\n        \"trusted_time_evidence_schema_version\": {\"const\": \"trusted-time-evidence-v1\"},\n        \"trusted_time_leaf_schema_version\": {\"const\": \"trusted-time-leaf-v1\"},\n        \"release_signing_ledger_schema_version\": {\"const\": \"release-signing-ledger-v1\"},\n        \"release_signing_subject_schema_version\": {\"const\": \"release-signing-subject-v1\"},\n        \"release_signature_envelope_schema_version\": {\"const\": \"release-signature-envelope-v1\"},\n        \"release_signing_ledger_receipt_schema_version\": {\"const\": \"release-signing-ledger-receipt-v1\"},\n        \"release_signing_ledger_evidence_schema_version\": {\"const\": \"release-signing-ledger-evidence-v1\"},\n        \"token_ticket_schema_version\": {\"const\": \"token-ticket-v4\"},\n        \"bridge_schema_version\": {\"const\": \"bridge-v5\"},\n        \"opaque_surface_document_schema_version\": {\"const\": \"opaque-surface-document-v3\"},\n        \"opaque_surface_transport_schema_version\": {\"const\": \"opaque-surface-transport-v4\"},\n        \"target_classifier_version\": {\"const\": \"target-classifier-v2\"},\n        \"network_grant_schema_version\": {\"const\": \"network-grant-v2\"},\n        \"resource_scope_schema_version\": {\"const\": \"resource-scope-v1\"},\n        \"session_scope_schema_version\": {\"const\": \"session-scope-v1\"},\n        \"plugin_platform_openapi_version\": {\"const\": \"plugin-platform-v8\"},\n        \"compatibility_schema_version\": {\"const\": \"compatibility-manifest-v8\"},\n        \"worker_invocation_schema_version\": {\"const\": \"worker-invocation-v3\"},\n        \"host_capability_contract_schema_version\": {\"const\": \"host-capability-contract-v1\"},\n        \"host_capability_pin_schema_version\": {\"const\": \"host-capability-pin-v1\"},\n        \"host_capability_manifest_schema_version\": {\"const\": \"host-capability-manifest-v1\"},\n        \"host_capability_compatibility_schema_version\": {\"const\": \"host-capability-compatibility-v1\"},\n        \"host_capability_signature_schema_version\": {\"const\": \"host-capability-signature-v1\"},\n        \"host_capability_notices_schema_version\": {\"const\": \"host-capability-notices-v1\"},\n        \"error_codes_schema_version\": {\"const\": \"error-codes-v6\"},\n        \"performance_contract_version\": {\"const\": \"performance-contract-v3\"},\n        \"performance_evidence_schema_version\": {\"const\": \"performance-evidence-v3\"},\n        \"contract_registry_version\": {\"const\": \"contract-registry-v2\"},\n        \"platform_package_set_schema_version\": {\"const\": \"platform-package-set-v1\"},\n        \"platform_package_publication_schema_version\": {\"const\": \"platform-package-publication-v1\"},\n        \"runtime_admission_schema_version\": {\"const\": \"runtime-admission-v1\"},\n        \"runtime_descriptor_schema_version\": {\"const\": \"runtime-descriptor-v2\"},\n        \"owner_scope_inventory_registry_version\": {\"const\": \"owner-scope-inventory-registry-v1\"},\n        \"owner_scope_inventory_schema_version\": {\"const\": \"owner-scope-inventory-v1\"},\n        \"owner_scope_migration_schema_version\": {\"const\": \"owner-scope-migration-v1\"},\n        \"process_containment_schema_version\": {\"const\": \"process-containment-v1\"},\n        \"runtime_exec_journal_schema_version\": {\"const\": \"runtime-exec-journal-v1\"},\n        \"quarantine_cleanup_schema_version\": {\"const\": \"quarantine-cleanup-v1\"}\n      }\n    },\n    \"contract_set_sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n    \"contracts\": {\n      \"type\": \"array\", \"minItems\": 1, \"maxItems\": 256, \"uniqueItems\": true,\n      \"items\": {\"$ref\": \"#/$defs/contract\"}\n    }\n  },\n  \"$defs\": {\n    \"contract\": {\n      \"type\": \"object\", \"additionalProperties\": false,\n      \"required\": [\"id\", \"path\", \"version\", \"sha256\"],\n      \"properties\": {\n        \"id\": {\"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9-]+$\"},\n        \"path\": {\"type\": \"string\", \"pattern\": \"^spec/(openapi|plugin)/[A-Za-z0-9._/-]+$\"},\n        \"version\": {\"type\": \"string\", \"minLength\": 1},\n        \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n      }\n    }\n  }\n}\n".as_bytes();
149static CONTRACT_BODY_CONTRACT_REGISTRY: &[u8] = "{\n  \"schema_version\": \"redevplugin.contract_registry.v2\",\n  \"registry_version\": \"contract-registry-v2\",\n  \"artifacts\": [\n    {\n      \"id\": \"compatibility-manifest-schema\",\n      \"path\": \"spec/plugin/compatibility-manifest-v8.schema.json\",\n      \"version\": \"compatibility-manifest-v8\",\n      \"sha256\": \"a1831e0ae9a1b47d92e7ad9879b1ca4e3510ebc212b87360595b672e8b87bc79\"\n    },\n    {\n      \"id\": \"contract-registry-schema\",\n      \"path\": \"spec/plugin/contract-registry-v2.schema.json\",\n      \"version\": \"contract-registry-v2\",\n      \"sha256\": \"d516b3565158ac1b0d5e9f86b91b13ac19321ab3ff54468be41951b68d7085ac\"\n    },\n    {\n      \"id\": \"error-codes-schema\",\n      \"path\": \"spec/plugin/error-codes-v6.schema.json\",\n      \"version\": \"error-codes-v6\",\n      \"sha256\": \"094cb980156c17af4866942b51e6a1032ea7d1ae0675b329d59a765223ccda28\"\n    },\n    {\n      \"id\": \"host-capability-compatibility-schema\",\n      \"path\": \"spec/plugin/host-capability-compatibility-v1.schema.json\",\n      \"version\": \"host-capability-compatibility-v1\",\n      \"sha256\": \"361ebbf7009aeb66c763ecde46427b17b6cf7d2307c01886c5987a1f4f1762de\"\n    },\n    {\n      \"id\": \"host-capability-contract-schema\",\n      \"path\": \"spec/plugin/host-capability-contract-v1.schema.json\",\n      \"version\": \"host-capability-contract-v1\",\n      \"sha256\": \"0a653e36d44104f1d16b06ee424648086c146f23c907b176bdf470ae73025485\"\n    },\n    {\n      \"id\": \"host-capability-manifest-schema\",\n      \"path\": \"spec/plugin/host-capability-manifest-v1.schema.json\",\n      \"version\": \"host-capability-manifest-v1\",\n      \"sha256\": \"5f13a8e5f918378b9cba9fdc133a9a75ba3a8311c30cb6a02ca0aba09035110e\"\n    },\n    {\n      \"id\": \"host-capability-notices-schema\",\n      \"path\": \"spec/plugin/host-capability-notices-v1.schema.json\",\n      \"version\": \"host-capability-notices-v1\",\n      \"sha256\": \"6affd5d0ae90239f6fd08cbeddae4eef393efa2838c9e4935874ba3dc0e05948\"\n    },\n    {\n      \"id\": \"host-capability-pin-schema\",\n      \"path\": \"spec/plugin/host-capability-pin-v1.schema.json\",\n      \"version\": \"host-capability-pin-v1\",\n      \"sha256\": \"20526a5934f0d85a3db7882492487266f09de5bcd176e2c7936f05d0b7fe0338\"\n    },\n    {\n      \"id\": \"host-capability-signature-schema\",\n      \"path\": \"spec/plugin/host-capability-signature-v1.schema.json\",\n      \"version\": \"host-capability-signature-v1\",\n      \"sha256\": \"88cbc1d63afb7e289ca4f8b7c76f702b8d20156f7722c1b71f3ab9138a240a5e\"\n    },\n    {\n      \"id\": \"iframe-bridge-schema\",\n      \"path\": \"spec/plugin/bridge-v5.schema.json\",\n      \"version\": \"bridge-v5\",\n      \"sha256\": \"ad8ccc7e1900ecb871432f07296dd681ae6faea9377e52f5ddca90300c04f4da\"\n    },\n    {\n      \"id\": \"manifest-schema\",\n      \"path\": \"spec/plugin/manifest-v5.schema.json\",\n      \"version\": \"manifest-v5\",\n      \"sha256\": \"9695f6163aa539b9e3a933367c98850257c6d7bb8d61b36fd5f83b3ab61746f7\"\n    },\n    {\n      \"id\": \"network-grant-schema\",\n      \"path\": \"spec/plugin/network-grant-v2.schema.json\",\n      \"version\": \"network-grant-v2\",\n      \"sha256\": \"5fc1cfc3469a992e551fd392fab982abb6f95e456a1cb768ceca137f7c693abc\"\n    },\n    {\n      \"id\": \"opaque-surface-document-schema\",\n      \"path\": \"spec/plugin/opaque-surface-document-v3.schema.json\",\n      \"version\": \"opaque-surface-document-v3\",\n      \"sha256\": \"63419ff5b5a8890e14f97ca29aaae175b93daff61d4567c5bdff7f6e6a9e7450\"\n    },\n    {\n      \"id\": \"opaque-surface-transport-schema\",\n      \"path\": \"spec/plugin/opaque-surface-transport-v4.schema.json\",\n      \"version\": \"opaque-surface-transport-v4\",\n      \"sha256\": \"70a32dc8bf281cea2c92492c466fd477070c62156a3f593d45eb460cde62dca2\"\n    },\n    {\n      \"id\": \"owner-scope-inventory-registry\",\n      \"path\": \"spec/plugin/owner-scope-inventories-v1.json\",\n      \"version\": \"owner-scope-inventory-registry-v1\",\n      \"sha256\": \"92a2d6ed3a9038e95285faa108e2186cf9d0df343854741c551f8c4039f91217\"\n    },\n    {\n      \"id\": \"owner-scope-inventory-schema\",\n      \"path\": \"spec/plugin/owner-scope-inventory-v1.schema.json\",\n      \"version\": \"owner-scope-inventory-v1\",\n      \"sha256\": \"972e4fe3cc74339c211ba8a50951ad0f4ae4265d3d34b20f03d0e4888638e254\"\n    },\n    {\n      \"id\": \"owner-scope-migration-schema\",\n      \"path\": \"spec/plugin/owner-scope-migration-v1.schema.json\",\n      \"version\": \"owner-scope-migration-v1\",\n      \"sha256\": \"e73443813e19e4cfb05748eb75d5cf04f43db3bed9d2be0c893c13bda88a5993\"\n    },\n    {\n      \"id\": \"package-signature-schema\",\n      \"path\": \"spec/plugin/package-signature-v1.schema.json\",\n      \"version\": \"package-signature-v1\",\n      \"sha256\": \"13951c0f6831ba28647774368c76a817868aeb7984628e2cf3dc4ad1b54f8284\"\n    },\n    {\n      \"id\": \"performance-contract\",\n      \"path\": \"spec/plugin/performance-contract-v3.json\",\n      \"version\": \"performance-contract-v3\",\n      \"sha256\": \"a4e1a099dc16f2b0a4d6bdc5fdf8f6ce622948ffec40f70bfc2743286a2b816b\"\n    },\n    {\n      \"id\": \"performance-evidence-schema\",\n      \"path\": \"spec/plugin/performance-evidence-v3.schema.json\",\n      \"version\": \"performance-evidence-v3\",\n      \"sha256\": \"a2f5e94071bb09a9327fc55ad3f6c39052b01c3e54cceb8b974dc244667a0326\"\n    },\n    {\n      \"id\": \"platform-package-publication-schema\",\n      \"path\": \"spec/plugin/platform-package-publication-v1.schema.json\",\n      \"version\": \"platform-package-publication-v1\",\n      \"sha256\": \"20450b516c34d5a122020f4064ddfa03ffcb97ffea661e0868cd09760b3f08b0\"\n    },\n    {\n      \"id\": \"platform-package-set-schema\",\n      \"path\": \"spec/plugin/platform-package-set-v1.schema.json\",\n      \"version\": \"platform-package-set-v1\",\n      \"sha256\": \"4d9979f5205ec047895b64c995312c588d998bb1c1448f6c9c559f1b7ab0d796\"\n    },\n    {\n      \"id\": \"plugin-platform-openapi\",\n      \"path\": \"spec/openapi/plugin-platform-v8.yaml\",\n      \"version\": \"plugin-platform-v8\",\n      \"sha256\": \"290883ff79b74badbf9f6feddb4dfbef820a4ef4622a7e3fca815e3abb2c4eac\"\n    },\n    {\n      \"id\": \"process-containment-schema\",\n      \"path\": \"spec/plugin/process-containment-v1.schema.json\",\n      \"version\": \"process-containment-v1\",\n      \"sha256\": \"930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc\"\n    },\n    {\n      \"id\": \"quarantine-cleanup-schema\",\n      \"path\": \"spec/plugin/quarantine-cleanup-v1.schema.json\",\n      \"version\": \"quarantine-cleanup-v1\",\n      \"sha256\": \"0aced01a8d409953d5075a799ac273cae79e285ac82debe93ac4d8b706571ad1\"\n    },\n    {\n      \"id\": \"release-metadata-schema\",\n      \"path\": \"spec/plugin/release-metadata-v5.schema.json\",\n      \"version\": \"release-metadata-v5\",\n      \"sha256\": \"255ef3deb7d2758a43e69e533a08aa28106f8edc2e7385ab0aec0d50c1ef3d7a\"\n    },\n    {\n      \"id\": \"release-revocation-pointer-schema\",\n      \"path\": \"spec/plugin/release-revocation-pointer-v1.schema.json\",\n      \"version\": \"release-revocation-pointer-v1\",\n      \"sha256\": \"a9b7b64cb2dbf89500f0d191a6b2b9ab42eb806a452eb8338895a48ec7d7551e\"\n    },\n    {\n      \"id\": \"release-revocation-schema\",\n      \"path\": \"spec/plugin/release-revocation-v2.schema.json\",\n      \"version\": \"release-revocation-v2\",\n      \"sha256\": \"c3b40c05bc0dea422a272ee62ca45d0efb6456278b0707c5a12f39b004b84cb4\"\n    },\n    {\n      \"id\": \"release-root-delegation-schema\",\n      \"path\": \"spec/plugin/release-root-delegation-v1.schema.json\",\n      \"version\": \"release-root-delegation-v1\",\n      \"sha256\": \"c1adbb13eaeeca145d5ee787ff43777e60a5f329e460d20b8db358e4f5fc4825\"\n    },\n    {\n      \"id\": \"release-signature-envelope-schema\",\n      \"path\": \"spec/plugin/release-signature-envelope-v1.schema.json\",\n      \"version\": \"release-signature-envelope-v1\",\n      \"sha256\": \"7df9afd22bfdebfa89dc3bdb46ecdbe22a91ecce35fa46c492dd9795c66fae29\"\n    },\n    {\n      \"id\": \"release-signing-ledger-evidence-schema\",\n      \"path\": \"spec/plugin/release-signing-ledger-evidence-v1.schema.json\",\n      \"version\": \"release-signing-ledger-evidence-v1\",\n      \"sha256\": \"9ab8b7f65dedcd119d578debb4f6ff97fc35f4c7ac95c0e5435f8b0959bc1a5c\"\n    },\n    {\n      \"id\": \"release-signing-ledger-receipt-schema\",\n      \"path\": \"spec/plugin/release-signing-ledger-receipt-v1.schema.json\",\n      \"version\": \"release-signing-ledger-receipt-v1\",\n      \"sha256\": \"29210cfefd967017c5c74bcf8489bd50511c5c9f36d17b0200056ccb90c30561\"\n    },\n    {\n      \"id\": \"release-signing-ledger-schema\",\n      \"path\": \"spec/plugin/release-signing-ledger-v1.schema.json\",\n      \"version\": \"release-signing-ledger-v1\",\n      \"sha256\": \"0c72b30bfd6b857b9809e48e1b7eaaeb7134d5afd6a935aa8373465054403765\"\n    },\n    {\n      \"id\": \"release-signing-subject-schema\",\n      \"path\": \"spec/plugin/release-signing-subject-v1.schema.json\",\n      \"version\": \"release-signing-subject-v1\",\n      \"sha256\": \"876b1459824f90042bd141e96bfea4633333bdf2a227e15b6e25c72db1179c8e\"\n    },\n    {\n      \"id\": \"release-source-policy-pointer-schema\",\n      \"path\": \"spec/plugin/release-source-policy-pointer-v1.schema.json\",\n      \"version\": \"release-source-policy-pointer-v1\",\n      \"sha256\": \"1a78cc3897ffbcdb605d2e9265d765207a4647d3f53fa5736aec65bf5f54e81c\"\n    },\n    {\n      \"id\": \"release-source-policy-schema\",\n      \"path\": \"spec/plugin/release-source-policy-v2.schema.json\",\n      \"version\": \"release-source-policy-v2\",\n      \"sha256\": \"6a5a5eab317a86beea925a611ca8a7a2d937547c039ce147b5993f69a5611237\"\n    },\n    {\n      \"id\": \"release-trust-state-schema\",\n      \"path\": \"spec/plugin/release-trust-state-v1.schema.json\",\n      \"version\": \"release-trust-state-v1\",\n      \"sha256\": \"19ffa182932a22401a33ee4c9921e957c67895c2d8b041c9a27ee3530bdfb2d2\"\n    },\n    {\n      \"id\": \"resource-scope-schema\",\n      \"path\": \"spec/plugin/resource-scope-v1.schema.json\",\n      \"version\": \"resource-scope-v1\",\n      \"sha256\": \"e6021bd576c7220ad5536645a7ad8e57ee7aeb9901c31a89444fa6b695d8dc6f\"\n    },\n    {\n      \"id\": \"runtime-admission-schema\",\n      \"path\": \"spec/plugin/runtime-admission-v1.schema.json\",\n      \"version\": \"runtime-admission-v1\",\n      \"sha256\": \"bee7b149876447d663a4099dbd71e71fa97f8ff80ddf4e12cbfba951a47c4beb\"\n    },\n    {\n      \"id\": \"runtime-descriptor-schema\",\n      \"path\": \"spec/plugin/runtime-descriptor-v2.schema.json\",\n      \"version\": \"runtime-descriptor-v2\",\n      \"sha256\": \"2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351\"\n    },\n    {\n      \"id\": \"runtime-exec-journal-schema\",\n      \"path\": \"spec/plugin/runtime-exec-journal-v1.schema.json\",\n      \"version\": \"runtime-exec-journal-v1\",\n      \"sha256\": \"2bddbba383843b8ebc1554009909f0bb25e98616be763826a697cb0f408870d2\"\n    },\n    {\n      \"id\": \"rust-ipc-schema\",\n      \"path\": \"spec/plugin/ipc-v6.schema.json\",\n      \"version\": \"rust-ipc-v6\",\n      \"sha256\": \"9814ca091ac2e4e8435c1ab553e248e9d2e792de93ce9fd27bd030486774837f\"\n    },\n    {\n      \"id\": \"session-scope-schema\",\n      \"path\": \"spec/plugin/session-scope-v1.schema.json\",\n      \"version\": \"session-scope-v1\",\n      \"sha256\": \"3df0084264f0aff9fe2261c237cea439adb5cdc2534bfaaa0488d5992d4a7d2e\"\n    },\n    {\n      \"id\": \"target-classifier-fixture\",\n      \"path\": \"spec/plugin/target-classifier-v2.json\",\n      \"version\": \"target-classifier-v2\",\n      \"sha256\": \"ae7336cce77a2e820f96f1cc309b93f8442c932dcebec25e3890d31cd098e2d1\"\n    },\n    {\n      \"id\": \"token-ticket-schema\",\n      \"path\": \"spec/plugin/token-ticket-v4.schema.json\",\n      \"version\": \"token-ticket-v4\",\n      \"sha256\": \"5cf365b5b52a331ac0d3ad35a98be3c2ce668804ae88fdeaf9679a44db14feb1\"\n    },\n    {\n      \"id\": \"trusted-time-evidence-schema\",\n      \"path\": \"spec/plugin/trusted-time-evidence-v1.schema.json\",\n      \"version\": \"trusted-time-evidence-v1\",\n      \"sha256\": \"4398cbd2a3eea42a85008ee16a69d7adb265673e6749b1f13a4f1610f36e5e38\"\n    },\n    {\n      \"id\": \"trusted-time-leaf-schema\",\n      \"path\": \"spec/plugin/trusted-time-leaf-v1.schema.json\",\n      \"version\": \"trusted-time-leaf-v1\",\n      \"sha256\": \"1c25eb0040800eef145aa2bb4c0e1ae197ae584d365e9595ab89037e26fe5ddb\"\n    },\n    {\n      \"id\": \"wasm-worker-schema\",\n      \"path\": \"spec/plugin/wasm-worker-v2.schema.json\",\n      \"version\": \"redevplugin-wasm-worker-v2\",\n      \"sha256\": \"00bf123f3a9ed932de4b71c180e2a5c34af0f82050defb271fedec42cf217902\"\n    },\n    {\n      \"id\": \"worker-invocation-schema\",\n      \"path\": \"spec/plugin/worker-invocation-v3.schema.json\",\n      \"version\": \"worker-invocation-v3\",\n      \"sha256\": \"f08af491cbf5e7b71d1aeafbeac9ae581ee5fc3bcb76184daec369f94bab3927\"\n    }\n  ]\n}\n".as_bytes();
150static CONTRACT_BODY_CONTRACT_REGISTRY_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/contract-registry-v2.schema.json\",\n  \"title\": \"ReDevPlugin Contract Registry V2\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"registry_version\", \"artifacts\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.contract_registry.v2\"},\n    \"registry_version\": {\"const\": \"contract-registry-v2\"},\n    \"artifacts\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 256,\n      \"uniqueItems\": true,\n      \"items\": {\"$ref\": \"#/$defs/artifact\"}\n    }\n  },\n  \"$defs\": {\n    \"artifact\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"id\", \"path\", \"version\", \"sha256\"],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"minLength\": 1,\n          \"maxLength\": 128,\n          \"pattern\": \"^[a-z][a-z0-9-]+$\",\n          \"not\": {\"const\": \"contract-registry\"}\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"minLength\": 1,\n          \"maxLength\": 1024,\n          \"pattern\": \"^spec/(openapi|plugin)/[A-Za-z0-9][A-Za-z0-9._-]*(/[A-Za-z0-9][A-Za-z0-9._-]*)*$\",\n          \"not\": {\"enum\": [\"spec/plugin/contract-registry-v2.json\", \"spec/plugin/platform-package-set-v1.json\"]}\n        },\n        \"version\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128, \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\"},\n        \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n      }\n    }\n  }\n}\n".as_bytes();
151static CONTRACT_BODY_ERROR_CODES_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/error-codes-v6.schema.json\",\n  \"title\": \"ReDevPlugin stable error codes v6\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"$defs\": {\n    \"platform_error_code\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"PLUGIN_INVALID_REQUEST\",\n        \"PLUGIN_MANIFEST_INVALID\",\n        \"PLUGIN_PACKAGE_INVALID\",\n        \"PLUGIN_PACKAGE_TOO_LARGE\",\n        \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n        \"PLUGIN_SIGNATURE_INVALID\",\n        \"PLUGIN_TRUST_STATE_DENIED\",\n        \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n        \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n        \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n        \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n        \"PLUGIN_DISABLED\",\n        \"PLUGIN_DISABLED_BY_POLICY\",\n        \"PLUGIN_PERMISSION_DENIED\",\n        \"PLUGIN_ORIGIN_DENIED\",\n        \"PLUGIN_ACTION_DENIED\",\n        \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n        \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n        \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n        \"PLUGIN_ADAPTER_FAILURE\",\n        \"PLUGIN_SESSION_REVOKED\",\n        \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n        \"PLUGIN_SESSION_FENCE_CAPACITY\",\n        \"PLUGIN_CONFIRMATION_REQUIRED\",\n        \"PLUGIN_CONFIRMATION_INVALID\",\n        \"PLUGIN_TOKEN_EXPIRED\",\n        \"PLUGIN_TOKEN_REPLAY\",\n        \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n        \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n        \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n        \"PLUGIN_ASSET_TICKET_INVALID\",\n        \"PLUGIN_ASSET_SESSION_INVALID\",\n        \"PLUGIN_STREAM_TICKET_INVALID\",\n        \"PLUGIN_STREAM_DELIVERY_INVALID\",\n        \"PLUGIN_STREAM_CANCELLED\",\n        \"PLUGIN_LEASE_INVALID\",\n        \"PLUGIN_LEASE_REPLAYED\",\n        \"PLUGIN_GRANT_INVALID\",\n        \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n        \"PLUGIN_OPERATION_BLOCKED\",\n        \"PLUGIN_OPERATION_NOT_FOUND\",\n        \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n        \"PLUGIN_NETWORK_TARGET_DENIED\",\n        \"PLUGIN_NETWORK_RATE_LIMITED\",\n        \"PLUGIN_RUNTIME_UNAVAILABLE\",\n        \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n        \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n        \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n        \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n        \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n        \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n        \"PLUGIN_CAPABILITY_ERROR\",\n        \"PLUGIN_WORKER_ERROR\",\n        \"PLUGIN_CONTRACT_MISMATCH\",\n        \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n        \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n        \"PLUGIN_BINDING_REVISION_MISMATCH\",\n        \"PLUGIN_VALUES_REVISION_MISMATCH\",\n        \"PLUGIN_CSRF_REQUIRED\",\n        \"PLUGIN_CSRF_INVALID\",\n        \"PLUGIN_FEATURE_NOT_CONFIGURED\"\n      ]\n    },\n    \"bridge_error_code\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"PLUGIN_INVALID_REQUEST\",\n        \"PLUGIN_MANIFEST_INVALID\",\n        \"PLUGIN_PACKAGE_INVALID\",\n        \"PLUGIN_PACKAGE_TOO_LARGE\",\n        \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n        \"PLUGIN_SIGNATURE_INVALID\",\n        \"PLUGIN_TRUST_STATE_DENIED\",\n        \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n        \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n        \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n        \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n        \"PLUGIN_DISABLED\",\n        \"PLUGIN_DISABLED_BY_POLICY\",\n        \"PLUGIN_PERMISSION_DENIED\",\n        \"PLUGIN_ORIGIN_DENIED\",\n        \"PLUGIN_ACTION_DENIED\",\n        \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n        \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n        \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n        \"PLUGIN_ADAPTER_FAILURE\",\n        \"PLUGIN_SESSION_REVOKED\",\n        \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n        \"PLUGIN_SESSION_FENCE_CAPACITY\",\n        \"PLUGIN_CONFIRMATION_REQUIRED\",\n        \"PLUGIN_CONFIRMATION_INVALID\",\n        \"PLUGIN_TOKEN_EXPIRED\",\n        \"PLUGIN_TOKEN_REPLAY\",\n        \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n        \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n        \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n        \"PLUGIN_ASSET_TICKET_INVALID\",\n        \"PLUGIN_ASSET_SESSION_INVALID\",\n        \"PLUGIN_STREAM_TICKET_INVALID\",\n        \"PLUGIN_STREAM_DELIVERY_INVALID\",\n        \"PLUGIN_STREAM_CANCELLED\",\n        \"PLUGIN_LEASE_INVALID\",\n        \"PLUGIN_LEASE_REPLAYED\",\n        \"PLUGIN_GRANT_INVALID\",\n        \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n        \"PLUGIN_OPERATION_BLOCKED\",\n        \"PLUGIN_OPERATION_NOT_FOUND\",\n        \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n        \"PLUGIN_NETWORK_TARGET_DENIED\",\n        \"PLUGIN_NETWORK_RATE_LIMITED\",\n        \"PLUGIN_RUNTIME_UNAVAILABLE\",\n        \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n        \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n        \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n        \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n        \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n        \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n        \"PLUGIN_CAPABILITY_ERROR\",\n        \"PLUGIN_WORKER_ERROR\",\n        \"PLUGIN_CONTRACT_MISMATCH\",\n        \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n        \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n        \"PLUGIN_BINDING_REVISION_MISMATCH\",\n        \"PLUGIN_VALUES_REVISION_MISMATCH\",\n        \"PLUGIN_CSRF_REQUIRED\",\n        \"PLUGIN_CSRF_INVALID\",\n        \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n        \"PLUGIN_CONFIRMATION_REJECTED\",\n        \"PLUGIN_BRIDGE_CANCELLED\",\n        \"PLUGIN_BRIDGE_TIMEOUT\",\n        \"PLUGIN_BRIDGE_DISPOSED\",\n        \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n        \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\"\n      ]\n    },\n    \"typescript_client_error_code\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"PLUGIN_INVALID_REQUEST\",\n        \"PLUGIN_MANIFEST_INVALID\",\n        \"PLUGIN_PACKAGE_INVALID\",\n        \"PLUGIN_PACKAGE_TOO_LARGE\",\n        \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n        \"PLUGIN_SIGNATURE_INVALID\",\n        \"PLUGIN_TRUST_STATE_DENIED\",\n        \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n        \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n        \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n        \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n        \"PLUGIN_DISABLED\",\n        \"PLUGIN_DISABLED_BY_POLICY\",\n        \"PLUGIN_PERMISSION_DENIED\",\n        \"PLUGIN_ORIGIN_DENIED\",\n        \"PLUGIN_ACTION_DENIED\",\n        \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n        \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n        \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n        \"PLUGIN_ADAPTER_FAILURE\",\n        \"PLUGIN_SESSION_REVOKED\",\n        \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n        \"PLUGIN_SESSION_FENCE_CAPACITY\",\n        \"PLUGIN_CONFIRMATION_REQUIRED\",\n        \"PLUGIN_CONFIRMATION_INVALID\",\n        \"PLUGIN_TOKEN_EXPIRED\",\n        \"PLUGIN_TOKEN_REPLAY\",\n        \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n        \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n        \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n        \"PLUGIN_ASSET_TICKET_INVALID\",\n        \"PLUGIN_ASSET_SESSION_INVALID\",\n        \"PLUGIN_STREAM_TICKET_INVALID\",\n        \"PLUGIN_STREAM_DELIVERY_INVALID\",\n        \"PLUGIN_STREAM_CANCELLED\",\n        \"PLUGIN_LEASE_INVALID\",\n        \"PLUGIN_LEASE_REPLAYED\",\n        \"PLUGIN_GRANT_INVALID\",\n        \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n        \"PLUGIN_OPERATION_BLOCKED\",\n        \"PLUGIN_OPERATION_NOT_FOUND\",\n        \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n        \"PLUGIN_NETWORK_TARGET_DENIED\",\n        \"PLUGIN_NETWORK_RATE_LIMITED\",\n        \"PLUGIN_RUNTIME_UNAVAILABLE\",\n        \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n        \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n        \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n        \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n        \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n        \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n        \"PLUGIN_CAPABILITY_ERROR\",\n        \"PLUGIN_WORKER_ERROR\",\n        \"PLUGIN_CONTRACT_MISMATCH\",\n        \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n        \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n        \"PLUGIN_BINDING_REVISION_MISMATCH\",\n        \"PLUGIN_VALUES_REVISION_MISMATCH\",\n        \"PLUGIN_CSRF_REQUIRED\",\n        \"PLUGIN_CSRF_INVALID\",\n        \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n        \"PLUGIN_CONFIRMATION_REJECTED\",\n        \"PLUGIN_BRIDGE_CANCELLED\",\n        \"PLUGIN_BRIDGE_TIMEOUT\",\n        \"PLUGIN_BRIDGE_DISPOSED\",\n        \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n        \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\",\n        \"PLUGIN_PLATFORM_REQUEST_FAILED\",\n        \"PLUGIN_STREAM_FAILED\"\n      ]\n    },\n    \"rust_ipc_error_code\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"ARTIFACT_HANDLE_FAILED\",\n        \"HANDLE_GRANT_VALIDATION_FAILED\",\n        \"STORAGE_FILE_FAILED\",\n        \"STORAGE_KV_FAILED\",\n        \"STORAGE_SQLITE_FAILED\",\n        \"NETWORK_GRANT_FAILED\",\n        \"NETWORK_EXECUTE_FAILED\",\n        \"NETWORK_STREAM_STORE_UNAVAILABLE\",\n        \"NETWORK_STREAM_FAILED\",\n        \"NETWORK_STREAM_BACKPRESSURE\",\n        \"NETWORK_STREAM_INVALID\",\n        \"NETWORK_STREAM_NOT_FOUND\",\n        \"NETWORK_STREAM_CLOSED\",\n        \"WORKER_INVOCATION_INVALID\",\n        \"RUNTIME_CAPABILITY_REVOKED\",\n        \"RUNTIME_CONTROL_CHANNEL_STALE\",\n        \"RUNTIME_LEASE_INVALID\",\n        \"RUNTIME_LEASE_SIGNATURE_INVALID\",\n        \"PLUGIN_LEASE_REPLAYED\",\n        \"WASM_WORKER_INVALID\",\n        \"WASM_WORKER_FAILED\",\n        \"WASM_HOSTCALL_FAILED\",\n        \"RUNTIME_CAPACITY_EXCEEDED\",\n        \"RUNTIME_INVOCATION_CANCELED\",\n        \"PLUGIN_SESSION_REVOKED\",\n        \"SESSION_REVOKE_SEQUENCE_STALE\",\n        \"SESSION_REVOKE_DRAIN_TIMEOUT\",\n        \"UNSUPPORTED_FRAME\"\n      ]\n    },\n    \"runtime_process_failure_code\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"RUNTIME_PROCESS_FAILED\",\n        \"RUNTIME_PROCESS_EXIT_UNEXPECTED\",\n        \"RUNTIME_PROCESS_EXIT_UNRECOGNIZED\",\n        \"RUNTIME_PROCESS_SIGNALLED\",\n        \"IPC_WRITER_CAPACITY_OVERFLOW\",\n        \"IPC_WRITER_CAPACITY_LIMIT_EXCEEDED\",\n        \"IPC_WRITER_START_FAILED\",\n        \"IPC_WRITER_CLOSED\",\n        \"IPC_WRITER_BATCH_SIZE_OVERFLOW\",\n        \"IPC_WRITER_WRITE_FAILED\",\n        \"IPC_WRITER_FLUSH_FAILED\",\n        \"IPC_WRITER_PANICKED\"\n      ]\n    },\n    \"runtime_process_exit_failure\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 1 },\n            \"code\": { \"const\": \"RUNTIME_PROCESS_FAILED\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 80 },\n            \"code\": { \"const\": \"IPC_WRITER_CAPACITY_OVERFLOW\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 81 },\n            \"code\": { \"const\": \"IPC_WRITER_CAPACITY_LIMIT_EXCEEDED\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 82 },\n            \"code\": { \"const\": \"IPC_WRITER_START_FAILED\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 83 },\n            \"code\": { \"const\": \"IPC_WRITER_CLOSED\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 84 },\n            \"code\": { \"const\": \"IPC_WRITER_BATCH_SIZE_OVERFLOW\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 85 },\n            \"code\": { \"const\": \"IPC_WRITER_WRITE_FAILED\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 86 },\n            \"code\": { \"const\": \"IPC_WRITER_FLUSH_FAILED\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"exit_code\", \"code\"],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"exit_code\": { \"const\": 87 },\n            \"code\": { \"const\": \"IPC_WRITER_PANICKED\" }\n          }\n        }\n      ]\n    }\n  }\n}\n".as_bytes();
152static CONTRACT_BODY_HOST_CAPABILITY_COMPATIBILITY_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/host-capability-compatibility-v1.schema.json\",\n  \"title\": \"ReDevPlugin host capability compatibility v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"contract_id\",\n    \"contract_version\",\n    \"capability_id\",\n    \"capability_version\",\n    \"min_redevplugin_version\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.host_capability_compatibility.v1\" },\n    \"contract_id\": { \"$ref\": \"#/$defs/id\" },\n    \"contract_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"capability_id\": { \"$ref\": \"#/$defs/id\" },\n    \"capability_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"min_redevplugin_version\": { \"$ref\": \"#/$defs/semver\" }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\" },\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    }\n  }\n}\n".as_bytes();
153static CONTRACT_BODY_HOST_CAPABILITY_CONTRACT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/host-capability-contract-v1.schema.json\",\n  \"title\": \"ReDevPlugin host capability contract v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"contract_id\",\n    \"contract_version\",\n    \"publisher_id\",\n    \"capability_id\",\n    \"capability_version\",\n    \"client_name\",\n    \"methods\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.host_capability_contract.v1\" },\n    \"contract_id\": { \"$ref\": \"#/$defs/id\" },\n    \"contract_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"publisher_id\": { \"$ref\": \"#/$defs/id\" },\n    \"capability_id\": { \"$ref\": \"#/$defs/id\" },\n    \"capability_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"client_name\": { \"$ref\": \"#/$defs/typescript_declaration_identifier\" },\n    \"methods\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": { \"$ref\": \"#/$defs/method\" }\n    },\n    \"errors\": {\n      \"type\": \"array\",\n      \"items\": { \"$ref\": \"#/$defs/business_error\" }\n    }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\" },\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"typescript_declaration_identifier\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z_$][A-Za-z0-9_$]*$\",\n      \"not\": {\n        \"enum\": [\n          \"PluginBridgeClient\", \"PluginBridgeError\", \"PluginBridgeRequestOptions\", \"PluginOperation\", \"PluginStream\",\n          \"abstract\", \"accessor\", \"any\", \"as\", \"assert\", \"asserts\", \"async\", \"await\", \"bigint\", \"boolean\",\n          \"break\", \"case\", \"catch\", \"class\", \"const\", \"continue\", \"debugger\", \"declare\", \"default\", \"delete\",\n          \"do\", \"else\", \"enum\", \"export\", \"extends\", \"false\", \"finally\", \"for\", \"from\", \"function\", \"get\",\n          \"if\", \"implements\", \"import\", \"in\", \"infer\", \"instanceof\", \"interface\", \"intrinsic\", \"is\", \"keyof\",\n          \"let\", \"module\", \"namespace\", \"never\", \"new\", \"null\", \"number\", \"object\", \"of\", \"out\", \"override\",\n          \"package\", \"private\", \"protected\", \"public\", \"readonly\", \"require\", \"return\", \"satisfies\", \"set\", \"static\",\n          \"string\", \"super\", \"switch\", \"symbol\", \"this\", \"throw\", \"true\", \"try\", \"type\", \"typeof\", \"undefined\",\n          \"unique\", \"unknown\", \"using\", \"var\", \"void\", \"while\", \"with\", \"yield\",\n          \"callCapabilityOperation\", \"callCapabilityStream\", \"callCapabilitySync\", \"decodePluginStreamText\",\n          \"isCapabilityBusinessError\"\n        ]\n      }\n    },\n    \"typescript_member_identifier\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z_$][A-Za-z0-9_$]*$\",\n      \"not\": { \"const\": \"constructor\" }\n    },\n    \"string_set\": {\n      \"type\": \"array\",\n      \"uniqueItems\": true,\n      \"items\": { \"type\": \"string\", \"minLength\": 1, \"pattern\": \"^\\\\S+$\" }\n    },\n    \"method\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"name\",\n        \"client_method\",\n        \"effect\",\n        \"execution\",\n        \"target_fields\",\n        \"target_schema\",\n        \"request_type_name\",\n        \"response_type_name\",\n        \"request_schema\",\n        \"response_schema\",\n        \"quota\"\n      ],\n      \"properties\": {\n        \"name\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9]*(\\\\.[a-z][a-z0-9_]*)+$\" },\n        \"client_method\": { \"$ref\": \"#/$defs/typescript_member_identifier\" },\n        \"effect\": { \"enum\": [\"read\", \"write\", \"execute\", \"delete\", \"admin\"] },\n        \"execution\": { \"enum\": [\"sync\", \"operation\", \"subscription\"] },\n        \"preflight_only\": { \"type\": \"boolean\" },\n        \"required_permissions\": { \"$ref\": \"#/$defs/string_set\" },\n        \"target_fields\": { \"$ref\": \"#/$defs/string_set\" },\n        \"target_schema\": { \"$ref\": \"#/$defs/object_value_schema\" },\n        \"request_type_name\": { \"$ref\": \"#/$defs/typescript_declaration_identifier\" },\n        \"response_type_name\": { \"$ref\": \"#/$defs/typescript_declaration_identifier\" },\n        \"request_schema\": { \"$ref\": \"#/$defs/object_value_schema\" },\n        \"response_schema\": { \"$ref\": \"#/$defs/restricted_schema\" },\n        \"event_type_name\": { \"$ref\": \"#/$defs/typescript_declaration_identifier\" },\n        \"event_schema\": { \"$ref\": \"#/$defs/restricted_schema\" },\n        \"confirmation\": { \"$ref\": \"#/$defs/confirmation\" },\n        \"cancel_policy\": { \"$ref\": \"#/$defs/cancel_policy\" },\n        \"quota\": { \"$ref\": \"#/$defs/quota\" }\n      },\n      \"allOf\": [\n        {\n          \"if\": { \"properties\": { \"execution\": { \"const\": \"subscription\" } }, \"required\": [\"execution\"] },\n          \"then\": { \"required\": [\"event_type_name\", \"event_schema\", \"cancel_policy\"] }\n        },\n        {\n          \"if\": { \"properties\": { \"execution\": { \"const\": \"operation\" } }, \"required\": [\"execution\"] },\n          \"then\": { \"required\": [\"cancel_policy\"] }\n        },\n        {\n          \"if\": { \"properties\": { \"execution\": { \"const\": \"sync\" } }, \"required\": [\"execution\"] },\n          \"then\": {\n            \"not\": {\n              \"anyOf\": [\n                { \"required\": [\"event_type_name\"] },\n                { \"required\": [\"event_schema\"] },\n                { \"required\": [\"cancel_policy\"] }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"confirmation\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"mode\"],\n      \"properties\": {\n        \"mode\": { \"enum\": [\"required\", \"risk_based\"] },\n        \"preflight_method\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9]*(\\\\.[a-z][a-z0-9_]*)+$\" },\n        \"request_hash_fields\": { \"$ref\": \"#/$defs/string_set\" },\n        \"plan_hash_required\": { \"type\": \"boolean\" }\n      }\n    },\n    \"cancel_policy\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"cancelable\", \"disable_behavior\", \"uninstall_behavior\"],\n      \"properties\": {\n        \"cancelable\": { \"type\": \"boolean\" },\n        \"disable_behavior\": { \"enum\": [\"cancel\", \"orphan\", \"wait\"] },\n        \"uninstall_behavior\": { \"enum\": [\"cancel_then_block_delete\", \"force_cleanup_allowed\"] },\n        \"ack_timeout_ms\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"quota\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"max_concurrent\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_duration_ms\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_stream_bytes\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"business_error\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"code\", \"message\"],\n      \"properties\": {\n        \"code\": { \"type\": \"string\", \"pattern\": \"^[A-Z][A-Z0-9_]*$\" },\n        \"message\": { \"type\": \"string\", \"minLength\": 1 },\n        \"details_schema\": { \"$ref\": \"#/$defs/object_value_schema\" }\n      }\n    },\n    \"restricted_schema\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/object_schema\" },\n        { \"$ref\": \"#/$defs/array_schema\" },\n        { \"$ref\": \"#/$defs/string_schema\" },\n        { \"$ref\": \"#/$defs/integer_schema\" },\n        { \"$ref\": \"#/$defs/number_schema\" },\n        { \"$ref\": \"#/$defs/boolean_schema\" },\n        { \"$ref\": \"#/$defs/null_schema\" },\n        { \"$ref\": \"#/$defs/one_of_schema\" }\n      ]\n    },\n    \"object_value_schema\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/object_schema\" },\n        { \"$ref\": \"#/$defs/object_one_of_schema\" }\n      ]\n    },\n    \"object_one_of_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"oneOf\"],\n      \"properties\": {\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"oneOf\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 8,\n          \"items\": { \"$ref\": \"#/$defs/object_value_schema\" }\n        }\n      }\n    },\n    \"object_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"additionalProperties\"],\n      \"properties\": {\n        \"type\": { \"const\": \"object\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"properties\": {\n          \"type\": \"object\",\n          \"propertyNames\": { \"not\": { \"enum\": [\"__proto__\", \"constructor\", \"prototype\"] } },\n          \"additionalProperties\": { \"$ref\": \"#/$defs/restricted_schema\" }\n        },\n        \"required\": { \"$ref\": \"#/$defs/string_set\" },\n        \"additionalProperties\": { \"const\": false },\n        \"minProperties\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"maxProperties\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"array_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"items\"],\n      \"properties\": {\n        \"type\": { \"const\": \"array\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"items\": { \"$ref\": \"#/$defs/restricted_schema\" },\n        \"minItems\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"maxItems\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"uniqueItems\": { \"type\": \"boolean\" }\n      }\n    },\n    \"string_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": {\n        \"type\": { \"const\": \"string\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"enum\": { \"type\": \"array\", \"minItems\": 1, \"uniqueItems\": true, \"items\": { \"type\": \"string\" } },\n        \"const\": { \"type\": \"string\" },\n        \"minLength\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"maxLength\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"pattern\": { \"type\": \"string\" },\n        \"format\": { \"enum\": [\"date-time\", \"uuid\", \"hostname\", \"ipv4\", \"ipv6\"] }\n      }\n    },\n    \"integer_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": {\n        \"type\": { \"const\": \"integer\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"enum\": { \"type\": \"array\", \"minItems\": 1, \"uniqueItems\": true, \"items\": { \"type\": \"integer\" } },\n        \"const\": { \"type\": \"integer\" },\n        \"minimum\": { \"type\": \"integer\" },\n        \"maximum\": { \"type\": \"integer\" },\n        \"exclusiveMinimum\": { \"type\": \"integer\" },\n        \"exclusiveMaximum\": { \"type\": \"integer\" },\n        \"multipleOf\": { \"type\": \"integer\", \"exclusiveMinimum\": 0 }\n      }\n    },\n    \"number_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": {\n        \"type\": { \"const\": \"number\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"enum\": { \"type\": \"array\", \"minItems\": 1, \"uniqueItems\": true, \"items\": { \"type\": \"number\" } },\n        \"const\": { \"type\": \"number\" },\n        \"minimum\": { \"type\": \"number\" },\n        \"maximum\": { \"type\": \"number\" },\n        \"exclusiveMinimum\": { \"type\": \"number\" },\n        \"exclusiveMaximum\": { \"type\": \"number\" },\n        \"multipleOf\": { \"type\": \"number\", \"exclusiveMinimum\": 0 }\n      }\n    },\n    \"boolean_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": {\n        \"type\": { \"const\": \"boolean\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"const\": { \"type\": \"boolean\" }\n      }\n    },\n    \"null_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": {\n        \"type\": { \"const\": \"null\" },\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"const\": { \"type\": \"null\" }\n      }\n    },\n    \"one_of_schema\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"oneOf\"],\n      \"properties\": {\n        \"title\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"oneOf\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 8,\n          \"items\": { \"$ref\": \"#/$defs/restricted_schema\" }\n        }\n      }\n    }\n  }\n}\n".as_bytes();
154static CONTRACT_BODY_HOST_CAPABILITY_MANIFEST_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/host-capability-manifest-v1.schema.json\",\n  \"title\": \"ReDevPlugin host capability artifact manifest v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"publisher_id\",\n    \"contract_id\",\n    \"contract_version\",\n    \"capability_id\",\n    \"capability_version\",\n    \"generated_at\",\n    \"source_commit\",\n    \"signature_algorithm\",\n    \"signature_key_id\",\n    \"signature_policy_epoch\",\n    \"signature_revocation_epoch\",\n    \"entries\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.host_capability_manifest.v1\" },\n    \"publisher_id\": { \"$ref\": \"#/$defs/id\" },\n    \"contract_id\": { \"$ref\": \"#/$defs/id\" },\n    \"contract_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"capability_id\": { \"$ref\": \"#/$defs/id\" },\n    \"capability_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"generated_at\": { \"type\": \"string\", \"format\": \"date-time\" },\n    \"source_commit\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{40}$\" },\n    \"signature_algorithm\": { \"const\": \"ed25519\" },\n    \"signature_key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature_policy_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" },\n    \"signature_revocation_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" },\n    \"entries\": {\n      \"type\": \"array\",\n      \"minItems\": 4,\n      \"maxItems\": 4,\n      \"items\": { \"$ref\": \"#/$defs/entry\" },\n      \"allOf\": [\n        { \"contains\": { \"properties\": { \"role\": { \"const\": \"contract\" } }, \"required\": [\"role\"] }, \"minContains\": 1, \"maxContains\": 1 },\n        { \"contains\": { \"properties\": { \"role\": { \"const\": \"compatibility\" } }, \"required\": [\"role\"] }, \"minContains\": 1, \"maxContains\": 1 },\n        { \"contains\": { \"properties\": { \"role\": { \"const\": \"generated_client\" } }, \"required\": [\"role\"] }, \"minContains\": 1, \"maxContains\": 1 },\n        { \"contains\": { \"properties\": { \"role\": { \"const\": \"notices\" } }, \"required\": [\"role\"] }, \"minContains\": 1, \"maxContains\": 1 }\n      ]\n    }\n  },\n  \"$defs\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\"\n    },\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"artifact_ref\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1024,\n      \"pattern\": \"^[A-Za-z0-9._~-]+(?:/[A-Za-z0-9._~-]+)*$\",\n      \"not\": { \"pattern\": \"(^|/)\\\\.{1,2}($|/)\" }\n    },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"decimal_epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)$\" },\n    \"entry\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"role\", \"ref\", \"media_type\", \"sha256\", \"size\"],\n      \"properties\": {\n        \"role\": { \"enum\": [\"contract\", \"compatibility\", \"generated_client\", \"notices\"] },\n        \"ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n        \"media_type\": { \"enum\": [\"application/schema+json\", \"application/json\", \"text/typescript\"] },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"size\": { \"type\": \"integer\", \"minimum\": 0 }\n      },\n      \"allOf\": [\n        {\n          \"if\": { \"properties\": { \"role\": { \"const\": \"contract\" } }, \"required\": [\"role\"] },\n          \"then\": { \"properties\": { \"media_type\": { \"const\": \"application/schema+json\" } } }\n        },\n        {\n          \"if\": { \"properties\": { \"role\": { \"enum\": [\"compatibility\", \"notices\"] } }, \"required\": [\"role\"] },\n          \"then\": { \"properties\": { \"media_type\": { \"const\": \"application/json\" } } }\n        },\n        {\n          \"if\": { \"properties\": { \"role\": { \"const\": \"generated_client\" } }, \"required\": [\"role\"] },\n          \"then\": { \"properties\": { \"media_type\": { \"const\": \"text/typescript\" } } }\n        }\n      ]\n    }\n  }\n}\n".as_bytes();
155static CONTRACT_BODY_HOST_CAPABILITY_NOTICES_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/host-capability-notices-v1.schema.json\",\n  \"title\": \"ReDevPlugin host capability third-party notices v1\",\n  \"type\": \"array\",\n  \"uniqueItems\": true,\n  \"items\": {\n    \"type\": \"object\",\n    \"additionalProperties\": false,\n    \"required\": [\"name\", \"version\", \"license\"],\n    \"properties\": {\n      \"name\": { \"type\": \"string\", \"minLength\": 1 },\n      \"version\": { \"type\": \"string\", \"minLength\": 1 },\n      \"license\": { \"type\": \"string\", \"minLength\": 1 },\n      \"source_url\": { \"type\": \"string\", \"format\": \"uri\" }\n    }\n  }\n}\n".as_bytes();
156static CONTRACT_BODY_HOST_CAPABILITY_PIN_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/host-capability-pin-v1.schema.json\",\n  \"title\": \"ReDevPlugin host capability artifact pin v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"publisher_id\",\n    \"contract_id\",\n    \"contract_version\",\n    \"artifact_ref\",\n    \"artifact_sha256\",\n    \"manifest_ref\",\n    \"manifest_sha256\",\n    \"signature_ref\",\n    \"signature_sha256\",\n    \"signature_key_id\",\n    \"signature_policy_epoch\",\n    \"signature_revocation_epoch\",\n    \"compatibility_ref\",\n    \"compatibility_sha256\",\n    \"generated_client_ref\",\n    \"generated_client_sha256\",\n    \"notices_ref\",\n    \"notices_sha256\"\n  ],\n  \"properties\": {\n    \"publisher_id\": { \"$ref\": \"#/$defs/id\" },\n    \"contract_id\": { \"$ref\": \"#/$defs/id\" },\n    \"contract_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"artifact_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"artifact_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"manifest_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"manifest_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signature_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"signature_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signature_key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature_policy_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" },\n    \"signature_revocation_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" },\n    \"compatibility_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"compatibility_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"generated_client_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"generated_client_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"notices_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"notices_sha256\": { \"$ref\": \"#/$defs/sha256\" }\n  },\n  \"$defs\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\"\n    },\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"artifact_ref\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1024,\n      \"pattern\": \"^[A-Za-z0-9._~-]+(?:/[A-Za-z0-9._~-]+)*$\",\n      \"not\": { \"pattern\": \"(^|/)\\\\.{1,2}($|/)\" }\n    },\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[0-9a-f]{64}$\"\n    },\n    \"decimal_epoch\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)$\"\n    }\n  }\n}\n".as_bytes();
157static CONTRACT_BODY_HOST_CAPABILITY_SIGNATURE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/host-capability-signature-v1.schema.json\",\n  \"title\": \"ReDevPlugin host capability signature v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"algorithm\", \"key_id\", \"manifest_sha256\", \"signature_base64\"],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.host_capability_signature.v1\" },\n    \"algorithm\": { \"const\": \"ed25519\" },\n    \"key_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\" },\n    \"manifest_sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"signature_base64\": {\n      \"type\": \"string\",\n      \"minLength\": 88,\n      \"maxLength\": 88,\n      \"pattern\": \"^[A-Za-z0-9+/]{86}==$\",\n      \"contentEncoding\": \"base64\"\n    }\n  }\n}\n".as_bytes();
158static CONTRACT_BODY_IFRAME_BRIDGE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/bridge-v5.schema.json\",\n  \"title\": \"ReDevPlugin plugin worker bridge v5\",\n  \"description\": \"Plugin-visible MessagePort contract. Plugin identity, owner/session bindings, gateway tokens, asset sessions, stream tickets, and confirmation tokens remain in the trusted parent and are intentionally absent from worker-visible messages.\",\n  \"x-redevplugin-render-policy\": {\n    \"max_message_bytes\": 524288,\n    \"max_in_flight_requests\": 256,\n    \"max_renders_per_second\": 60,\n    \"max_render_depth\": 32,\n    \"max_render_nodes\": 4096,\n    \"max_patch_operations\": 1024,\n    \"max_attributes_per_element\": 64,\n    \"max_text_length\": 65536,\n    \"max_attribute_value_length\": 4096,\n    \"max_form_fields\": 128,\n    \"max_canvas_count\": 4,\n    \"max_canvas_dimension\": 4096,\n    \"max_canvas_total_pixels\": 16777216,\n    \"max_canvas_pointer_events_per_second\": 120,\n    \"max_image_count\": 32,\n    \"max_image_dimension\": 4096,\n    \"max_image_total_pixels\": 33554432,\n    \"worker_heartbeat_interval_ms\": 10000,\n    \"worker_heartbeat_timeout_ms\": 5000,\n    \"global_attributes\": [\n      \"id\",\n      \"class\",\n      \"role\",\n      \"title\",\n      \"hidden\",\n      \"tabindex\",\n      \"autofocus\",\n      \"lang\",\n      \"dir\",\n      \"data-redevplugin-action\",\n      \"data-redevplugin-escape-action\",\n      \"data-redevplugin-asset-binding\",\n      \"data-redevplugin-asset-attr\"\n    ],\n    \"tag_attributes\": {\n      \"button\": [\"type\", \"name\", \"value\", \"disabled\", \"aria-pressed\", \"aria-expanded\"],\n      \"input\": [\"type\", \"name\", \"value\", \"checked\", \"disabled\", \"readonly\", \"required\", \"placeholder\", \"min\", \"max\", \"step\", \"autocomplete\"],\n      \"textarea\": [\"name\", \"value\", \"disabled\", \"readonly\", \"required\", \"placeholder\", \"rows\", \"cols\", \"maxlength\"],\n      \"select\": [\"name\", \"disabled\", \"required\", \"multiple\", \"size\"],\n      \"option\": [\"value\", \"selected\", \"disabled\", \"label\"],\n      \"label\": [\"for\"],\n      \"form\": [\"name\", \"autocomplete\"],\n      \"th\": [\"scope\", \"colspan\", \"rowspan\"],\n      \"td\": [\"colspan\", \"rowspan\"],\n      \"progress\": [\"value\", \"max\"],\n      \"meter\": [\"value\", \"min\", \"max\", \"low\", \"high\", \"optimum\"],\n      \"img\": [\"alt\", \"width\", \"height\", \"loading\", \"decoding\"],\n      \"audio\": [\"controls\", \"autoplay\", \"muted\", \"loop\", \"preload\"],\n      \"video\": [\"controls\", \"autoplay\", \"muted\", \"loop\", \"preload\", \"width\", \"height\", \"playsinline\"],\n      \"source\": [\"type\", \"media\"],\n      \"track\": [\"kind\", \"srclang\", \"label\", \"default\"],\n      \"time\": [\"datetime\"],\n      \"canvas\": [\"width\", \"height\", \"data-redevplugin-canvas\"]\n    },\n    \"safe_input_types\": [\"text\", \"search\", \"number\", \"checkbox\", \"radio\", \"button\", \"submit\", \"reset\"]\n  },\n  \"oneOf\": [\n    { \"$ref\": \"#/$defs/call\" },\n    { \"$ref\": \"#/$defs/stream_read\" },\n    { \"$ref\": \"#/$defs/stream_ack\" },\n    { \"$ref\": \"#/$defs/operation_cancel\" },\n    { \"$ref\": \"#/$defs/mount\" },\n    { \"$ref\": \"#/$defs/patch\" },\n    { \"$ref\": \"#/$defs/canvas_open\" },\n    { \"$ref\": \"#/$defs/canvas_accessibility\" },\n    { \"$ref\": \"#/$defs/canvas_ready\" },\n    { \"$ref\": \"#/$defs/canvas_input\" },\n    { \"$ref\": \"#/$defs/image_open\" },\n    { \"$ref\": \"#/$defs/image_ready\" },\n    { \"$ref\": \"#/$defs/cancel\" },\n    { \"$ref\": \"#/$defs/action\" },\n    { \"$ref\": \"#/$defs/response\" },\n    { \"$ref\": \"#/$defs/lifecycle\" },\n    { \"$ref\": \"#/$defs/lifecycle_ack\" }\n  ],\n  \"$defs\": {\n    \"opaque_handle\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z][A-Za-z0-9_-]{7,159}$\"\n    },\n    \"capability_business_error_details\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"capability_id\",\n        \"capability_version\",\n        \"detail_schema_sha256\",\n        \"business_error_code\"\n      ],\n      \"properties\": {\n        \"capability_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\" },\n        \"capability_version\": {\n          \"type\": \"string\",\n          \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n        },\n        \"detail_schema_sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n        \"business_error_code\": { \"type\": \"string\", \"pattern\": \"^[A-Z][A-Z0-9_]*$\" },\n        \"business_error_details\": {\n          \"type\": \"object\",\n          \"additionalProperties\": true\n        }\n      }\n    },\n    \"worker_error_details\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"worker_error_code\", \"worker_error_message\", \"worker_error_origin\"],\n      \"properties\": {\n        \"worker_error_code\": {\n          \"type\": \"string\",\n          \"pattern\": \"^[A-Z][A-Z0-9_]*$\"\n        },\n        \"worker_error_message\": {\n          \"type\": \"string\",\n          \"minLength\": 1,\n          \"maxLength\": 4096\n        },\n        \"worker_error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n      }\n    },\n    \"request_id\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(rpc|stream|stream_ack|render|operation|canvas|asset)_[1-9][0-9]{0,15}$\"\n    },\n    \"call\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"request\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.call\" },\n        \"request\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"id\", \"method\"],\n          \"properties\": {\n            \"id\": { \"$ref\": \"#/$defs/request_id\" },\n            \"method\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 256,\n              \"pattern\": \"^[A-Za-z0-9._:-]+$\"\n            },\n            \"params\": {\n              \"type\": \"object\",\n              \"description\": \"Optional JSON object. Arrays are rejected so worker calls match the Host RPC map contract.\"\n            }\n          }\n        }\n      }\n    },\n    \"stream_read\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"stream_handle\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.stream.read\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"stream_handle\": { \"$ref\": \"#/$defs/opaque_handle\" }\n      }\n    },\n    \"stream_ack\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"stream_handle\", \"delivery_id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.stream.ack\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"stream_handle\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"delivery_id\": { \"type\": \"string\", \"pattern\": \"^delivery_[A-Za-z0-9_-]{8,128}$\" }\n      }\n    },\n    \"operation_cancel\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"operation_id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.operation.cancel\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"operation_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"reason\": { \"type\": \"string\", \"maxLength\": 256 }\n      }\n    },\n    \"mount\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"revision\", \"tree\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.mount\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"revision\": { \"const\": 1 },\n        \"tree\": { \"$ref\": \"#/$defs/element_vnode\" }\n      }\n    },\n    \"patch\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"base_revision\", \"revision\", \"operations\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.patch\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"base_revision\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"revision\": { \"type\": \"integer\", \"minimum\": 2 },\n        \"operations\": {\n          \"type\": \"array\",\n          \"maxItems\": 1024,\n          \"items\": { \"$ref\": \"#/$defs/patch_operation\" }\n        }\n      }\n    },\n    \"cancel\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.cancel\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" }\n      }\n    },\n    \"vnode\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/text_vnode\" },\n        { \"$ref\": \"#/$defs/element_vnode\" }\n      ]\n    },\n    \"text_vnode\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"key\", \"text\"],\n      \"properties\": {\n        \"type\": { \"const\": \"text\" },\n        \"key\": { \"$ref\": \"#/$defs/text_identifier\" },\n        \"text\": { \"type\": \"string\", \"maxLength\": 65536 }\n      }\n    },\n    \"element_vnode\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"key\", \"tag\"],\n      \"properties\": {\n        \"type\": { \"const\": \"element\" },\n        \"key\": { \"$ref\": \"#/$defs/element_identifier\" },\n        \"tag\": {\n          \"enum\": [\n            \"main\", \"section\", \"header\", \"footer\", \"nav\", \"aside\", \"article\", \"div\", \"span\", \"p\",\n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"button\", \"input\", \"textarea\", \"select\", \"option\",\n            \"label\", \"fieldset\", \"legend\", \"form\", \"ul\", \"ol\", \"li\", \"dl\", \"dt\", \"dd\", \"table\",\n            \"thead\", \"tbody\", \"tfoot\", \"tr\", \"th\", \"td\", \"caption\", \"details\", \"summary\", \"pre\", \"code\",\n            \"kbd\", \"samp\", \"strong\", \"em\", \"small\", \"mark\", \"time\", \"progress\", \"meter\", \"img\", \"picture\",\n            \"source\", \"audio\", \"video\", \"track\", \"canvas\"\n          ]\n        },\n        \"attributes\": {\n          \"type\": \"object\",\n          \"maxProperties\": 64,\n          \"additionalProperties\": { \"type\": [\"string\", \"number\", \"boolean\"] }\n        },\n        \"children\": {\n          \"type\": \"array\",\n          \"maxItems\": 4096,\n          \"items\": { \"$ref\": \"#/$defs/vnode\" }\n        }\n      }\n    },\n    \"patch_operation\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"target_key\", \"text\"],\n          \"properties\": {\n            \"type\": { \"const\": \"set_text\" },\n            \"target_key\": { \"$ref\": \"#/$defs/text_identifier\" },\n            \"text\": { \"type\": \"string\", \"maxLength\": 65536 }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"target_key\", \"set\", \"remove\"],\n          \"properties\": {\n            \"type\": { \"const\": \"patch_attributes\" },\n            \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n            \"set\": { \"type\": \"object\", \"maxProperties\": 64, \"additionalProperties\": { \"type\": [\"string\", \"number\", \"boolean\"] } },\n            \"remove\": { \"type\": \"array\", \"maxItems\": 64, \"uniqueItems\": true, \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"target_key\", \"edit_revision\"],\n          \"properties\": {\n            \"type\": { \"const\": \"patch_control\" },\n            \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n            \"edit_revision\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"value\": { \"type\": [\"string\", \"null\"], \"maxLength\": 65536 },\n            \"checked\": { \"type\": [\"boolean\", \"null\"] }\n          },\n          \"anyOf\": [{ \"required\": [\"value\"] }, { \"required\": [\"checked\"] }]\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"parent_key\", \"before_key\", \"node\"],\n          \"properties\": {\n            \"type\": { \"const\": \"insert_child\" },\n            \"parent_key\": { \"$ref\": \"#/$defs/element_identifier\" },\n            \"before_key\": {\n              \"oneOf\": [\n                { \"$ref\": \"#/$defs/ui_identifier\" },\n                { \"type\": \"null\" }\n              ]\n            },\n            \"node\": { \"$ref\": \"#/$defs/vnode\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"target_key\"],\n          \"properties\": {\n            \"type\": { \"const\": \"remove_child\" },\n            \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"target_key\", \"parent_key\", \"before_key\"],\n          \"properties\": {\n            \"type\": { \"const\": \"move_child\" },\n            \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n            \"parent_key\": { \"$ref\": \"#/$defs/element_identifier\" },\n            \"before_key\": {\n              \"oneOf\": [\n                { \"$ref\": \"#/$defs/ui_identifier\" },\n                { \"type\": \"null\" }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"canvas_open\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"canvas_id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.canvas.open\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" }\n      }\n    },\n    \"canvas_accessibility\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"canvas_id\", \"label\", \"description\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.canvas.accessibility\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n        \"label\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 256 },\n        \"description\": { \"type\": \"string\", \"maxLength\": 1024 }\n      }\n    },\n    \"canvas_ready\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"canvas_id\", \"canvas\", \"css_width\", \"css_height\", \"device_pixel_ratio\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.canvas.ready\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n        \"canvas\": {\n          \"description\": \"One transferred OffscreenCanvas. The runtime validates the structured-clone object outside JSON Schema.\"\n        },\n        \"css_width\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n        \"css_height\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n        \"device_pixel_ratio\": { \"type\": \"number\", \"minimum\": 0.5, \"maximum\": 4 }\n      },\n      \"x-redevplugin-transfer\": [\"canvas\"]\n    },\n    \"canvas_input\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"canvas_id\", \"event\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.canvas.input\" },\n        \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n        \"event\": {\n          \"oneOf\": [\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"type\"],\n              \"properties\": { \"type\": { \"enum\": [\"focus\", \"blur\"] } }\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"type\", \"css_width\", \"css_height\", \"device_pixel_ratio\"],\n              \"properties\": {\n                \"type\": { \"const\": \"resize\" },\n                \"css_width\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n                \"css_height\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n                \"device_pixel_ratio\": { \"type\": \"number\", \"minimum\": 0.5, \"maximum\": 4 }\n              }\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"type\", \"event\", \"code\", \"key\", \"repeat\", \"alt_key\", \"ctrl_key\", \"meta_key\", \"shift_key\"],\n              \"properties\": {\n                \"type\": { \"const\": \"key\" },\n                \"event\": { \"enum\": [\"keydown\", \"keyup\"] },\n                \"code\": { \"type\": \"string\", \"maxLength\": 64 },\n                \"key\": { \"type\": \"string\", \"maxLength\": 64 },\n                \"repeat\": { \"type\": \"boolean\" },\n                \"alt_key\": { \"type\": \"boolean\" },\n                \"ctrl_key\": { \"type\": \"boolean\" },\n                \"meta_key\": { \"type\": \"boolean\" },\n                \"shift_key\": { \"type\": \"boolean\" }\n              }\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"type\", \"event\", \"pointer_id\", \"pointer_type\", \"buttons\", \"button\", \"x\", \"y\", \"pressure\"],\n              \"properties\": {\n                \"type\": { \"const\": \"pointer\" },\n                \"event\": { \"enum\": [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] },\n                \"pointer_id\": { \"type\": \"integer\", \"minimum\": 0 },\n                \"pointer_type\": { \"enum\": [\"mouse\", \"pen\", \"touch\", \"unknown\"] },\n                \"buttons\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 31 },\n                \"button\": { \"type\": \"integer\", \"minimum\": -1, \"maximum\": 4 },\n                \"x\": { \"type\": \"number\", \"minimum\": -16384, \"maximum\": 32768 },\n                \"y\": { \"type\": \"number\", \"minimum\": -16384, \"maximum\": 32768 },\n                \"pressure\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"image_open\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"asset_id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.asset.image.open\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"asset_id\": { \"$ref\": \"#/$defs/ui_identifier\" }\n      }\n    },\n    \"image_ready\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"id\", \"asset_id\", \"image\", \"width\", \"height\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.asset.image.ready\" },\n        \"id\": { \"$ref\": \"#/$defs/request_id\" },\n        \"asset_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n        \"image\": {\n          \"description\": \"One transferred ImageBitmap decoded from Host-verified package bytes.\"\n        },\n        \"width\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 4096 },\n        \"height\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 4096 }\n      },\n      \"x-redevplugin-transfer\": [\"image\"]\n    },\n    \"ui_identifier\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]*$\"\n    },\n    \"element_identifier\": {\n      \"$ref\": \"#/$defs/ui_identifier\"\n    },\n    \"text_identifier\": {\n      \"$ref\": \"#/$defs/ui_identifier\"\n    },\n    \"action\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"action\", \"event\", \"target_key\", \"edit_revision\", \"is_composing\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.ui.action\" },\n        \"action\": {\n          \"type\": \"string\",\n          \"minLength\": 1,\n          \"maxLength\": 128,\n          \"pattern\": \"^[A-Za-z0-9._:-]+$\"\n        },\n        \"event\": { \"enum\": [\"click\", \"input\", \"change\", \"submit\", \"escape\"] },\n        \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n        \"edit_revision\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"is_composing\": { \"type\": \"boolean\" },\n        \"value\": { \"type\": \"string\", \"maxLength\": 65536 },\n        \"checked\": { \"type\": \"boolean\" },\n        \"form_data\": {\n          \"type\": \"object\",\n          \"maxProperties\": 128,\n          \"additionalProperties\": { \"type\": \"string\", \"maxLength\": 65536 }\n        }\n      }\n    },\n    \"response\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"id\", \"ok\"],\n          \"properties\": {\n            \"type\": { \"const\": \"redevplugin.bridge.response\" },\n            \"id\": { \"$ref\": \"#/$defs/request_id\" },\n            \"ok\": { \"const\": true },\n            \"data\": true\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\", \"id\", \"ok\", \"error_code\", \"error\"],\n          \"properties\": {\n            \"type\": { \"const\": \"redevplugin.bridge.response\" },\n            \"id\": { \"$ref\": \"#/$defs/request_id\" },\n            \"ok\": { \"const\": false },\n            \"error_code\": {\n              \"enum\": [\n                \"PLUGIN_INVALID_REQUEST\",\n                \"PLUGIN_MANIFEST_INVALID\",\n                \"PLUGIN_PACKAGE_INVALID\",\n                \"PLUGIN_PACKAGE_TOO_LARGE\",\n                \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n                \"PLUGIN_SIGNATURE_INVALID\",\n                \"PLUGIN_TRUST_STATE_DENIED\",\n                \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n                \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n                \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n                \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n                \"PLUGIN_DISABLED\",\n                \"PLUGIN_DISABLED_BY_POLICY\",\n                \"PLUGIN_PERMISSION_DENIED\",\n                \"PLUGIN_ORIGIN_DENIED\",\n                \"PLUGIN_ACTION_DENIED\",\n                \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n                \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n                \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n                \"PLUGIN_ADAPTER_FAILURE\",\n                \"PLUGIN_SESSION_REVOKED\",\n                \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n                \"PLUGIN_SESSION_FENCE_CAPACITY\",\n                \"PLUGIN_CONFIRMATION_REQUIRED\",\n                \"PLUGIN_CONFIRMATION_INVALID\",\n                \"PLUGIN_TOKEN_EXPIRED\",\n                \"PLUGIN_TOKEN_REPLAY\",\n                \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n                \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n                \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n                \"PLUGIN_ASSET_TICKET_INVALID\",\n                \"PLUGIN_ASSET_SESSION_INVALID\",\n                \"PLUGIN_STREAM_TICKET_INVALID\",\n                \"PLUGIN_STREAM_DELIVERY_INVALID\",\n                \"PLUGIN_STREAM_CANCELLED\",\n                \"PLUGIN_LEASE_INVALID\",\n                \"PLUGIN_LEASE_REPLAYED\",\n                \"PLUGIN_GRANT_INVALID\",\n                \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n                \"PLUGIN_OPERATION_BLOCKED\",\n                \"PLUGIN_OPERATION_NOT_FOUND\",\n                \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n                \"PLUGIN_NETWORK_TARGET_DENIED\",\n                \"PLUGIN_NETWORK_RATE_LIMITED\",\n                \"PLUGIN_RUNTIME_UNAVAILABLE\",\n                \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n                \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n                \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n                \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n                \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n                \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n                \"PLUGIN_CAPABILITY_ERROR\",\n                \"PLUGIN_WORKER_ERROR\",\n                \"PLUGIN_CONTRACT_MISMATCH\",\n                \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n                \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n                \"PLUGIN_BINDING_REVISION_MISMATCH\",\n                \"PLUGIN_VALUES_REVISION_MISMATCH\",\n                \"PLUGIN_CSRF_REQUIRED\",\n                \"PLUGIN_CSRF_INVALID\",\n                \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n                \"PLUGIN_CONFIRMATION_REJECTED\",\n                \"PLUGIN_BRIDGE_CANCELLED\",\n                \"PLUGIN_BRIDGE_TIMEOUT\",\n                \"PLUGIN_BRIDGE_DISPOSED\",\n                \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n                \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\"\n              ]\n            },\n            \"error\": { \"type\": \"string\", \"maxLength\": 4096 },\n            \"error_details\": {\n              \"type\": \"object\",\n              \"maxProperties\": 8,\n              \"additionalProperties\": true\n            },\n            \"mutation_outcome\": { \"type\": \"string\", \"enum\": [\"not_committed\", \"unknown\"] }\n          },\n          \"allOf\": [\n            {\n              \"if\": {\n                \"properties\": { \"error_code\": { \"const\": \"PLUGIN_CAPABILITY_ERROR\" } },\n                \"required\": [\"error_code\"]\n              },\n              \"then\": {\n                \"required\": [\"error_details\"],\n                \"properties\": {\n                  \"error_details\": { \"$ref\": \"#/$defs/capability_business_error_details\" }\n                }\n              }\n            },\n            {\n              \"if\": {\n                \"properties\": { \"error_code\": { \"const\": \"PLUGIN_WORKER_ERROR\" } },\n                \"required\": [\"error_code\"]\n              },\n              \"then\": {\n                \"required\": [\"error_details\"],\n                \"properties\": {\n                  \"error_details\": { \"$ref\": \"#/$defs/worker_error_details\" }\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"lifecycle\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"event\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.lifecycle\" },\n        \"quiesce_id\": { \"type\": \"string\", \"pattern\": \"^quiesce_[A-Za-z0-9_-]{8,151}$\" },\n        \"event\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"type\"],\n          \"properties\": {\n            \"type\": { \"enum\": [\"ready\", \"visible\", \"hidden\", \"dispose\"] }\n          }\n        }\n      },\n      \"allOf\": [\n        {\n          \"if\": { \"required\": [\"quiesce_id\"] },\n          \"then\": {\n            \"properties\": {\n              \"event\": {\n                \"properties\": { \"type\": { \"const\": \"dispose\" } }\n              }\n            }\n          }\n        }\n      ]\n    },\n    \"lifecycle_ack\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"quiesce_id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.bridge.lifecycle_ack\" },\n        \"quiesce_id\": { \"type\": \"string\", \"pattern\": \"^quiesce_[A-Za-z0-9_-]{8,151}$\" }\n      }\n    }\n  }\n}\n".as_bytes();
159static CONTRACT_BODY_MANIFEST_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/manifest-v5.schema.json\",\n  \"title\": \"ReDevPlugin manifest v5\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"publisher\", \"plugin\", \"surfaces\"],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.manifest.v5\" },\n    \"publisher\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"publisher_id\"],\n      \"properties\": {\n        \"publisher_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"display_name\": { \"type\": \"string\" }\n      }\n    },\n    \"plugin\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"plugin_id\", \"display_name\", \"version\", \"api_version\", \"min_runtime_version\", \"ui_protocol_version\"],\n      \"properties\": {\n        \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"display_name\": { \"type\": \"string\", \"minLength\": 1 },\n        \"version\": { \"$ref\": \"#/$defs/semver\" },\n        \"api_version\": { \"const\": \"plugin-v1\" },\n        \"min_runtime_version\": { \"$ref\": \"#/$defs/semver\" },\n        \"ui_protocol_version\": { \"const\": \"plugin-ui-v5\" }\n      }\n    },\n    \"surfaces\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\"surface_id\", \"kind\", \"label\", \"entry\"],\n        \"properties\": {\n          \"surface_id\": { \"type\": \"string\", \"minLength\": 1 },\n          \"kind\": { \"enum\": [\"view\", \"command\", \"background\"] },\n          \"intent\": { \"enum\": [\"primary\", \"secondary\", \"utility\"] },\n          \"label\": { \"type\": \"string\", \"minLength\": 1 },\n          \"entry\": { \"type\": \"string\", \"minLength\": 1 },\n          \"icon\": {\n            \"type\": \"string\",\n            \"minLength\": 1,\n            \"pattern\": \"^[A-Za-z0-9_][A-Za-z0-9_.-]*(?:/[A-Za-z0-9_][A-Za-z0-9_.-]*)*\\\\.(?:[Pp][Nn][Gg]|[Jj][Pp][Gg]|[Jj][Pp][Ee][Gg]|[Gg][Ii][Ff]|[Ww][Ee][Bb][Pp]|[Ii][Cc][Oo])$\"\n          },\n          \"default_size\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"width\", \"height\"],\n            \"properties\": {\n              \"width\": { \"type\": \"integer\", \"minimum\": 1 },\n              \"height\": { \"type\": \"integer\", \"minimum\": 1 }\n            }\n          }\n        }\n      }\n    },\n    \"capability_bindings\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\"binding_id\", \"contract\"],\n        \"properties\": {\n          \"binding_id\": { \"type\": \"string\", \"minLength\": 1 },\n          \"contract\": { \"$ref\": \"host-capability-pin-v1.schema.json\" }\n        }\n      }\n    },\n    \"methods\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\"method\", \"route\"],\n        \"properties\": {\n          \"method\": { \"type\": \"string\", \"minLength\": 1 },\n          \"effect\": { \"enum\": [\"read\", \"write\", \"delete\", \"execute\", \"admin\"] },\n          \"execution\": { \"enum\": [\"sync\", \"operation\", \"subscription\"] },\n          \"dangerous\": { \"type\": \"boolean\" },\n          \"preflight_only\": { \"type\": \"boolean\" },\n          \"broker_access\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"storage\": {\n                \"type\": \"array\",\n                \"uniqueItems\": true,\n                \"items\": {\n                  \"type\": \"object\",\n                  \"additionalProperties\": false,\n                  \"required\": [\"store_id\", \"operations\"],\n                  \"properties\": {\n                    \"store_id\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128 },\n                    \"operations\": {\n                      \"type\": \"array\",\n                      \"minItems\": 1,\n                      \"uniqueItems\": true,\n                      \"items\": { \"enum\": [\"read\", \"write\", \"delete\", \"list\", \"get\", \"put\", \"query\", \"exec\"] }\n                    }\n                  }\n                }\n              },\n              \"network\": {\n                \"type\": \"array\",\n                \"uniqueItems\": true,\n                \"items\": {\n                  \"type\": \"object\",\n                  \"additionalProperties\": false,\n                  \"required\": [\"connector_id\", \"transport\", \"operations\"],\n                  \"properties\": {\n                    \"connector_id\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128 },\n                    \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n                    \"operations\": {\n                      \"type\": \"array\",\n                      \"minItems\": 1,\n                      \"uniqueItems\": true,\n                      \"items\": { \"enum\": [\"http\", \"http_stream\", \"websocket_round_trip\", \"tcp_round_trip\", \"udp_round_trip\"] }\n                    },\n                    \"http_methods\": {\n                      \"type\": \"array\",\n                      \"minItems\": 1,\n                      \"uniqueItems\": true,\n                      \"items\": { \"enum\": [\"GET\", \"HEAD\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"OPTIONS\"] }\n                    }\n                  },\n                  \"allOf\": [\n                    {\n                      \"if\": { \"properties\": { \"transport\": { \"const\": \"http\" } }, \"required\": [\"transport\"] },\n                      \"then\": { \"required\": [\"http_methods\"] },\n                      \"else\": { \"not\": { \"required\": [\"http_methods\"] } }\n                    }\n                  ]\n                }\n              }\n            }\n          },\n          \"route\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"kind\"],\n            \"properties\": {\n              \"kind\": { \"enum\": [\"capability\", \"worker\", \"core_action\"] },\n              \"binding_id\": { \"type\": \"string\", \"minLength\": 1 },\n              \"target_method\": { \"type\": \"string\", \"minLength\": 1 },\n              \"worker_id\": { \"type\": \"string\", \"minLength\": 1 },\n              \"action_id\": { \"type\": \"string\", \"minLength\": 1 }\n            },\n            \"allOf\": [\n              {\n                \"if\": { \"properties\": { \"kind\": { \"const\": \"capability\" } }, \"required\": [\"kind\"] },\n                \"then\": {\n                  \"required\": [\"binding_id\", \"target_method\"],\n                  \"not\": {\n                    \"anyOf\": [\n                      { \"required\": [\"worker_id\"] },\n                      { \"required\": [\"action_id\"] }\n                    ]\n                  }\n                }\n              },\n              {\n                \"if\": { \"properties\": { \"kind\": { \"const\": \"worker\" } }, \"required\": [\"kind\"] },\n                \"then\": {\n                  \"required\": [\"worker_id\"],\n                  \"not\": {\n                    \"anyOf\": [\n                      { \"required\": [\"binding_id\"] },\n                      { \"required\": [\"target_method\"] },\n                      { \"required\": [\"action_id\"] }\n                    ]\n                  }\n                }\n              },\n              {\n                \"if\": { \"properties\": { \"kind\": { \"const\": \"core_action\" } }, \"required\": [\"kind\"] },\n                \"then\": {\n                  \"required\": [\"action_id\"],\n                  \"not\": {\n                    \"anyOf\": [\n                      { \"required\": [\"binding_id\"] },\n                      { \"required\": [\"target_method\"] },\n                      { \"required\": [\"worker_id\"] }\n                    ]\n                  }\n                }\n              }\n            ]\n          },\n          \"confirmation\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"mode\"],\n            \"properties\": {\n              \"mode\": { \"enum\": [\"none\", \"required\", \"risk_based\"] },\n              \"preflight_method\": { \"type\": [\"string\", \"null\"] },\n              \"request_hash_fields\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n              \"plan_hash_required\": { \"type\": \"boolean\" }\n            }\n          },\n          \"cancel_policy\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"cancelable\"],\n            \"properties\": {\n              \"cancelable\": { \"type\": \"boolean\" },\n              \"disable_behavior\": { \"enum\": [\"cancel\", \"orphan\", \"wait\"] },\n              \"uninstall_behavior\": { \"enum\": [\"cancel_then_block_delete\", \"force_cleanup_allowed\"] },\n              \"ack_timeout_ms\": { \"type\": \"integer\", \"minimum\": 0 }\n            },\n            \"allOf\": [\n              {\n                \"if\": { \"properties\": { \"cancelable\": { \"const\": true } }, \"required\": [\"cancelable\"] },\n                \"then\": {\n                  \"required\": [\"ack_timeout_ms\"],\n                  \"properties\": { \"ack_timeout_ms\": { \"type\": \"integer\", \"minimum\": 1 } }\n                }\n              },\n              {\n                \"if\": { \"properties\": { \"cancelable\": { \"const\": false } }, \"required\": [\"cancelable\"] },\n                \"then\": {\n                  \"properties\": { \"ack_timeout_ms\": { \"const\": 0 } }\n                }\n              }\n            ]\n          },\n          \"request_schema\": {\n            \"allOf\": [\n              { \"$ref\": \"#/$defs/method_schema\" },\n              {\n                \"type\": \"object\",\n                \"required\": [\"type\", \"additionalProperties\"],\n                \"properties\": {\n                  \"type\": { \"const\": \"object\" },\n                  \"additionalProperties\": { \"const\": false }\n                }\n              }\n            ]\n          },\n          \"response_schema\": {\n            \"allOf\": [\n              { \"$ref\": \"#/$defs/method_schema\" },\n              {\n                \"type\": \"object\",\n                \"required\": [\"type\", \"additionalProperties\"],\n                \"properties\": {\n                  \"type\": { \"const\": \"object\" },\n                  \"additionalProperties\": { \"const\": false }\n                }\n              }\n            ]\n          }\n        },\n        \"allOf\": [\n          {\n            \"if\": { \"properties\": { \"dangerous\": { \"const\": true } }, \"required\": [\"dangerous\"] },\n            \"then\": {\n              \"required\": [\"confirmation\"],\n              \"properties\": {\n                \"confirmation\": {\n                  \"properties\": {\n                    \"mode\": { \"enum\": [\"required\", \"risk_based\"] }\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"if\": {\n              \"properties\": {\n                \"route\": {\n                  \"properties\": { \"kind\": { \"const\": \"capability\" } },\n                  \"required\": [\"kind\"]\n                }\n              },\n              \"required\": [\"route\"]\n            },\n            \"then\": {\n              \"not\": {\n                \"anyOf\": [\n                  { \"required\": [\"effect\"] },\n                  { \"required\": [\"execution\"] },\n                  { \"required\": [\"dangerous\"] },\n                  { \"required\": [\"preflight_only\"] },\n                  { \"required\": [\"confirmation\"] },\n                  { \"required\": [\"cancel_policy\"] },\n                  { \"required\": [\"request_schema\"] },\n                  { \"required\": [\"response_schema\"] },\n                  { \"required\": [\"broker_access\"] }\n                ]\n              }\n            },\n            \"else\": {\n              \"required\": [\"effect\", \"execution\", \"request_schema\", \"response_schema\"]\n            }\n          },\n          {\n            \"if\": { \"properties\": { \"preflight_only\": { \"const\": true } }, \"required\": [\"preflight_only\"] },\n            \"then\": {\n              \"properties\": {\n                \"effect\": { \"const\": \"read\" },\n                \"execution\": { \"const\": \"sync\" },\n                \"dangerous\": { \"const\": false }\n              }\n            }\n          },\n          {\n            \"if\": { \"properties\": { \"execution\": { \"enum\": [\"operation\", \"subscription\"] } }, \"required\": [\"execution\"] },\n            \"then\": { \"required\": [\"cancel_policy\"] }\n          }\n        ]\n      }\n    },\n    \"workers\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\"worker_id\", \"artifact\", \"abi\", \"mode\", \"scope\", \"memory_limit_bytes\"],\n        \"properties\": {\n          \"worker_id\": { \"type\": \"string\", \"minLength\": 1 },\n          \"artifact\": { \"type\": \"string\", \"minLength\": 1 },\n          \"abi\": { \"const\": \"redevplugin-wasm-worker-v2\" },\n          \"mode\": { \"const\": \"job\" },\n          \"scope\": { \"enum\": [\"user\", \"environment\"] },\n          \"memory_limit_bytes\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 268435456 },\n          \"idle_timeout_ms\": { \"type\": \"integer\", \"minimum\": 0 }\n        }\n      }\n    },\n    \"storage\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"stores\": {\n          \"type\": \"array\",\n          \"maxItems\": 16,\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"store_id\", \"kind\", \"scope\", \"quota_bytes\", \"schema_version\"],\n            \"properties\": {\n              \"store_id\": { \"type\": \"string\", \"minLength\": 1 },\n              \"kind\": { \"enum\": [\"kv\", \"files\", \"sqlite\"] },\n              \"scope\": { \"enum\": [\"user\", \"environment\"] },\n              \"quota_bytes\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 1073741824 },\n              \"quota_files\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 100000 },\n              \"schema_version\": { \"type\": \"integer\", \"minimum\": 1 }\n            }\n          }\n        }\n      }\n    },\n    \"network_access\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"connectors\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"connector_id\", \"transport\", \"scope\", \"destinations\"],\n            \"properties\": {\n              \"connector_id\": { \"type\": \"string\", \"minLength\": 1 },\n              \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n              \"scope\": { \"enum\": [\"user\", \"environment\"] },\n              \"destinations\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } },\n              \"auth\": { \"type\": \"object\" },\n              \"tls\": { \"type\": \"object\" }\n            }\n          }\n        }\n      }\n    },\n    \"settings\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\"],\n      \"properties\": {\n        \"schema_version\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"fields\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"key\", \"type\", \"scope\", \"label\"],\n            \"properties\": {\n              \"key\": { \"type\": \"string\", \"minLength\": 1 },\n              \"type\": { \"type\": \"string\", \"minLength\": 1 },\n              \"scope\": { \"enum\": [\"user\", \"environment\"] },\n              \"label\": { \"type\": \"string\", \"minLength\": 1 },\n              \"default\": true,\n              \"secret_ref\": { \"type\": \"string\" },\n              \"options\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n              \"validation\": { \"type\": \"object\" }\n            }\n          }\n        }\n      }\n    },\n    \"intents\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\"intent_id\", \"method\"],\n        \"properties\": {\n          \"intent_id\": { \"type\": \"string\", \"minLength\": 1 },\n          \"method\": { \"type\": \"string\", \"minLength\": 1 },\n          \"payload_schema\": { \"type\": \"object\" }\n        }\n      }\n    }\n  },\n  \"$defs\": {\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"method_schema\": {\n      \"oneOf\": [\n        { \"const\": false },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"$comment\": { \"type\": \"string\" },\n            \"title\": { \"type\": \"string\" },\n            \"description\": { \"type\": \"string\" },\n            \"readOnly\": { \"type\": \"boolean\" },\n            \"writeOnly\": { \"type\": \"boolean\" },\n            \"$ref\": { \"type\": \"string\", \"pattern\": \"^#/\\\\$defs/[A-Za-z0-9._-]+$\" },\n            \"$defs\": {\n              \"type\": \"object\",\n              \"additionalProperties\": { \"$ref\": \"#/$defs/method_schema\" }\n            },\n            \"type\": {\n              \"oneOf\": [\n                { \"enum\": [\"null\", \"boolean\", \"object\", \"array\", \"number\", \"integer\", \"string\"] },\n                {\n                  \"type\": \"array\",\n                  \"minItems\": 1,\n                  \"uniqueItems\": true,\n                  \"items\": { \"enum\": [\"null\", \"boolean\", \"object\", \"array\", \"number\", \"integer\", \"string\"] }\n                }\n              ]\n            },\n            \"properties\": {\n              \"type\": \"object\",\n              \"additionalProperties\": { \"$ref\": \"#/$defs/method_schema\" }\n            },\n            \"patternProperties\": {\n              \"type\": \"object\",\n              \"additionalProperties\": { \"$ref\": \"#/$defs/method_schema\" }\n            },\n            \"required\": {\n              \"type\": \"array\",\n              \"uniqueItems\": true,\n              \"items\": { \"type\": \"string\" }\n            },\n            \"additionalProperties\": { \"const\": false },\n            \"items\": { \"$ref\": \"#/$defs/method_schema\" },\n            \"allOf\": {\n              \"type\": \"array\",\n              \"minItems\": 1,\n              \"items\": { \"$ref\": \"#/$defs/method_schema\" }\n            },\n            \"anyOf\": {\n              \"type\": \"array\",\n              \"minItems\": 1,\n              \"items\": { \"$ref\": \"#/$defs/method_schema\" }\n            },\n            \"oneOf\": {\n              \"type\": \"array\",\n              \"minItems\": 1,\n              \"items\": { \"$ref\": \"#/$defs/method_schema\" }\n            },\n            \"enum\": { \"type\": \"array\", \"minItems\": 1, \"uniqueItems\": true },\n            \"const\": true,\n            \"default\": true,\n            \"examples\": { \"type\": \"array\" },\n            \"minimum\": { \"type\": \"number\" },\n            \"maximum\": { \"type\": \"number\" },\n            \"exclusiveMinimum\": { \"type\": \"number\" },\n            \"exclusiveMaximum\": { \"type\": \"number\" },\n            \"multipleOf\": { \"type\": \"number\", \"exclusiveMinimum\": 0 },\n            \"minLength\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"maxLength\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"pattern\": { \"type\": \"string\" },\n            \"format\": { \"type\": \"string\" },\n            \"minItems\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"maxItems\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"uniqueItems\": { \"type\": \"boolean\" },\n            \"minProperties\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"maxProperties\": { \"type\": \"integer\", \"minimum\": 0 }\n          },\n          \"anyOf\": [\n            { \"required\": [\"type\"] },\n            { \"required\": [\"$ref\"] },\n            { \"required\": [\"properties\"] },\n            { \"required\": [\"patternProperties\"] },\n            { \"required\": [\"required\"] },\n            { \"required\": [\"additionalProperties\"] },\n            { \"required\": [\"minProperties\"] },\n            { \"required\": [\"maxProperties\"] },\n            { \"required\": [\"allOf\"] },\n            { \"required\": [\"anyOf\"] },\n            { \"required\": [\"oneOf\"] },\n            { \"required\": [\"enum\"] },\n            { \"required\": [\"const\"] }\n          ],\n          \"allOf\": [\n            {\n              \"if\": {\n                \"required\": [\"type\"],\n                \"properties\": {\n                  \"type\": {\n                    \"anyOf\": [\n                      { \"const\": \"object\" },\n                      { \"type\": \"array\", \"contains\": { \"const\": \"object\" } }\n                    ]\n                  }\n                }\n              },\n              \"then\": {\n                \"required\": [\"additionalProperties\"],\n                \"properties\": { \"additionalProperties\": { \"const\": false } }\n              }\n            },\n            {\n              \"if\": {\n                \"anyOf\": [\n                  { \"required\": [\"properties\"] },\n                  { \"required\": [\"patternProperties\"] },\n                  { \"required\": [\"required\"] },\n                  { \"required\": [\"additionalProperties\"] },\n                  { \"required\": [\"minProperties\"] },\n                  { \"required\": [\"maxProperties\"] }\n                ]\n              },\n              \"then\": {\n                \"required\": [\"additionalProperties\"],\n                \"properties\": { \"additionalProperties\": { \"const\": false } }\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n".as_bytes();
160static CONTRACT_BODY_NETWORK_GRANT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/network-grant-v2.schema.json\",\n  \"title\": \"ReDevPlugin network grant v2\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"grant_id\",\n    \"plugin_instance_id\",\n    \"active_fingerprint\",\n    \"resource_scope\",\n    \"policy_revision\",\n    \"management_revision\",\n    \"revoke_epoch\",\n    \"connector_id\",\n    \"transport\",\n    \"destination\",\n    \"target_classifier_version\",\n    \"expires_at\"\n  ],\n  \"properties\": {\n    \"grant_id\": { \"type\": \"string\", \"pattern\": \"^netgrant_[0-9a-f]{32}$\" },\n    \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n    \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n    \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n    \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n    \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n    \"connector_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n    \"destination\": { \"$ref\": \"#/$defs/destination\" },\n    \"runtime_generation_id\": { \"type\": \"string\" },\n    \"target_classifier_version\": { \"const\": \"target-classifier-v2\" },\n    \"expires_at\": { \"type\": \"string\", \"format\": \"date-time\" }\n  },\n  \"$defs\": {\n    \"resource_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"kind\", \"owner_env_hash\"],\n      \"properties\": {\n        \"kind\": { \"enum\": [\"user\", \"environment\"] },\n        \"owner_env_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" },\n        \"owner_user_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" }\n      },\n      \"oneOf\": [\n        { \"properties\": { \"kind\": { \"const\": \"user\" } }, \"required\": [\"owner_user_hash\"] },\n        { \"properties\": { \"kind\": { \"const\": \"environment\" } }, \"not\": { \"required\": [\"owner_user_hash\"] } }\n      ]\n    },\n    \"destination\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"transport\", \"host\", \"port\"],\n      \"properties\": {\n        \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n        \"scheme\": { \"enum\": [\"http\", \"https\", \"ws\", \"wss\"] },\n        \"host\": { \"type\": \"string\", \"minLength\": 1 },\n        \"port\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 65535 }\n      }\n    }\n  }\n}\n".as_bytes();
161static CONTRACT_BODY_OPAQUE_SURFACE_DOCUMENT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/opaque-surface-document-v3.schema.json\",\n  \"title\": \"ReDevPlugin opaque surface document v3\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"entry_path\",\n    \"entry_sha256\",\n    \"body_html\",\n    \"styles\",\n    \"worker\",\n    \"assets\",\n    \"critical_bytes\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.opaque_surface_document.v3\" },\n    \"entry_path\": { \"$ref\": \"#/$defs/package_path\" },\n    \"entry_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"title\": { \"type\": \"string\", \"maxLength\": 256 },\n    \"language\": { \"type\": \"string\", \"maxLength\": 64 },\n    \"direction\": { \"enum\": [\"ltr\", \"rtl\", \"auto\"] },\n    \"body_html\": { \"type\": \"string\", \"maxLength\": 4194304 },\n    \"styles\": {\n      \"type\": \"array\",\n      \"items\": { \"$ref\": \"#/$defs/style\" }\n    },\n    \"worker\": { \"$ref\": \"#/$defs/worker\" },\n    \"assets\": {\n      \"type\": \"array\",\n      \"maxItems\": 128,\n      \"items\": { \"$ref\": \"#/$defs/asset\" }\n    },\n    \"critical_bytes\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 8388608\n    }\n  },\n  \"$defs\": {\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sha256:[a-f0-9]{64}$\"\n    },\n    \"package_path\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 512,\n      \"pattern\": \"^.+$\",\n      \"not\": {\n        \"anyOf\": [\n          { \"pattern\": \"^/\" },\n          { \"pattern\": \"\\\\\\\\\" },\n          { \"pattern\": \"(^|/)\\\\.\\\\.?(/|$)\" }\n        ]\n      }\n    },\n    \"style\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"path\", \"sha256\", \"content\"],\n      \"properties\": {\n        \"path\": { \"$ref\": \"#/$defs/package_path\" },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"content\": { \"type\": \"string\", \"maxLength\": 2097152 }\n      }\n    },\n    \"worker\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"path\", \"sha256\", \"type\", \"content\"],\n      \"properties\": {\n        \"path\": { \"$ref\": \"#/$defs/package_path\" },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"type\": { \"const\": \"classic\" },\n        \"content\": { \"type\": \"string\", \"maxLength\": 4194304 }\n      }\n    },\n    \"asset\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"binding_id\", \"logical_ids\", \"path\", \"sha256\", \"size\", \"content_type\"],\n      \"properties\": {\n        \"binding_id\": {\n          \"type\": \"string\",\n          \"pattern\": \"^asset_[A-Za-z0-9_-]{8,154}$\"\n        },\n        \"logical_ids\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 16,\n          \"uniqueItems\": true,\n          \"items\": {\n            \"type\": \"string\",\n            \"minLength\": 1,\n            \"maxLength\": 128,\n            \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]*$\"\n          }\n        },\n        \"path\": { \"$ref\": \"#/$defs/package_path\" },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"size\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 33554432 },\n        \"content_type\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 256 }\n      }\n    }\n  }\n}\n".as_bytes();
162static CONTRACT_BODY_OPAQUE_SURFACE_TRANSPORT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/opaque-surface-transport-v4.schema.json\",\n  \"title\": \"ReDevPlugin private opaque surface transport v4\",\n  \"description\": \"Private messages between the trusted parent, trusted renderer, and isolated plugin worker. MessagePort transfer is represented by the envelope; transferable ports are not JSON values.\",\n  \"oneOf\": [\n    { \"$ref\": \"#/$defs/port_envelope\" },\n    { \"$ref\": \"#/$defs/port_ack\" },\n    { \"$ref\": \"#/$defs/initialize\" },\n    { \"$ref\": \"#/$defs/first_paint\" },\n    { \"$ref\": \"#/$defs/first_commit\" },\n    { \"$ref\": \"#/$defs/worker_ready\" },\n    { \"$ref\": \"#/$defs/surface_error\" },\n    { \"$ref\": \"#/$defs/asset_read\" },\n    { \"$ref\": \"#/$defs/asset_response\" },\n    { \"$ref\": \"#/$defs/worker_initialize\" }\n  ],\n  \"$defs\": {\n    \"opaque_handle\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z][A-Za-z0-9_-]{7,159}$\"\n    },\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sha256:[a-f0-9]{64}$\"\n    },\n    \"port_envelope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"frame_generation_id\", \"ui_protocol_version\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.surface.port\" },\n        \"frame_generation_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"ui_protocol_version\": { \"const\": \"plugin-ui-v5\" }\n      }\n    },\n    \"port_ack\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"frame_generation_id\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.surface.port_ack\" },\n        \"frame_generation_id\": { \"$ref\": \"#/$defs/opaque_handle\" }\n      }\n    },\n    \"initialize\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"frame_generation_id\", \"surface_handle\", \"document\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.surface.initialize\" },\n        \"frame_generation_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"surface_handle\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"document\": {\n          \"$ref\": \"https://schemas.redevplugin.dev/plugin/opaque-surface-document-v3.schema.json\"\n        }\n      }\n    },\n    \"first_paint\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": { \"type\": { \"const\": \"redevplugin.surface.first_paint\" } }\n    },\n    \"first_commit\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": { \"type\": { \"const\": \"redevplugin.surface.first_commit\" } }\n    },\n    \"worker_ready\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\"],\n      \"properties\": { \"type\": { \"const\": \"redevplugin.surface.worker_ready\" } }\n    },\n    \"surface_error\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"error\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.surface.error\" },\n        \"error\": { \"type\": \"string\", \"maxLength\": 512 }\n      }\n    },\n    \"asset_read\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"request_id\", \"binding_id\", \"path\", \"sha256\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.surface.asset.read\" },\n        \"request_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"binding_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"path\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 512 },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" }\n      }\n    },\n    \"asset_response\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"request_id\", \"binding_id\", \"ok\", \"path\", \"sha256\", \"content_type\", \"content_base64\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.surface.asset.response\" },\n        \"request_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"binding_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"ok\": { \"const\": true },\n        \"path\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 512 },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"content_type\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 256 },\n        \"content_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" }\n      }\n    },\n    \"worker_initialize\": {\n      \"description\": \"Transferred ports are ordered as runtime_control then plugin_bridge; only plugin_bridge is exposed through the worker SDK claim.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"type\", \"surface_handle\", \"ui_protocol_version\", \"port_roles\"],\n      \"properties\": {\n        \"type\": { \"const\": \"redevplugin.worker.initialize\" },\n        \"surface_handle\": { \"$ref\": \"#/$defs/opaque_handle\" },\n        \"ui_protocol_version\": { \"const\": \"plugin-ui-v5\" },\n        \"port_roles\": {\n          \"type\": \"array\",\n          \"prefixItems\": [\n            { \"const\": \"runtime_control\" },\n            { \"const\": \"plugin_bridge\" }\n          ],\n          \"minItems\": 2,\n          \"maxItems\": 2\n        }\n      }\n    }\n  }\n}\n".as_bytes();
163static CONTRACT_BODY_OWNER_SCOPE_INVENTORY_REGISTRY: &[u8] = "{\n  \"schema_version\": \"owner-scope-inventory-v1\",\n  \"inventories\": [\n    {\n      \"id\": \"redeven-redevplugin-v0.1.0-v0.1.5-layout-v1\",\n      \"platform_versions\": [\n        \"0.1.0\",\n        \"0.1.1\",\n        \"0.1.2\",\n        \"0.1.3\",\n        \"0.1.4\",\n        \"0.1.5\"\n      ],\n      \"root_entries\": [\n        {\n          \"path\": \"assets\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"db\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"storage\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        }\n      ],\n      \"sqlite_databases\": [\n        {\n          \"path\": \"db/browser_site.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_browser_site_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_browser_site_plugin_instance\",\n              \"table_name\": \"plugin_browser_site_origins\",\n              \"sql\": \"CREATE INDEX idx_plugin_browser_site_plugin_instance ON plugin_browser_site_origins(plugin_instance_id, state, origin)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_browser_site_state\",\n              \"table_name\": \"plugin_browser_site_origins\",\n              \"sql\": \"CREATE INDEX idx_plugin_browser_site_state ON plugin_browser_site_origins(state, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_browser_site_origins\",\n              \"table_name\": \"plugin_browser_site_origins\",\n              \"sql\": \"CREATE TABLE plugin_browser_site_origins ( origin_key TEXT PRIMARY KEY, plugin_instance_id TEXT NOT NULL, plugin_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, origin TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, state TEXT NOT NULL, cleanup_reason TEXT NOT NULL, cleanup_error TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, last_seen_at INTEGER NOT NULL, cleanup_requested_at INTEGER, cleaned_at INTEGER, retained_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_browser_site_schema_migrations\",\n              \"table_name\": \"plugin_browser_site_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_browser_site_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"a7767aacbc70799ee6f847077e27727cac70ae2fdbb84cae2e0fae2d9ab5bffa\"\n        },\n        {\n          \"path\": \"db/cleanup.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_cleanup_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_cleanup_operations_plugin\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_cleanup_operations_plugin ON plugin_cleanup_operations(plugin_instance_id, id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_operations\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_operations ( id INTEGER PRIMARY KEY AUTOINCREMENT, plugin_instance_id TEXT NOT NULL, delete_data INTEGER NOT NULL, phase TEXT NOT NULL, executed_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_schema_migrations\",\n              \"table_name\": \"plugin_cleanup_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"492e855ac577c347fd5c4a916b4be060d08e9703d9deec197bcb1a75a0de9dcc\"\n        },\n        {\n          \"path\": \"db/confirmation_intents.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_confirmation_intent_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_expires_at\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_expires_at ON plugin_confirmation_intents(expires_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_plugin_instance\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_plugin_instance ON plugin_confirmation_intents(plugin_instance_id, issued_at, confirmation_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"table_name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intent_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intents\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intents ( confirmation_id TEXT PRIMARY KEY, confirmation_token_id TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, method TEXT NOT NULL, request_hash TEXT NOT NULL, plan_hash TEXT NOT NULL, issued_at INTEGER NOT NULL, expires_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dac56fde008efc7d6a21154c5bfbbd43183a8411e0fad20946e88a7550287781\"\n        },\n        {\n          \"path\": \"db/install_stage.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_install_stage_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_plugin\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_plugin ON plugin_install_stages(plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_status_expiry\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_status_expiry ON plugin_install_stages(status, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stage_schema_migrations\",\n              \"table_name\": \"plugin_install_stage_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_install_stage_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stages\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE TABLE plugin_install_stages ( stage_id TEXT PRIMARY KEY, action TEXT NOT NULL, status TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, requested_trust TEXT NOT NULL, resolved_trust TEXT NOT NULL, validation_summary_json TEXT NOT NULL, error_code TEXT NOT NULL, error_message TEXT NOT NULL, expires_at INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, finished_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"ee0192641f33bba6c7fc5994d73e2a64e77c129406bd3c2ccfc840780c3cef6a\"\n        },\n        {\n          \"path\": \"db/observability.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_observability_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin ON plugin_audit_events(plugin_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin_instance\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin_instance ON plugin_audit_events(plugin_instance_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_plugin_instance\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_plugin_instance ON plugin_diagnostic_events(plugin_instance_id, type, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_surface\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_surface ON plugin_diagnostic_events(surface_instance_id, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_audit_events\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE TABLE plugin_audit_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, request_id TEXT NOT NULL, actor TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_diagnostic_events\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE TABLE plugin_diagnostic_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, severity TEXT NOT NULL, message TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, request_id TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_meta\",\n              \"table_name\": \"plugin_observability_meta\",\n              \"sql\": \"CREATE TABLE plugin_observability_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), audit_seq INTEGER NOT NULL, diagnostic_seq INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_schema_migrations\",\n              \"table_name\": \"plugin_observability_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_observability_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"00e4363c85aaab3cb78d9b357e835490f82975233ee44643a3e238d337da4784\"\n        },\n        {\n          \"path\": \"db/operations.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_operation_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_plugin_instance\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_plugin_instance ON plugin_operations(plugin_instance_id, created_at, operation_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_status\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_status ON plugin_operations(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operation_schema_migrations\",\n              \"table_name\": \"plugin_operation_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_operation_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operations\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE TABLE plugin_operations ( operation_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, status TEXT NOT NULL, disable_behavior TEXT NOT NULL, uninstall_behavior TEXT NOT NULL, reason TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, cancel_requested_at INTEGER, orphaned_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"6b89150e03769f618c994f6906f4b588cfaf95159bfd111bd44cfde37b7ff681\"\n        },\n        {\n          \"path\": \"db/permissions.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_permission_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_plugin\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_plugin ON plugin_permission_grants(plugin_instance_id, permission_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_revoked\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_revoked ON plugin_permission_grants(plugin_instance_id, revoked_at, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_grants\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE TABLE plugin_permission_grants ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, effect TEXT NOT NULL, granted_by TEXT NOT NULL, granted_at INTEGER NOT NULL, expires_at INTEGER, revoked_at INTEGER, revoked_by TEXT NOT NULL, revoked_reason TEXT NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_schema_migrations\",\n              \"table_name\": \"plugin_permission_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_permission_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"d0b89affc5139c3ae28f0bd178094ceef0046f25b9b27f9b4e1b231624436f46\"\n        },\n        {\n          \"path\": \"db/registry.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 1,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_registry_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_deleted_at\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_deleted_at ON plugin_records(deleted_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_plugin_id\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_plugin_id ON plugin_records(plugin_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_records\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE TABLE plugin_records ( plugin_instance_id TEXT PRIMARY KEY, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, active_fingerprint TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, trust_state TEXT NOT NULL, enable_state TEXT NOT NULL, disabled_reason TEXT NOT NULL, retained_data_state TEXT NOT NULL, policy_revision INTEGER NOT NULL, management_revision INTEGER NOT NULL, revoke_epoch INTEGER NOT NULL, manifest_json TEXT NOT NULL, package_entries_json TEXT NOT NULL, version_history_json TEXT NOT NULL, installed_at INTEGER NOT NULL, enabled_at INTEGER, updated_at INTEGER NOT NULL, deleted_at INTEGER, metadata_json TEXT NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_registry_schema_migrations\",\n              \"table_name\": \"plugin_registry_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_registry_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"70b12092bd87a03c8506b174f3a4528ef74a5f953f813b1829b586cdef108cda\"\n        },\n        {\n          \"path\": \"db/retained_data.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_retained_data_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_expiry\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_expiry ON plugin_retained_data_records(state, delete_after)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_identity\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_identity ON plugin_retained_data_records(publisher_id, plugin_id, state)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_source\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_source ON plugin_retained_data_records(source_plugin_instance_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_records\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_records ( retained_id TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, bound_plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, state TEXT NOT NULL, storage_retained INTEGER NOT NULL, settings_retained INTEGER NOT NULL, browser_site_retained INTEGER NOT NULL, usage_bytes INTEGER NOT NULL, delete_after INTEGER, delete_error TEXT NOT NULL, metadata_json TEXT NOT NULL, retained_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, bound_at INTEGER, deleted_at INTEGER, last_accessed_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_schema_migrations\",\n              \"table_name\": \"plugin_retained_data_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"1cdb02a3c5cb5870aadd332de06582df4fcddad098a0b731271beddbc38237b7\"\n        },\n        {\n          \"path\": \"db/secrets.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_secret_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_secret_bindings_plugin\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE INDEX idx_plugin_secret_bindings_plugin ON plugin_secret_bindings(plugin_instance_id, bound, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_bindings\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE TABLE plugin_secret_bindings ( plugin_instance_id TEXT NOT NULL, secret_ref TEXT NOT NULL, scope TEXT NOT NULL, bound INTEGER NOT NULL, last_test_status TEXT NOT NULL, bound_at INTEGER, tested_at INTEGER, deleted_at INTEGER, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, scope, secret_ref) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_schema_migrations\",\n              \"table_name\": \"plugin_secret_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_secret_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"82a9d6ab404b4d3dc485ef1ea9c95530af4460a48506e47ced81953c4b12dd50\"\n        },\n        {\n          \"path\": \"db/security_policy.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_security_policy_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policies\",\n              \"table_name\": \"plugin_security_policies\",\n              \"sql\": \"CREATE TABLE plugin_security_policies ( plugin_instance_id TEXT PRIMARY KEY, updated_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_allowed_permissions\",\n              \"table_name\": \"plugin_security_policy_allowed_permissions\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_allowed_permissions ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_denied_methods\",\n              \"table_name\": \"plugin_security_policy_denied_methods\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_denied_methods ( plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, method), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_schema_migrations\",\n              \"table_name\": \"plugin_security_policy_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"8718fac16ca2cf37e84edd53f6d1c646f2d42e028af2dcc7aee05bdd9bc22dd6\"\n        },\n        {\n          \"path\": \"db/settings.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_settings_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_archives_source\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_archives_source ON plugin_settings_archives(source_plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_records_state\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_records_state ON plugin_settings_records(state, retained_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_archives\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE TABLE plugin_settings_archives ( archive_ref TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, include_secrets INTEGER NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_meta\",\n              \"table_name\": \"plugin_settings_meta\",\n              \"sql\": \"CREATE TABLE plugin_settings_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), next_export INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_records\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE TABLE plugin_settings_records ( plugin_instance_id TEXT PRIMARY KEY, state TEXT NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, updated_at INTEGER NOT NULL, retained_at INTEGER, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_schema_migrations\",\n              \"table_name\": \"plugin_settings_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_settings_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dba0083a1fa88135d6ab50cd0176063688134e684577563022200906a0d5702a\"\n        },\n        {\n          \"path\": \"db/streams.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_stream_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_stream_events_stream_sequence\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_stream_events_stream_sequence ON plugin_stream_events(stream_id, sequence)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_plugin_instance\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_plugin_instance ON plugin_streams(plugin_instance_id, created_at, stream_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_status\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_status ON plugin_streams(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_events\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE TABLE plugin_stream_events ( stream_id TEXT NOT NULL, sequence INTEGER NOT NULL, kind TEXT NOT NULL, data BLOB, error TEXT NOT NULL, at INTEGER NOT NULL, PRIMARY KEY(stream_id, sequence), FOREIGN KEY(stream_id) REFERENCES plugin_streams(stream_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_schema_migrations\",\n              \"table_name\": \"plugin_stream_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_stream_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_streams\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE TABLE plugin_streams ( stream_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, direction TEXT NOT NULL, status TEXT NOT NULL, content_type TEXT NOT NULL, max_buffered_bytes INTEGER NOT NULL, buffered_bytes INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, closed_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"7d2200868c7bd271be8a78cd42aea861bdc2fe46dbc714b08bb4d6251c7510d9\"\n        }\n      ],\n      \"tree_rules\": {\n        \"allowed_kinds\": [\n          \"directory\",\n          \"file\"\n        ],\n        \"allow_sqlite_wal_shm\": true,\n        \"reject_hardlinks\": true,\n        \"reject_symlinks\": true,\n        \"variable_trees\": [\n          \"assets\",\n          \"storage\"\n        ]\n      }\n    },\n    {\n      \"id\": \"redeven-redevplugin-v0.1.6-layout-v1\",\n      \"platform_versions\": [\n        \"0.1.6\"\n      ],\n      \"root_entries\": [\n        {\n          \"path\": \"assets\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"db\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"storage\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        }\n      ],\n      \"sqlite_databases\": [\n        {\n          \"path\": \"db/browser_site.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_browser_site_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_browser_site_plugin_instance\",\n              \"table_name\": \"plugin_browser_site_origins\",\n              \"sql\": \"CREATE INDEX idx_plugin_browser_site_plugin_instance ON plugin_browser_site_origins(plugin_instance_id, state, origin)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_browser_site_state\",\n              \"table_name\": \"plugin_browser_site_origins\",\n              \"sql\": \"CREATE INDEX idx_plugin_browser_site_state ON plugin_browser_site_origins(state, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_browser_site_origins\",\n              \"table_name\": \"plugin_browser_site_origins\",\n              \"sql\": \"CREATE TABLE plugin_browser_site_origins ( origin_key TEXT PRIMARY KEY, plugin_instance_id TEXT NOT NULL, plugin_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, origin TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, state TEXT NOT NULL, cleanup_reason TEXT NOT NULL, cleanup_error TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, last_seen_at INTEGER NOT NULL, cleanup_requested_at INTEGER, cleaned_at INTEGER, retained_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_browser_site_schema_migrations\",\n              \"table_name\": \"plugin_browser_site_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_browser_site_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"a7767aacbc70799ee6f847077e27727cac70ae2fdbb84cae2e0fae2d9ab5bffa\"\n        },\n        {\n          \"path\": \"db/cleanup.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_cleanup_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_cleanup_operations_plugin\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_cleanup_operations_plugin ON plugin_cleanup_operations(plugin_instance_id, id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_operations\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_operations ( id INTEGER PRIMARY KEY AUTOINCREMENT, plugin_instance_id TEXT NOT NULL, delete_data INTEGER NOT NULL, phase TEXT NOT NULL, executed_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_schema_migrations\",\n              \"table_name\": \"plugin_cleanup_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"492e855ac577c347fd5c4a916b4be060d08e9703d9deec197bcb1a75a0de9dcc\"\n        },\n        {\n          \"path\": \"db/confirmation_intents.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_confirmation_intent_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_expires_at\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_expires_at ON plugin_confirmation_intents(expires_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_plugin_instance\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_plugin_instance ON plugin_confirmation_intents(plugin_instance_id, issued_at, confirmation_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"table_name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intent_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intents\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intents ( confirmation_id TEXT PRIMARY KEY, confirmation_token_id TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, method TEXT NOT NULL, request_hash TEXT NOT NULL, plan_hash TEXT NOT NULL, issued_at INTEGER NOT NULL, expires_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dac56fde008efc7d6a21154c5bfbbd43183a8411e0fad20946e88a7550287781\"\n        },\n        {\n          \"path\": \"db/install_stage.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_install_stage_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_plugin\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_plugin ON plugin_install_stages(plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_status_expiry\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_status_expiry ON plugin_install_stages(status, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stage_schema_migrations\",\n              \"table_name\": \"plugin_install_stage_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_install_stage_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stages\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE TABLE plugin_install_stages ( stage_id TEXT PRIMARY KEY, action TEXT NOT NULL, status TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, requested_trust TEXT NOT NULL, resolved_trust TEXT NOT NULL, validation_summary_json TEXT NOT NULL, error_code TEXT NOT NULL, error_message TEXT NOT NULL, expires_at INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, finished_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"ee0192641f33bba6c7fc5994d73e2a64e77c129406bd3c2ccfc840780c3cef6a\"\n        },\n        {\n          \"path\": \"db/observability.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_observability_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin ON plugin_audit_events(plugin_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin_instance\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin_instance ON plugin_audit_events(plugin_instance_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_plugin_instance\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_plugin_instance ON plugin_diagnostic_events(plugin_instance_id, type, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_surface\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_surface ON plugin_diagnostic_events(surface_instance_id, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_audit_events\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE TABLE plugin_audit_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, request_id TEXT NOT NULL, actor TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_diagnostic_events\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE TABLE plugin_diagnostic_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, severity TEXT NOT NULL, message TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, request_id TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_meta\",\n              \"table_name\": \"plugin_observability_meta\",\n              \"sql\": \"CREATE TABLE plugin_observability_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), audit_seq INTEGER NOT NULL, diagnostic_seq INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_schema_migrations\",\n              \"table_name\": \"plugin_observability_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_observability_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"00e4363c85aaab3cb78d9b357e835490f82975233ee44643a3e238d337da4784\"\n        },\n        {\n          \"path\": \"db/operations.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_operation_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_plugin_instance\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_plugin_instance ON plugin_operations(plugin_instance_id, created_at, operation_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_status\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_status ON plugin_operations(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operation_schema_migrations\",\n              \"table_name\": \"plugin_operation_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_operation_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operations\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE TABLE plugin_operations ( operation_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, status TEXT NOT NULL, disable_behavior TEXT NOT NULL, uninstall_behavior TEXT NOT NULL, reason TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, cancel_requested_at INTEGER, orphaned_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"6b89150e03769f618c994f6906f4b588cfaf95159bfd111bd44cfde37b7ff681\"\n        },\n        {\n          \"path\": \"db/permissions.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_permission_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_plugin\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_plugin ON plugin_permission_grants(plugin_instance_id, permission_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_revoked\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_revoked ON plugin_permission_grants(plugin_instance_id, revoked_at, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_grants\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE TABLE plugin_permission_grants ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, effect TEXT NOT NULL, granted_by TEXT NOT NULL, granted_at INTEGER NOT NULL, expires_at INTEGER, revoked_at INTEGER, revoked_by TEXT NOT NULL, revoked_reason TEXT NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_schema_migrations\",\n              \"table_name\": \"plugin_permission_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_permission_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"d0b89affc5139c3ae28f0bd178094ceef0046f25b9b27f9b4e1b231624436f46\"\n        },\n        {\n          \"path\": \"db/registry.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 5,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_registry_schema_migrations\",\n              \"versions\": [\n                1,\n                2,\n                3,\n                4,\n                5\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_deleted_at\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_deleted_at ON plugin_records(deleted_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_plugin_id\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_plugin_id ON plugin_records(plugin_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_records\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE TABLE plugin_records ( plugin_instance_id TEXT PRIMARY KEY, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, active_fingerprint TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, trust_state TEXT NOT NULL, trust_assessment_json TEXT NOT NULL DEFAULT '{}', source_policy_snapshot_hash TEXT NOT NULL DEFAULT '', source_policy_snapshot_json TEXT NOT NULL DEFAULT '{}', local_import_provenance_json TEXT NOT NULL DEFAULT '{}', enable_state TEXT NOT NULL, disabled_reason TEXT NOT NULL, retained_data_state TEXT NOT NULL, policy_revision INTEGER NOT NULL, management_revision INTEGER NOT NULL, revoke_epoch INTEGER NOT NULL, manifest_json TEXT NOT NULL, package_entries_json TEXT NOT NULL, version_history_json TEXT NOT NULL, installed_at INTEGER NOT NULL, enabled_at INTEGER, updated_at INTEGER NOT NULL, deleted_at INTEGER, metadata_json TEXT NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_registry_schema_migrations\",\n              \"table_name\": \"plugin_registry_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_registry_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_source_security_floors\",\n              \"table_name\": \"plugin_source_security_floors\",\n              \"sql\": \"CREATE TABLE plugin_source_security_floors ( source_id TEXT PRIMARY KEY, policy_epoch TEXT NOT NULL, key_rotation_epoch TEXT NOT NULL, revocation_epoch TEXT NOT NULL, source_policy_snapshot_hash TEXT NOT NULL, revocation_metadata_sha256 TEXT NOT NULL, updated_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"e04fe43561aa4e42626060f74912c0fae5dca60a23f32b95e2c219a37b722a3f\"\n        },\n        {\n          \"path\": \"db/retained_data.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_retained_data_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_expiry\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_expiry ON plugin_retained_data_records(state, delete_after)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_identity\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_identity ON plugin_retained_data_records(publisher_id, plugin_id, state)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_source\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_source ON plugin_retained_data_records(source_plugin_instance_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_records\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_records ( retained_id TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, bound_plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, state TEXT NOT NULL, storage_retained INTEGER NOT NULL, settings_retained INTEGER NOT NULL, browser_site_retained INTEGER NOT NULL, usage_bytes INTEGER NOT NULL, delete_after INTEGER, delete_error TEXT NOT NULL, metadata_json TEXT NOT NULL, retained_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, bound_at INTEGER, deleted_at INTEGER, last_accessed_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_schema_migrations\",\n              \"table_name\": \"plugin_retained_data_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"1cdb02a3c5cb5870aadd332de06582df4fcddad098a0b731271beddbc38237b7\"\n        },\n        {\n          \"path\": \"db/secrets.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_secret_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_secret_bindings_plugin\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE INDEX idx_plugin_secret_bindings_plugin ON plugin_secret_bindings(plugin_instance_id, bound, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_bindings\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE TABLE plugin_secret_bindings ( plugin_instance_id TEXT NOT NULL, secret_ref TEXT NOT NULL, scope TEXT NOT NULL, bound INTEGER NOT NULL, last_test_status TEXT NOT NULL, bound_at INTEGER, tested_at INTEGER, deleted_at INTEGER, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, scope, secret_ref) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_schema_migrations\",\n              \"table_name\": \"plugin_secret_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_secret_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"82a9d6ab404b4d3dc485ef1ea9c95530af4460a48506e47ced81953c4b12dd50\"\n        },\n        {\n          \"path\": \"db/security_policy.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_security_policy_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policies\",\n              \"table_name\": \"plugin_security_policies\",\n              \"sql\": \"CREATE TABLE plugin_security_policies ( plugin_instance_id TEXT PRIMARY KEY, updated_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_allowed_permissions\",\n              \"table_name\": \"plugin_security_policy_allowed_permissions\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_allowed_permissions ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_denied_methods\",\n              \"table_name\": \"plugin_security_policy_denied_methods\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_denied_methods ( plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, method), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_schema_migrations\",\n              \"table_name\": \"plugin_security_policy_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"8718fac16ca2cf37e84edd53f6d1c646f2d42e028af2dcc7aee05bdd9bc22dd6\"\n        },\n        {\n          \"path\": \"db/settings.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_settings_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_archives_source\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_archives_source ON plugin_settings_archives(source_plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_records_state\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_records_state ON plugin_settings_records(state, retained_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_archives\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE TABLE plugin_settings_archives ( archive_ref TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, include_secrets INTEGER NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_meta\",\n              \"table_name\": \"plugin_settings_meta\",\n              \"sql\": \"CREATE TABLE plugin_settings_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), next_export INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_records\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE TABLE plugin_settings_records ( plugin_instance_id TEXT PRIMARY KEY, state TEXT NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, updated_at INTEGER NOT NULL, retained_at INTEGER, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_schema_migrations\",\n              \"table_name\": \"plugin_settings_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_settings_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dba0083a1fa88135d6ab50cd0176063688134e684577563022200906a0d5702a\"\n        },\n        {\n          \"path\": \"db/streams.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_stream_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_stream_events_stream_sequence\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_stream_events_stream_sequence ON plugin_stream_events(stream_id, sequence)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_plugin_instance\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_plugin_instance ON plugin_streams(plugin_instance_id, created_at, stream_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_status\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_status ON plugin_streams(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_events\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE TABLE plugin_stream_events ( stream_id TEXT NOT NULL, sequence INTEGER NOT NULL, kind TEXT NOT NULL, data BLOB, error TEXT NOT NULL, at INTEGER NOT NULL, PRIMARY KEY(stream_id, sequence), FOREIGN KEY(stream_id) REFERENCES plugin_streams(stream_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_schema_migrations\",\n              \"table_name\": \"plugin_stream_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_stream_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_streams\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE TABLE plugin_streams ( stream_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, direction TEXT NOT NULL, status TEXT NOT NULL, content_type TEXT NOT NULL, max_buffered_bytes INTEGER NOT NULL, buffered_bytes INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, closed_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"7d2200868c7bd271be8a78cd42aea861bdc2fe46dbc714b08bb4d6251c7510d9\"\n        }\n      ],\n      \"tree_rules\": {\n        \"allowed_kinds\": [\n          \"directory\",\n          \"file\"\n        ],\n        \"allow_sqlite_wal_shm\": true,\n        \"reject_hardlinks\": true,\n        \"reject_symlinks\": true,\n        \"variable_trees\": [\n          \"assets\",\n          \"storage\"\n        ]\n      }\n    },\n    {\n      \"id\": \"redeven-redevplugin-v0.2.x-layout-v1\",\n      \"platform_versions\": [\n        \"0.2.0\",\n        \"0.2.1\",\n        \"0.2.2\"\n      ],\n      \"root_entries\": [\n        {\n          \"path\": \"assets\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"db\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"storage\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        }\n      ],\n      \"sqlite_databases\": [\n        {\n          \"path\": \"db/cleanup.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_cleanup_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_cleanup_operations_plugin\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_cleanup_operations_plugin ON plugin_cleanup_operations(plugin_instance_id, id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_operations\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_operations ( id INTEGER PRIMARY KEY AUTOINCREMENT, plugin_instance_id TEXT NOT NULL, delete_data INTEGER NOT NULL, phase TEXT NOT NULL, executed_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_schema_migrations\",\n              \"table_name\": \"plugin_cleanup_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"492e855ac577c347fd5c4a916b4be060d08e9703d9deec197bcb1a75a0de9dcc\"\n        },\n        {\n          \"path\": \"db/confirmation_intents.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_confirmation_intent_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_expires_at\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_expires_at ON plugin_confirmation_intents(expires_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_plugin_instance\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_plugin_instance ON plugin_confirmation_intents(plugin_instance_id, issued_at, confirmation_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"table_name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intent_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intents\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intents ( confirmation_id TEXT PRIMARY KEY, confirmation_token_id TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, method TEXT NOT NULL, request_hash TEXT NOT NULL, plan_hash TEXT NOT NULL, issued_at INTEGER NOT NULL, expires_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dac56fde008efc7d6a21154c5bfbbd43183a8411e0fad20946e88a7550287781\"\n        },\n        {\n          \"path\": \"db/install_stage.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_install_stage_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_plugin\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_plugin ON plugin_install_stages(plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_status_expiry\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_status_expiry ON plugin_install_stages(status, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stage_schema_migrations\",\n              \"table_name\": \"plugin_install_stage_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_install_stage_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stages\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE TABLE plugin_install_stages ( stage_id TEXT PRIMARY KEY, action TEXT NOT NULL, status TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, requested_trust TEXT NOT NULL, resolved_trust TEXT NOT NULL, validation_summary_json TEXT NOT NULL, error_code TEXT NOT NULL, error_message TEXT NOT NULL, expires_at INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, finished_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"ee0192641f33bba6c7fc5994d73e2a64e77c129406bd3c2ccfc840780c3cef6a\"\n        },\n        {\n          \"path\": \"db/observability.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_observability_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin ON plugin_audit_events(plugin_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin_instance\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin_instance ON plugin_audit_events(plugin_instance_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_plugin_instance\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_plugin_instance ON plugin_diagnostic_events(plugin_instance_id, type, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_surface\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_surface ON plugin_diagnostic_events(surface_instance_id, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_audit_events\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE TABLE plugin_audit_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, request_id TEXT NOT NULL, actor TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_diagnostic_events\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE TABLE plugin_diagnostic_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, severity TEXT NOT NULL, message TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, request_id TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_meta\",\n              \"table_name\": \"plugin_observability_meta\",\n              \"sql\": \"CREATE TABLE plugin_observability_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), audit_seq INTEGER NOT NULL, diagnostic_seq INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_schema_migrations\",\n              \"table_name\": \"plugin_observability_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_observability_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"00e4363c85aaab3cb78d9b357e835490f82975233ee44643a3e238d337da4784\"\n        },\n        {\n          \"path\": \"db/operations.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_operation_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_plugin_instance\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_plugin_instance ON plugin_operations(plugin_instance_id, created_at, operation_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_status\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_status ON plugin_operations(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operation_schema_migrations\",\n              \"table_name\": \"plugin_operation_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_operation_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operations\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE TABLE plugin_operations ( operation_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, status TEXT NOT NULL, disable_behavior TEXT NOT NULL, uninstall_behavior TEXT NOT NULL, reason TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, cancel_requested_at INTEGER, orphaned_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"6b89150e03769f618c994f6906f4b588cfaf95159bfd111bd44cfde37b7ff681\"\n        },\n        {\n          \"path\": \"db/permissions.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_permission_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_plugin\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_plugin ON plugin_permission_grants(plugin_instance_id, permission_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_revoked\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_revoked ON plugin_permission_grants(plugin_instance_id, revoked_at, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_grants\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE TABLE plugin_permission_grants ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, effect TEXT NOT NULL, granted_by TEXT NOT NULL, granted_at INTEGER NOT NULL, expires_at INTEGER, revoked_at INTEGER, revoked_by TEXT NOT NULL, revoked_reason TEXT NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_schema_migrations\",\n              \"table_name\": \"plugin_permission_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_permission_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"d0b89affc5139c3ae28f0bd178094ceef0046f25b9b27f9b4e1b231624436f46\"\n        },\n        {\n          \"path\": \"db/registry.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 5,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_registry_schema_migrations\",\n              \"versions\": [\n                1,\n                2,\n                3,\n                4,\n                5\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_deleted_at\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_deleted_at ON plugin_records(deleted_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_plugin_id\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_plugin_id ON plugin_records(plugin_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_records\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE TABLE plugin_records ( plugin_instance_id TEXT PRIMARY KEY, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, active_fingerprint TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, trust_state TEXT NOT NULL, trust_assessment_json TEXT NOT NULL DEFAULT '{}', source_policy_snapshot_hash TEXT NOT NULL DEFAULT '', source_policy_snapshot_json TEXT NOT NULL DEFAULT '{}', local_import_provenance_json TEXT NOT NULL DEFAULT '{}', enable_state TEXT NOT NULL, disabled_reason TEXT NOT NULL, retained_data_state TEXT NOT NULL, policy_revision INTEGER NOT NULL, management_revision INTEGER NOT NULL, revoke_epoch INTEGER NOT NULL, manifest_json TEXT NOT NULL, package_entries_json TEXT NOT NULL, version_history_json TEXT NOT NULL, installed_at INTEGER NOT NULL, enabled_at INTEGER, updated_at INTEGER NOT NULL, deleted_at INTEGER, metadata_json TEXT NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_registry_schema_migrations\",\n              \"table_name\": \"plugin_registry_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_registry_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_source_security_floors\",\n              \"table_name\": \"plugin_source_security_floors\",\n              \"sql\": \"CREATE TABLE plugin_source_security_floors ( source_id TEXT PRIMARY KEY, policy_epoch TEXT NOT NULL, key_rotation_epoch TEXT NOT NULL, revocation_epoch TEXT NOT NULL, source_policy_snapshot_hash TEXT NOT NULL, revocation_metadata_sha256 TEXT NOT NULL, updated_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"e04fe43561aa4e42626060f74912c0fae5dca60a23f32b95e2c219a37b722a3f\"\n        },\n        {\n          \"path\": \"db/retained_data.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_retained_data_schema_migrations\",\n              \"versions\": [\n                2\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_expiry\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_expiry ON plugin_retained_data_records(state, delete_after)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_identity\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_identity ON plugin_retained_data_records(publisher_id, plugin_id, state)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_source\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_source ON plugin_retained_data_records(source_plugin_instance_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_records\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_records ( retained_id TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, bound_plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, state TEXT NOT NULL, storage_retained INTEGER NOT NULL, settings_retained INTEGER NOT NULL, usage_bytes INTEGER NOT NULL, delete_after INTEGER, delete_error TEXT NOT NULL, metadata_json TEXT NOT NULL, retained_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, bound_at INTEGER, deleted_at INTEGER, last_accessed_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_schema_migrations\",\n              \"table_name\": \"plugin_retained_data_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"b89b7188f7e7d96827750396b1fbf807b607695d342e87a5d5c5aefb832cb1d6\"\n        },\n        {\n          \"path\": \"db/secrets.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_secret_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_secret_bindings_plugin\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE INDEX idx_plugin_secret_bindings_plugin ON plugin_secret_bindings(plugin_instance_id, bound, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_bindings\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE TABLE plugin_secret_bindings ( plugin_instance_id TEXT NOT NULL, secret_ref TEXT NOT NULL, scope TEXT NOT NULL, bound INTEGER NOT NULL, last_test_status TEXT NOT NULL, bound_at INTEGER, tested_at INTEGER, deleted_at INTEGER, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, scope, secret_ref) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_schema_migrations\",\n              \"table_name\": \"plugin_secret_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_secret_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"82a9d6ab404b4d3dc485ef1ea9c95530af4460a48506e47ced81953c4b12dd50\"\n        },\n        {\n          \"path\": \"db/security_policy.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_security_policy_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policies\",\n              \"table_name\": \"plugin_security_policies\",\n              \"sql\": \"CREATE TABLE plugin_security_policies ( plugin_instance_id TEXT PRIMARY KEY, updated_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_allowed_permissions\",\n              \"table_name\": \"plugin_security_policy_allowed_permissions\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_allowed_permissions ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_denied_methods\",\n              \"table_name\": \"plugin_security_policy_denied_methods\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_denied_methods ( plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, method), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_schema_migrations\",\n              \"table_name\": \"plugin_security_policy_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"8718fac16ca2cf37e84edd53f6d1c646f2d42e028af2dcc7aee05bdd9bc22dd6\"\n        },\n        {\n          \"path\": \"db/settings.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_settings_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_archives_source\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_archives_source ON plugin_settings_archives(source_plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_records_state\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_records_state ON plugin_settings_records(state, retained_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_archives\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE TABLE plugin_settings_archives ( archive_ref TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, include_secrets INTEGER NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_meta\",\n              \"table_name\": \"plugin_settings_meta\",\n              \"sql\": \"CREATE TABLE plugin_settings_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), next_export INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_records\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE TABLE plugin_settings_records ( plugin_instance_id TEXT PRIMARY KEY, state TEXT NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, updated_at INTEGER NOT NULL, retained_at INTEGER, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_schema_migrations\",\n              \"table_name\": \"plugin_settings_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_settings_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dba0083a1fa88135d6ab50cd0176063688134e684577563022200906a0d5702a\"\n        },\n        {\n          \"path\": \"db/streams.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_stream_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_stream_events_stream_sequence\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_stream_events_stream_sequence ON plugin_stream_events(stream_id, sequence)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_plugin_instance\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_plugin_instance ON plugin_streams(plugin_instance_id, created_at, stream_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_status\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_status ON plugin_streams(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_events\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE TABLE plugin_stream_events ( stream_id TEXT NOT NULL, sequence INTEGER NOT NULL, kind TEXT NOT NULL, data BLOB, error TEXT NOT NULL, at INTEGER NOT NULL, PRIMARY KEY(stream_id, sequence), FOREIGN KEY(stream_id) REFERENCES plugin_streams(stream_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_schema_migrations\",\n              \"table_name\": \"plugin_stream_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_stream_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_streams\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE TABLE plugin_streams ( stream_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, direction TEXT NOT NULL, status TEXT NOT NULL, content_type TEXT NOT NULL, max_buffered_bytes INTEGER NOT NULL, buffered_bytes INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, closed_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"7d2200868c7bd271be8a78cd42aea861bdc2fe46dbc714b08bb4d6251c7510d9\"\n        }\n      ],\n      \"tree_rules\": {\n        \"allowed_kinds\": [\n          \"directory\",\n          \"file\"\n        ],\n        \"allow_sqlite_wal_shm\": true,\n        \"reject_hardlinks\": true,\n        \"reject_symlinks\": true,\n        \"variable_trees\": [\n          \"assets\",\n          \"storage\"\n        ]\n      }\n    },\n    {\n      \"id\": \"redeven-redevplugin-v0.3.x-v0.4.x-layout-v1\",\n      \"platform_versions\": [\n        \"0.3.0\",\n        \"0.3.1\",\n        \"0.3.2\",\n        \"0.4.0\",\n        \"0.4.1\",\n        \"0.4.2\",\n        \"0.4.3\"\n      ],\n      \"root_entries\": [\n        {\n          \"path\": \"assets\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"db\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"storage\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        }\n      ],\n      \"sqlite_databases\": [\n        {\n          \"path\": \"db/cleanup.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_cleanup_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_cleanup_operations_plugin\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_cleanup_operations_plugin ON plugin_cleanup_operations(plugin_instance_id, id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_operations\",\n              \"table_name\": \"plugin_cleanup_operations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_operations ( id INTEGER PRIMARY KEY AUTOINCREMENT, plugin_instance_id TEXT NOT NULL, delete_data INTEGER NOT NULL, phase TEXT NOT NULL, executed_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_cleanup_schema_migrations\",\n              \"table_name\": \"plugin_cleanup_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_cleanup_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"492e855ac577c347fd5c4a916b4be060d08e9703d9deec197bcb1a75a0de9dcc\"\n        },\n        {\n          \"path\": \"db/confirmation_intents.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_confirmation_intent_schema_migrations\",\n              \"versions\": [\n                2\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_expires_at\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_expires_at ON plugin_confirmation_intents(expires_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_plugin_instance\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_plugin_instance ON plugin_confirmation_intents(plugin_instance_id, issued_at, confirmation_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"table_name\": \"plugin_confirmation_intent_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intent_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intents\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intents ( confirmation_id TEXT PRIMARY KEY, confirmation_token_id TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, method TEXT NOT NULL, request_hash TEXT NOT NULL, plan_hash TEXT NOT NULL, scope_json TEXT NOT NULL DEFAULT '{}', issued_at INTEGER NOT NULL, expires_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dcf763fdc6333835180e6f38565d3d07b8b769100cdcfbec265d1a3d474ab479\"\n        },\n        {\n          \"path\": \"db/install_stage.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_install_stage_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_plugin\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_plugin ON plugin_install_stages(plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_status_expiry\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_status_expiry ON plugin_install_stages(status, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stage_schema_migrations\",\n              \"table_name\": \"plugin_install_stage_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_install_stage_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stages\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE TABLE plugin_install_stages ( stage_id TEXT PRIMARY KEY, action TEXT NOT NULL, status TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, requested_trust TEXT NOT NULL, resolved_trust TEXT NOT NULL, validation_summary_json TEXT NOT NULL, error_code TEXT NOT NULL, error_message TEXT NOT NULL, expires_at INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, finished_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"ee0192641f33bba6c7fc5994d73e2a64e77c129406bd3c2ccfc840780c3cef6a\"\n        },\n        {\n          \"path\": \"db/observability.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_observability_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin ON plugin_audit_events(plugin_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_plugin_instance\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_audit_plugin_instance ON plugin_audit_events(plugin_instance_id, type, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_plugin_instance\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_plugin_instance ON plugin_diagnostic_events(plugin_instance_id, type, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_surface\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_surface ON plugin_diagnostic_events(surface_instance_id, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_audit_events\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE TABLE plugin_audit_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, request_id TEXT NOT NULL, actor TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_diagnostic_events\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE TABLE plugin_diagnostic_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, severity TEXT NOT NULL, message TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, request_id TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_meta\",\n              \"table_name\": \"plugin_observability_meta\",\n              \"sql\": \"CREATE TABLE plugin_observability_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), audit_seq INTEGER NOT NULL, diagnostic_seq INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_schema_migrations\",\n              \"table_name\": \"plugin_observability_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_observability_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"00e4363c85aaab3cb78d9b357e835490f82975233ee44643a3e238d337da4784\"\n        },\n        {\n          \"path\": \"db/operations.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_operation_schema_migrations\",\n              \"versions\": [\n                2,\n                3\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_plugin_instance\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_plugin_instance ON plugin_operations(plugin_instance_id, created_at, operation_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_status\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_status ON plugin_operations(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operation_schema_migrations\",\n              \"table_name\": \"plugin_operation_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_operation_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operations\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE TABLE plugin_operations ( operation_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, execution_binding_json TEXT NOT NULL DEFAULT '{}', status TEXT NOT NULL, cancelable INTEGER NOT NULL DEFAULT 1, cancel_ack_timeout_ms INTEGER NOT NULL DEFAULT 0, disable_behavior TEXT NOT NULL, uninstall_behavior TEXT NOT NULL, reason TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, cancel_requested_at INTEGER, orphaned_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"7d5d2e372f7a8ded7678f87bbc115d4c2b69d07de7b8b6eb929bad94b516ac1c\"\n        },\n        {\n          \"path\": \"db/permissions.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_permission_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_plugin\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_plugin ON plugin_permission_grants(plugin_instance_id, permission_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_permission_grants_revoked\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE INDEX idx_plugin_permission_grants_revoked ON plugin_permission_grants(plugin_instance_id, revoked_at, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_grants\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE TABLE plugin_permission_grants ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, effect TEXT NOT NULL, granted_by TEXT NOT NULL, granted_at INTEGER NOT NULL, expires_at INTEGER, revoked_at INTEGER, revoked_by TEXT NOT NULL, revoked_reason TEXT NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_schema_migrations\",\n              \"table_name\": \"plugin_permission_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_permission_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"d0b89affc5139c3ae28f0bd178094ceef0046f25b9b27f9b4e1b231624436f46\"\n        },\n        {\n          \"path\": \"db/registry.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 6,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_registry_schema_migrations\",\n              \"versions\": [\n                1,\n                2,\n                3,\n                4,\n                5,\n                6\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_deleted_at\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_deleted_at ON plugin_records(deleted_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_plugin_id\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_plugin_id ON plugin_records(plugin_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_records\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE TABLE plugin_records ( plugin_instance_id TEXT PRIMARY KEY, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, active_fingerprint TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, trust_state TEXT NOT NULL, trust_assessment_json TEXT NOT NULL DEFAULT '{}', source_policy_snapshot_hash TEXT NOT NULL DEFAULT '', source_policy_snapshot_json TEXT NOT NULL DEFAULT '{}', local_import_provenance_json TEXT NOT NULL DEFAULT '{}', capability_contracts_json TEXT NOT NULL DEFAULT '[]', enable_state TEXT NOT NULL, disabled_reason TEXT NOT NULL, retained_data_state TEXT NOT NULL, policy_revision INTEGER NOT NULL, management_revision INTEGER NOT NULL, revoke_epoch INTEGER NOT NULL, manifest_json TEXT NOT NULL, package_entries_json TEXT NOT NULL, version_history_json TEXT NOT NULL, installed_at INTEGER NOT NULL, enabled_at INTEGER, updated_at INTEGER NOT NULL, deleted_at INTEGER, metadata_json TEXT NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_registry_schema_migrations\",\n              \"table_name\": \"plugin_registry_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_registry_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_source_security_floors\",\n              \"table_name\": \"plugin_source_security_floors\",\n              \"sql\": \"CREATE TABLE plugin_source_security_floors ( source_id TEXT PRIMARY KEY, policy_epoch TEXT NOT NULL, key_rotation_epoch TEXT NOT NULL, revocation_epoch TEXT NOT NULL, source_policy_snapshot_hash TEXT NOT NULL, revocation_metadata_sha256 TEXT NOT NULL, updated_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"84f9a634f65a3efa7c3bc42b2625e77a26d854153f6d9ae6031f7b172a430b1e\"\n        },\n        {\n          \"path\": \"db/retained_data.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_retained_data_schema_migrations\",\n              \"versions\": [\n                2\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_expiry\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_expiry ON plugin_retained_data_records(state, delete_after)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_identity\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_identity ON plugin_retained_data_records(publisher_id, plugin_id, state)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_retained_data_source\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_retained_data_source ON plugin_retained_data_records(source_plugin_instance_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_records\",\n              \"table_name\": \"plugin_retained_data_records\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_records ( retained_id TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, bound_plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, state TEXT NOT NULL, storage_retained INTEGER NOT NULL, settings_retained INTEGER NOT NULL, usage_bytes INTEGER NOT NULL, delete_after INTEGER, delete_error TEXT NOT NULL, metadata_json TEXT NOT NULL, retained_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, bound_at INTEGER, deleted_at INTEGER, last_accessed_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_retained_data_schema_migrations\",\n              \"table_name\": \"plugin_retained_data_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_retained_data_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"b89b7188f7e7d96827750396b1fbf807b607695d342e87a5d5c5aefb832cb1d6\"\n        },\n        {\n          \"path\": \"db/secrets.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_secret_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_secret_bindings_plugin\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE INDEX idx_plugin_secret_bindings_plugin ON plugin_secret_bindings(plugin_instance_id, bound, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_bindings\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE TABLE plugin_secret_bindings ( plugin_instance_id TEXT NOT NULL, secret_ref TEXT NOT NULL, scope TEXT NOT NULL, bound INTEGER NOT NULL, last_test_status TEXT NOT NULL, bound_at INTEGER, tested_at INTEGER, deleted_at INTEGER, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, scope, secret_ref) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_schema_migrations\",\n              \"table_name\": \"plugin_secret_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_secret_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"82a9d6ab404b4d3dc485ef1ea9c95530af4460a48506e47ced81953c4b12dd50\"\n        },\n        {\n          \"path\": \"db/security_policy.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_security_policy_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policies\",\n              \"table_name\": \"plugin_security_policies\",\n              \"sql\": \"CREATE TABLE plugin_security_policies ( plugin_instance_id TEXT PRIMARY KEY, updated_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_allowed_permissions\",\n              \"table_name\": \"plugin_security_policy_allowed_permissions\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_allowed_permissions ( plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, permission_id), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_denied_methods\",\n              \"table_name\": \"plugin_security_policy_denied_methods\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_denied_methods ( plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(plugin_instance_id, method), FOREIGN KEY(plugin_instance_id) REFERENCES plugin_security_policies(plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_schema_migrations\",\n              \"table_name\": \"plugin_security_policy_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"8718fac16ca2cf37e84edd53f6d1c646f2d42e028af2dcc7aee05bdd9bc22dd6\"\n        },\n        {\n          \"path\": \"db/settings.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_settings_schema_migrations\",\n              \"versions\": [\n                1\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_archives_source\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_archives_source ON plugin_settings_archives(source_plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_settings_records_state\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_settings_records_state ON plugin_settings_records(state, retained_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_archives\",\n              \"table_name\": \"plugin_settings_archives\",\n              \"sql\": \"CREATE TABLE plugin_settings_archives ( archive_ref TEXT PRIMARY KEY, source_plugin_instance_id TEXT NOT NULL, include_secrets INTEGER NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_meta\",\n              \"table_name\": \"plugin_settings_meta\",\n              \"sql\": \"CREATE TABLE plugin_settings_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), next_export INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_records\",\n              \"table_name\": \"plugin_settings_records\",\n              \"sql\": \"CREATE TABLE plugin_settings_records ( plugin_instance_id TEXT PRIMARY KEY, state TEXT NOT NULL, schema_version INTEGER NOT NULL, settings_revision INTEGER NOT NULL, updated_at INTEGER NOT NULL, retained_at INTEGER, payload_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_settings_schema_migrations\",\n              \"table_name\": \"plugin_settings_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_settings_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"dba0083a1fa88135d6ab50cd0176063688134e684577563022200906a0d5702a\"\n        },\n        {\n          \"path\": \"db/streams.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [\n            {\n              \"table\": \"plugin_stream_schema_migrations\",\n              \"versions\": [\n                2,\n                3\n              ]\n            }\n          ],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_stream_events_stream_sequence\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_stream_events_stream_sequence ON plugin_stream_events(stream_id, sequence)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_plugin_instance\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_plugin_instance ON plugin_streams(plugin_instance_id, created_at, stream_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_status\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_status ON plugin_streams(status)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_events\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE TABLE plugin_stream_events ( stream_id TEXT NOT NULL, sequence INTEGER NOT NULL, kind TEXT NOT NULL, data BLOB, error TEXT NOT NULL, at INTEGER NOT NULL, PRIMARY KEY(stream_id, sequence), FOREIGN KEY(stream_id) REFERENCES plugin_streams(stream_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_schema_migrations\",\n              \"table_name\": \"plugin_stream_schema_migrations\",\n              \"sql\": \"CREATE TABLE plugin_stream_schema_migrations ( version INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_streams\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE TABLE plugin_streams ( stream_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, execution_binding_json TEXT NOT NULL DEFAULT '{}', direction TEXT NOT NULL, status TEXT NOT NULL, reason TEXT NOT NULL DEFAULT '', content_type TEXT NOT NULL, max_buffered_bytes INTEGER NOT NULL, buffered_bytes INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, closed_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"955856942aa0c74f96a1f1e02f7b406f71007d4eff40e7d6836d45ba85459690\"\n        }\n      ],\n      \"tree_rules\": {\n        \"allowed_kinds\": [\n          \"directory\",\n          \"file\"\n        ],\n        \"allow_sqlite_wal_shm\": true,\n        \"reject_hardlinks\": true,\n        \"reject_symlinks\": true,\n        \"variable_trees\": [\n          \"assets\",\n          \"storage\"\n        ]\n      }\n    },\n    {\n      \"id\": \"redeven-redevplugin-v0.5.x-layout-v1\",\n      \"platform_versions\": [\n        \"0.5.0\",\n        \"0.5.1\"\n      ],\n      \"root_entries\": [\n        {\n          \"path\": \"assets\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"db\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        },\n        {\n          \"path\": \"storage\",\n          \"kind\": \"directory\",\n          \"scope\": \"durable\",\n          \"disposition\": \"quarantine\"\n        }\n      ],\n      \"sqlite_databases\": [\n        {\n          \"path\": \"db/confirmation_intents.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_expires_at\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_expires_at ON plugin_confirmation_intents(expires_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_confirmation_intents_plugin_instance\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE INDEX idx_plugin_confirmation_intents_plugin_instance ON plugin_confirmation_intents(plugin_instance_id, issued_at, confirmation_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_confirmation_intents\",\n              \"table_name\": \"plugin_confirmation_intents\",\n              \"sql\": \"CREATE TABLE plugin_confirmation_intents ( confirmation_id TEXT PRIMARY KEY, confirmation_token_id TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, method TEXT NOT NULL, request_hash TEXT NOT NULL, plan_hash TEXT NOT NULL, scope_json TEXT NOT NULL DEFAULT '{}', issued_at INTEGER NOT NULL, expires_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"7eb520796c80550cceab8b71f8394f831122baaa1ac7a098420be86a4ad53cc9\"\n        },\n        {\n          \"path\": \"db/install_stage.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_plugin\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_plugin ON plugin_install_stages(owner_env_hash, plugin_instance_id, created_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_install_stages_status_expiry\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE INDEX idx_plugin_install_stages_status_expiry ON plugin_install_stages(owner_env_hash, status, expires_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_install_stages\",\n              \"table_name\": \"plugin_install_stages\",\n              \"sql\": \"CREATE TABLE plugin_install_stages ( owner_env_hash TEXT NOT NULL, stage_id TEXT NOT NULL, action TEXT NOT NULL, status TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, requested_trust TEXT NOT NULL, resolved_trust TEXT NOT NULL, validation_summary_json TEXT NOT NULL, error_code TEXT NOT NULL, error_message TEXT NOT NULL, expires_at INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, finished_at INTEGER, PRIMARY KEY(owner_env_hash, stage_id) )\"\n            }\n          ],\n          \"schema_sha256\": \"aa45772cf36b9005142d210fb2e1a2b2b23a9012ed25cd587ad8d89235f2134b\"\n        },\n        {\n          \"path\": \"db/observability.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_audit_event_id\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE UNIQUE INDEX idx_plugin_audit_event_id ON plugin_audit_events(event_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_owner\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_owner ON plugin_diagnostic_events(owner_session_hash, owner_user_hash, owner_env_hash, session_channel_id_hash, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_plugin_instance\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_plugin_instance ON plugin_diagnostic_events(plugin_instance_id, type, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_diagnostics_surface\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE INDEX idx_plugin_diagnostics_surface ON plugin_diagnostic_events(surface_instance_id, severity, occurred_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_security_audit_journal_exported\",\n              \"table_name\": \"plugin_security_audit_journal\",\n              \"sql\": \"CREATE INDEX idx_plugin_security_audit_journal_exported ON plugin_security_audit_journal(seq) WHERE exported_at IS NOT NULL\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_security_audit_journal_state\",\n              \"table_name\": \"plugin_security_audit_journal\",\n              \"sql\": \"CREATE INDEX idx_plugin_security_audit_journal_state ON plugin_security_audit_journal(state, exported_at, seq)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_audit_events\",\n              \"table_name\": \"plugin_audit_events\",\n              \"sql\": \"CREATE TABLE plugin_audit_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, request_id TEXT NOT NULL, actor TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_diagnostic_events\",\n              \"table_name\": \"plugin_diagnostic_events\",\n              \"sql\": \"CREATE TABLE plugin_diagnostic_events ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL, type TEXT NOT NULL, severity TEXT NOT NULL, message TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, active_fingerprint TEXT NOT NULL, request_id TEXT NOT NULL, correlation_id TEXT NOT NULL DEFAULT '', mutation_outcome TEXT NOT NULL DEFAULT '' CHECK(mutation_outcome IN ('', 'committed', 'not_committed', 'unknown')), owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, owner_env_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL, failure_code TEXT NOT NULL DEFAULT '', failure_component TEXT NOT NULL DEFAULT '', failure_operation TEXT NOT NULL DEFAULT '' )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_observability_meta\",\n              \"table_name\": \"plugin_observability_meta\",\n              \"sql\": \"CREATE TABLE plugin_observability_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), audit_seq INTEGER NOT NULL, diagnostic_seq INTEGER NOT NULL )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_audit_journal\",\n              \"table_name\": \"plugin_security_audit_journal\",\n              \"sql\": \"CREATE TABLE plugin_security_audit_journal ( seq INTEGER PRIMARY KEY, event_id TEXT NOT NULL UNIQUE, type TEXT NOT NULL, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, surface_id TEXT NOT NULL, surface_instance_id TEXT NOT NULL, request_id TEXT NOT NULL, actor TEXT NOT NULL, occurred_at INTEGER NOT NULL, details_json BLOB NOT NULL, state TEXT NOT NULL CHECK(state IN ('pending', 'completed')), mutation_outcome TEXT NOT NULL, completion_details_json BLOB NOT NULL, created_at INTEGER NOT NULL, completed_at INTEGER, exported_at INTEGER )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_audit_meta\",\n              \"table_name\": \"plugin_security_audit_meta\",\n              \"sql\": \"CREATE TABLE plugin_security_audit_meta ( id INTEGER PRIMARY KEY CHECK(id = 1), seq INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"230d789557736cc47b4c0d760d46a4c58ce7575f57e4779e010db5539865c666\"\n        },\n        {\n          \"path\": \"db/operations.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_created\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_created ON plugin_operations(created_at DESC, operation_id DESC)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_owner\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_owner ON plugin_operations(owner_session_hash, owner_user_hash, owner_env_hash, session_channel_id_hash, created_at DESC, operation_id DESC)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_owner_plugin_instance\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_owner_plugin_instance ON plugin_operations(owner_env_hash, plugin_instance_id, created_at DESC, operation_id DESC)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_owner_plugin_session\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_owner_plugin_session ON plugin_operations(owner_env_hash, plugin_instance_id, owner_session_hash, owner_user_hash, session_channel_id_hash, created_at DESC, operation_id DESC)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_owner_terminal_retention\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_owner_terminal_retention ON plugin_operations(owner_env_hash, plugin_instance_id, terminal_at DESC, operation_id DESC) WHERE terminal_at IS NOT NULL\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_plugin_instance\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_plugin_instance ON plugin_operations(plugin_instance_id, created_at DESC, operation_id DESC)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_plugin_owner\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_plugin_owner ON plugin_operations(plugin_instance_id, owner_session_hash, owner_user_hash, owner_env_hash, session_channel_id_hash, created_at DESC, operation_id DESC)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_operations_terminal_retention\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE INDEX idx_plugin_operations_terminal_retention ON plugin_operations(plugin_instance_id, terminal_at DESC, operation_id DESC) WHERE terminal_at IS NOT NULL\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_operations\",\n              \"table_name\": \"plugin_operations\",\n              \"sql\": \"CREATE TABLE plugin_operations ( operation_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, owner_env_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, execution_binding_json TEXT NOT NULL DEFAULT '{}', status TEXT NOT NULL, cancelable INTEGER NOT NULL DEFAULT 1, cancel_ack_timeout_ms INTEGER NOT NULL DEFAULT 0, disable_behavior TEXT NOT NULL, uninstall_behavior TEXT NOT NULL, failure_code TEXT NOT NULL, reason TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, cancel_requested_at INTEGER, orphaned_at INTEGER, terminal_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"6cb266bb6e06d4e9926bfd1513c3acdbcd6b2f7e8e988758baa29b497c1f3eba\"\n        },\n        {\n          \"path\": \"db/registry.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_deleted_at\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_deleted_at ON plugin_records(owner_env_hash, deleted_at)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_records_plugin_id\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE INDEX idx_plugin_records_plugin_id ON plugin_records(owner_env_hash, plugin_id)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_data_bindings\",\n              \"table_name\": \"plugin_data_bindings\",\n              \"sql\": \"CREATE TABLE plugin_data_bindings ( owner_env_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, generation_id TEXT NOT NULL, state TEXT NOT NULL, revision INTEGER NOT NULL, shape_hash TEXT NOT NULL, retained_at INTEGER, expires_at INTEGER, PRIMARY KEY(owner_env_hash, plugin_instance_id), FOREIGN KEY(owner_env_hash, plugin_instance_id) REFERENCES plugin_records(owner_env_hash, plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_data_objects\",\n              \"table_name\": \"plugin_data_objects\",\n              \"sql\": \"CREATE TABLE plugin_data_objects ( scope_kind TEXT NOT NULL, owner_env_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, object_id TEXT NOT NULL, content_hash TEXT NOT NULL, shape_hash TEXT NOT NULL, size_bytes INTEGER NOT NULL, created_at INTEGER NOT NULL, PRIMARY KEY(scope_kind, owner_env_hash, owner_user_hash, plugin_instance_id, object_id) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_permission_grants\",\n              \"table_name\": \"plugin_permission_grants\",\n              \"sql\": \"CREATE TABLE plugin_permission_grants ( owner_env_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, effect TEXT NOT NULL, granted_by TEXT NOT NULL, granted_at INTEGER NOT NULL, expires_at INTEGER, revoked_at INTEGER, revoked_by TEXT NOT NULL, revoked_reason TEXT NOT NULL, PRIMARY KEY(owner_env_hash, plugin_instance_id, permission_id), FOREIGN KEY(owner_env_hash, plugin_instance_id) REFERENCES plugin_records(owner_env_hash, plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_records\",\n              \"table_name\": \"plugin_records\",\n              \"sql\": \"CREATE TABLE plugin_records ( owner_env_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, publisher_id TEXT NOT NULL, plugin_id TEXT NOT NULL, version TEXT NOT NULL, active_fingerprint TEXT NOT NULL, package_hash TEXT NOT NULL, manifest_hash TEXT NOT NULL, entries_hash TEXT NOT NULL, trust_state TEXT NOT NULL, trust_assessment_json TEXT NOT NULL DEFAULT '{}', source_policy_snapshot_hash TEXT NOT NULL DEFAULT '', source_policy_snapshot_json TEXT NOT NULL DEFAULT '{}', local_import_provenance_json TEXT NOT NULL DEFAULT '{}', capability_contracts_json TEXT NOT NULL DEFAULT '[]', enable_state TEXT NOT NULL, disabled_reason TEXT NOT NULL, policy_revision INTEGER NOT NULL, management_revision INTEGER NOT NULL, revoke_epoch INTEGER NOT NULL, manifest_json TEXT NOT NULL, package_entries_json TEXT NOT NULL, version_history_json TEXT NOT NULL, runtime_requirement_json TEXT NOT NULL DEFAULT 'null', installed_at INTEGER NOT NULL, enabled_at INTEGER, updated_at INTEGER NOT NULL, deleted_at INTEGER, metadata_json TEXT NOT NULL, PRIMARY KEY(owner_env_hash, plugin_instance_id) )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policies\",\n              \"table_name\": \"plugin_security_policies\",\n              \"sql\": \"CREATE TABLE plugin_security_policies ( owner_env_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, allowed_permissions_json TEXT NOT NULL, denied_methods_json TEXT NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(owner_env_hash, plugin_instance_id), FOREIGN KEY(owner_env_hash, plugin_instance_id) REFERENCES plugin_records(owner_env_hash, plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_allowed_permissions\",\n              \"table_name\": \"plugin_security_policy_allowed_permissions\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_allowed_permissions ( owner_env_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, permission_id TEXT NOT NULL, PRIMARY KEY(owner_env_hash, plugin_instance_id, permission_id), FOREIGN KEY(owner_env_hash, plugin_instance_id) REFERENCES plugin_security_policies(owner_env_hash, plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_security_policy_denied_methods\",\n              \"table_name\": \"plugin_security_policy_denied_methods\",\n              \"sql\": \"CREATE TABLE plugin_security_policy_denied_methods ( owner_env_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, PRIMARY KEY(owner_env_hash, plugin_instance_id, method), FOREIGN KEY(owner_env_hash, plugin_instance_id) REFERENCES plugin_security_policies(owner_env_hash, plugin_instance_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_source_security_floors\",\n              \"table_name\": \"plugin_source_security_floors\",\n              \"sql\": \"CREATE TABLE plugin_source_security_floors ( source_id TEXT PRIMARY KEY, policy_epoch TEXT NOT NULL, key_rotation_epoch TEXT NOT NULL, revocation_epoch TEXT NOT NULL, source_policy_snapshot_hash TEXT NOT NULL, revocation_metadata_sha256 TEXT NOT NULL, updated_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"fb1d3c89eccea640d8f11261bcdd5e09a297a4253f5ca13ae0bc953ff3e189a9\"\n        },\n        {\n          \"path\": \"db/runtime_lease_replays.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_runtime_lease_replays_plugin\",\n              \"table_name\": \"plugin_runtime_lease_replays\",\n              \"sql\": \"CREATE INDEX idx_runtime_lease_replays_plugin ON plugin_runtime_lease_replays(plugin_instance_id, consumed_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_runtime_lease_replays\",\n              \"table_name\": \"plugin_runtime_lease_replays\",\n              \"sql\": \"CREATE TABLE plugin_runtime_lease_replays ( lease_nonce_hash TEXT PRIMARY KEY, lease_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, runtime_generation_id TEXT NOT NULL, method TEXT NOT NULL, policy_revision INTEGER NOT NULL, management_revision INTEGER NOT NULL, revoke_epoch INTEGER NOT NULL, consumed_at INTEGER NOT NULL, expires_at INTEGER NOT NULL )\"\n            }\n          ],\n          \"schema_sha256\": \"a4428fbd7cb8614384b539b583e0653460b8bafa24238dc23b9e916d447393a9\"\n        },\n        {\n          \"path\": \"db/secrets.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_secret_bindings_plugin\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE INDEX idx_plugin_secret_bindings_plugin ON plugin_secret_bindings(owner_env_hash, plugin_instance_id, scope, owner_user_hash, bound, updated_at)\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_secret_bindings\",\n              \"table_name\": \"plugin_secret_bindings\",\n              \"sql\": \"CREATE TABLE plugin_secret_bindings ( owner_env_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, secret_ref TEXT NOT NULL, scope TEXT NOT NULL, bound INTEGER NOT NULL, last_test_status TEXT NOT NULL, bound_at INTEGER, tested_at INTEGER, deleted_at INTEGER, updated_at INTEGER NOT NULL, PRIMARY KEY(owner_env_hash, owner_user_hash, plugin_instance_id, scope, secret_ref), CHECK((scope = 'environment' AND owner_user_hash = '') OR (scope = 'user' AND owner_user_hash <> '')) )\"\n            }\n          ],\n          \"schema_sha256\": \"4f5f0abf69b4c9ab1558f349640ffa2de6755b60d5e121886fa402e8c7eaa27b\"\n        },\n        {\n          \"path\": \"db/streams.sqlite\",\n          \"application_id\": 0,\n          \"user_version\": 0,\n          \"migration_versions\": [],\n          \"schema_objects\": [\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_owner_plugin_instance\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_owner_plugin_instance ON plugin_streams(owner_env_hash, plugin_instance_id, created_at, stream_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_owner_terminal_retention\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_owner_terminal_retention ON plugin_streams(owner_env_hash, plugin_instance_id, closed_at DESC, stream_id DESC) WHERE terminal_acknowledged = 1\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_plugin_instance\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_plugin_instance ON plugin_streams(plugin_instance_id, created_at, stream_id)\"\n            },\n            {\n              \"type\": \"index\",\n              \"name\": \"idx_plugin_streams_terminal_retention\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE INDEX idx_plugin_streams_terminal_retention ON plugin_streams(plugin_instance_id, closed_at DESC, stream_id DESC) WHERE terminal_acknowledged = 1\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_stream_events\",\n              \"table_name\": \"plugin_stream_events\",\n              \"sql\": \"CREATE TABLE plugin_stream_events ( stream_id TEXT NOT NULL, sequence INTEGER NOT NULL, kind TEXT NOT NULL, data BLOB, error TEXT NOT NULL, at INTEGER NOT NULL, PRIMARY KEY(stream_id, sequence), FOREIGN KEY(stream_id) REFERENCES plugin_streams(stream_id) ON DELETE CASCADE )\"\n            },\n            {\n              \"type\": \"table\",\n              \"name\": \"plugin_streams\",\n              \"table_name\": \"plugin_streams\",\n              \"sql\": \"CREATE TABLE plugin_streams ( stream_id TEXT PRIMARY KEY, plugin_id TEXT NOT NULL, plugin_instance_id TEXT NOT NULL, method TEXT NOT NULL, effect TEXT NOT NULL, execution TEXT NOT NULL, surface_instance_id TEXT NOT NULL, owner_session_hash TEXT NOT NULL, owner_user_hash TEXT NOT NULL, owner_env_hash TEXT NOT NULL, session_channel_id_hash TEXT NOT NULL, bridge_channel_id TEXT NOT NULL, execution_binding_json TEXT NOT NULL DEFAULT '{}', direction TEXT NOT NULL, status TEXT NOT NULL, failure_code TEXT NOT NULL, reason TEXT NOT NULL DEFAULT '', content_type TEXT NOT NULL, max_buffered_bytes INTEGER NOT NULL, buffered_bytes INTEGER NOT NULL, next_sequence INTEGER NOT NULL, pending_delivery_id TEXT NOT NULL, pending_read_id TEXT NOT NULL, pending_through_sequence INTEGER NOT NULL, pending_done INTEGER NOT NULL, pending_terminal_status TEXT NOT NULL, last_acknowledged_delivery_id TEXT NOT NULL, terminal_acknowledged INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, closed_at INTEGER )\"\n            }\n          ],\n          \"schema_sha256\": \"12a5810b5112819cb046f40491d8a014856c8209185ce471706158c1a816b2a3\"\n        }\n      ],\n      \"tree_rules\": {\n        \"allowed_kinds\": [\n          \"directory\",\n          \"file\"\n        ],\n        \"allow_sqlite_wal_shm\": true,\n        \"reject_hardlinks\": true,\n        \"reject_symlinks\": true,\n        \"variable_trees\": [\n          \"assets\",\n          \"storage\"\n        ]\n      }\n    }\n  ]\n}\n".as_bytes();
164static CONTRACT_BODY_OWNER_SCOPE_INVENTORY_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/owner-scope-inventory-v1.schema.json\",\n  \"title\": \"ReDevPlugin owner scope inventory registry v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"inventories\"],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"owner-scope-inventory-v1\" },\n    \"inventories\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 32,\n      \"items\": { \"$ref\": \"#/$defs/inventory\" }\n    }\n  },\n  \"$defs\": {\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"identifier\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"relative_path\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 4096,\n      \"pattern\": \"^[a-z][a-z0-9._-]*(?:/[a-z][a-z0-9._-]*)*$\"\n    },\n    \"inventory\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"id\", \"platform_versions\", \"root_entries\", \"sqlite_databases\", \"tree_rules\"],\n      \"properties\": {\n        \"id\": { \"$ref\": \"#/$defs/identifier\" },\n        \"platform_versions\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 32,\n          \"uniqueItems\": true,\n          \"items\": { \"type\": \"string\", \"pattern\": \"^0\\\\.[1-5]\\\\.[0-9]+$\" }\n        },\n        \"root_entries\": {\n          \"const\": [\n            { \"path\": \"assets\", \"kind\": \"directory\", \"scope\": \"durable\", \"disposition\": \"quarantine\" },\n            { \"path\": \"db\", \"kind\": \"directory\", \"scope\": \"durable\", \"disposition\": \"quarantine\" },\n            { \"path\": \"storage\", \"kind\": \"directory\", \"scope\": \"durable\", \"disposition\": \"quarantine\" }\n          ]\n        },\n        \"sqlite_databases\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 64,\n          \"items\": { \"$ref\": \"#/$defs/sqlite_database\" }\n        },\n        \"tree_rules\": {\n          \"const\": {\n            \"allowed_kinds\": [\"directory\", \"file\"],\n            \"allow_sqlite_wal_shm\": true,\n            \"reject_hardlinks\": true,\n            \"reject_symlinks\": true,\n            \"variable_trees\": [\"assets\", \"storage\"]\n          }\n        }\n      }\n    },\n    \"sqlite_database\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"path\",\n        \"application_id\",\n        \"user_version\",\n        \"migration_versions\",\n        \"schema_objects\",\n        \"schema_sha256\"\n      ],\n      \"properties\": {\n        \"path\": { \"$ref\": \"#/$defs/relative_path\" },\n        \"application_id\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 4294967295 },\n        \"user_version\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 2147483647 },\n        \"migration_versions\": {\n          \"type\": \"array\",\n          \"maxItems\": 16,\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"table\", \"versions\"],\n            \"properties\": {\n              \"table\": { \"$ref\": \"#/$defs/identifier\" },\n              \"versions\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"maxItems\": 64,\n                \"uniqueItems\": true,\n                \"items\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 2147483647 }\n              }\n            }\n          }\n        },\n        \"schema_objects\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 128,\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"type\", \"name\", \"table_name\", \"sql\"],\n            \"properties\": {\n              \"type\": { \"enum\": [\"index\", \"table\"] },\n              \"name\": { \"$ref\": \"#/$defs/identifier\" },\n              \"table_name\": { \"$ref\": \"#/$defs/identifier\" },\n              \"sql\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 16384 }\n            }\n          }\n        },\n        \"schema_sha256\": { \"$ref\": \"#/$defs/sha256\" }\n      }\n    }\n  }\n}\n".as_bytes();
165static CONTRACT_BODY_OWNER_SCOPE_MIGRATION_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/owner-scope-migration-v1.schema.json\",\n  \"title\": \"ReDevPlugin owner scope migration journal v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"migration_id\",\n    \"root_identity_sha256\",\n    \"legacy_snapshot_sha256\",\n    \"inventory_id\",\n    \"inventory_sha256\",\n    \"state\",\n    \"quarantine_id\",\n    \"quarantine_sha256\",\n    \"fresh_generation_id\",\n    \"fresh_generation_sha256\",\n    \"stores\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"owner-scope-migration-v1\" },\n    \"migration_id\": { \"$ref\": \"#/$defs/opaque_id\" },\n    \"root_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"legacy_snapshot_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"inventory_id\": { \"type\": \"string\", \"maxLength\": 128, \"pattern\": \"^$|^[a-z][a-z0-9._-]+$\" },\n    \"inventory_sha256\": { \"type\": \"string\", \"pattern\": \"^$|^[0-9a-f]{64}$\" },\n    \"state\": {\n      \"enum\": [\n        \"prepared\",\n        \"quarantine_writing\",\n        \"quarantine_committed\",\n        \"fresh_prepared\",\n        \"fresh_committed\",\n        \"reconcile_required\",\n        \"failed\"\n      ]\n    },\n    \"quarantine_id\": { \"type\": \"string\", \"maxLength\": 128, \"pattern\": \"^$|^quarantine_[0-9a-f]{32}$\" },\n    \"quarantine_sha256\": { \"type\": \"string\", \"pattern\": \"^$|^[0-9a-f]{64}$\" },\n    \"fresh_generation_id\": { \"type\": \"string\", \"maxLength\": 128, \"pattern\": \"^$|^generation_[0-9a-f]{32}$\" },\n    \"fresh_generation_sha256\": { \"type\": \"string\", \"pattern\": \"^$|^[0-9a-f]{64}$\" },\n    \"stores\": {\n      \"type\": \"array\",\n      \"maxItems\": 64,\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\"id\", \"scope\", \"disposition\", \"generation\", \"outcome\"],\n        \"properties\": {\n          \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n          \"scope\": { \"enum\": [\"durable\", \"session\", \"transient\"] },\n          \"disposition\": { \"enum\": [\"quarantine\", \"terminate\"] },\n          \"generation\": { \"type\": \"string\", \"maxLength\": 128 },\n          \"outcome\": { \"type\": \"string\", \"maxLength\": 128 }\n        }\n      }\n    }\n  },\n  \"$defs\": {\n    \"opaque_id\": { \"type\": \"string\", \"pattern\": \"^migration_[0-9a-f]{32}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" }\n  }\n}\n".as_bytes();
166static CONTRACT_BODY_PACKAGE_SIGNATURE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/package-signature-v1.schema.json\",\n  \"title\": \"ReDevPlugin package detached signature v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"algorithm\",\n    \"key_id\",\n    \"package_hash\",\n    \"manifest_hash\",\n    \"entries_hash\",\n    \"signature\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.package_signature.v1\" },\n    \"algorithm\": { \"enum\": [\"ed25519\"] },\n    \"key_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"publisher_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"package_hash\": { \"$ref\": \"#/$defs/sha256\" },\n    \"manifest_hash\": { \"$ref\": \"#/$defs/sha256\" },\n    \"entries_hash\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signature\": { \"type\": \"string\", \"minLength\": 1 },\n    \"signed_at\": { \"type\": \"string\", \"format\": \"date-time\" }\n  },\n  \"$defs\": {\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sha256:[a-f0-9]{64}$\"\n    }\n  }\n}\n".as_bytes();
167static CONTRACT_BODY_PERFORMANCE_CONTRACT: &[u8] = "{\n  \"schema_version\": \"redevplugin.performance_contract.v3\",\n  \"comparison_probes\": [\n    {\n      \"id\": \"httpadapter.route-authorization-v051\",\n      \"baseline_release\": \"0.5.1\",\n      \"baseline_commit\": \"3febcc59bbdb2118a4f105781b4c743bc11ba09f\",\n      \"repetitions\": 5,\n      \"warmup_batches\": 8,\n      \"requests_per_sample\": 32,\n      \"measured_batches\": [\n        { \"concurrency\": 1, \"batches\": 1000, \"samples\": 32000 },\n        { \"concurrency\": 100, \"batches\": 64, \"samples\": 204800 },\n        { \"concurrency\": 1000, \"batches\": 64, \"samples\": 2048000 }\n      ],\n      \"runner\": {\n        \"path\": \"scripts/measure_http_route_authorization_performance.mjs\",\n        \"sha256\": \"ccb704f1229b7aa41986d52d8eb473c0b6b1665594dc6094ab8072597d91e55f\"\n      },\n      \"comparison_logic\": {\n        \"path\": \"scripts/route_authorization_comparison.mjs\",\n        \"sha256\": \"f741b7f21ffc771c2064d7293fce9ec5138771ee6b0f62a374b80d899dc66fb6\"\n      },\n      \"baseline_probe\": {\n        \"path\": \"testdata/performance/httpadapter-v051/route_authorization_performance_test.go\",\n        \"sha256\": \"2a8891b9c2e962ba3660aadb25bdf9e2cca45565ad8dea6d7b59c08fc787c18f\"\n      },\n      \"candidate_probe\": {\n        \"path\": \"pkg/httpadapter/route_authorization_performance_test.go\",\n        \"sha256\": \"113eb3f0cf1d7383a6f14b8d7406e42c655c018c1455b47f0afd44869a354ff3\"\n      },\n      \"shared_probe\": {\n        \"path\": \"internal/performanceevidence/route_authorization.go\",\n        \"sha256\": \"5a2dd9f235eb80d2f7c6a2ddb5870e1d5aa9f9132b6a8abff51ce20b0f037910\"\n      }\n    }\n  ],\n  \"scenarios\": [\n    {\n      \"id\": \"runtime.blocked-hostcall-isolation\",\n      \"sample_count\": 16,\n      \"metrics\": [\n        { \"name\": \"completed\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 16 },\n        { \"name\": \"p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 250 }\n      ]\n    },\n    {\n      \"id\": \"runtime.cache-single-flight\",\n      \"sample_count\": 32,\n      \"metrics\": [\n        { \"name\": \"artifact_reads\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"module_compiles\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"cache_entries\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 }\n      ]\n    },\n    {\n      \"id\": \"runtime.cancel-queued\",\n      \"sample_count\": 20,\n      \"metrics\": [\n        { \"name\": \"p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 50 }\n      ]\n    },\n    {\n      \"id\": \"runtime.cancel-running\",\n      \"sample_count\": 20,\n      \"metrics\": [\n        { \"name\": \"ack_p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 100 },\n        { \"name\": \"runtime_ready\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 }\n      ]\n    },\n    {\n      \"id\": \"runtime.warm-invocations\",\n      \"sample_count\": 32,\n      \"metrics\": [\n        { \"name\": \"completed\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 32 },\n        { \"name\": \"p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 100 },\n        { \"name\": \"max\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 500 }\n      ]\n    },\n    {\n      \"id\": \"runtime.ipc-writer-burst\",\n      \"sample_count\": 10000,\n      \"metrics\": [\n        { \"name\": \"frames\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 10000 },\n        { \"name\": \"queue_capacity\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 136 },\n        { \"name\": \"blocked_at_capacity\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"peak_rss_bytes\", \"unit\": \"bytes\", \"comparator\": \"lte\", \"limit\": 67108864 },\n        { \"name\": \"flushes\", \"unit\": \"count\", \"comparator\": \"lte\", \"limit\": 625 }\n      ]\n    },\n    {\n      \"id\": \"runtime.scheduler-indexed-cancel\",\n      \"sample_count\": 10000,\n      \"metrics\": [\n        { \"name\": \"index_lookups\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 10000 },\n        { \"name\": \"compaction_entries_per_cancel\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 25000 },\n        { \"name\": \"remaining_requests\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 0 }\n      ]\n    },\n    {\n      \"id\": \"runtime.module-cache-indexed-eviction\",\n      \"sample_count\": 10000,\n      \"metrics\": [\n        { \"name\": \"index_pops_per_eviction\", \"unit\": \"basis_points\", \"comparator\": \"eq\", \"limit\": 10000 },\n        { \"name\": \"remaining_entries\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 128 }\n      ]\n    },\n    {\n      \"id\": \"httpadapter.route-authorization-c1\",\n      \"sample_count\": 32000,\n      \"metrics\": [\n        { \"name\": \"p95_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 11000 },\n        { \"name\": \"p99_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 11500 },\n        { \"name\": \"allocations_increase\", \"unit\": \"count\", \"comparator\": \"lte\", \"limit\": 1 },\n        { \"name\": \"allocated_bytes_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 10500 }\n      ]\n    },\n    {\n      \"id\": \"httpadapter.route-authorization-c100\",\n      \"sample_count\": 204800,\n      \"metrics\": [\n        { \"name\": \"p95_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 11000 },\n        { \"name\": \"p99_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 11500 },\n        { \"name\": \"allocations_increase\", \"unit\": \"count\", \"comparator\": \"lte\", \"limit\": 1 },\n        { \"name\": \"allocated_bytes_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 10500 }\n      ]\n    },\n    {\n      \"id\": \"httpadapter.route-authorization-c1000\",\n      \"sample_count\": 2048000,\n      \"metrics\": [\n        { \"name\": \"p95_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 11000 },\n        { \"name\": \"p99_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 11500 },\n        { \"name\": \"allocations_increase\", \"unit\": \"count\", \"comparator\": \"lte\", \"limit\": 1 },\n        { \"name\": \"allocated_bytes_relative\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 10500 }\n      ]\n    },\n    {\n      \"id\": \"connectivity.http-keepalive\",\n      \"sample_count\": 64,\n      \"metrics\": [\n        { \"name\": \"p95_relative_to_connect\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 7000 },\n        { \"name\": \"reused_connection_dials\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 }\n      ]\n    },\n    {\n      \"id\": \"connectivity.udp-limiter-scaling\",\n      \"sample_count\": 1000,\n      \"metrics\": [\n        { \"name\": \"p95_large_relative_to_small\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 20000 },\n        { \"name\": \"bucket_capacity\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 65536 },\n        { \"name\": \"overflow_denied\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 }\n      ]\n    },\n    {\n      \"id\": \"plugindata.namespace-cache-warm\",\n      \"sample_count\": 100,\n      \"metrics\": [\n        { \"name\": \"relative_allocations\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 3000 }\n      ]\n    },\n    {\n      \"id\": \"pluginpkg.package-owned-materialization\",\n      \"sample_count\": 3,\n      \"metrics\": [\n        { \"name\": \"peak_rss_relative_to_cloned\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 6500 }\n      ]\n    },\n    {\n      \"id\": \"pluginpkg.wasm-inspection-cache\",\n      \"sample_count\": 1000,\n      \"metrics\": [\n        { \"name\": \"inspector_calls\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"cache_entries\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"cache_capacity\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 128 },\n        { \"name\": \"warm_relative_allocations\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 5000 }\n      ]\n    },\n    {\n      \"id\": \"registry.sqlite-authorization-scaling\",\n      \"sample_count\": 500,\n      \"metrics\": [\n        { \"name\": \"p95_1000_grants_relative_to_1\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 20000 }\n      ]\n    },\n    {\n      \"id\": \"operation.memory-store-snapshot\",\n      \"sample_count\": 1000,\n      \"metrics\": [\n        { \"name\": \"relative_allocations\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 2000 }\n      ]\n    },\n    {\n      \"id\": \"stream.memory-store-snapshot\",\n      \"sample_count\": 1000,\n      \"metrics\": [\n        { \"name\": \"relative_allocations\", \"unit\": \"basis_points\", \"comparator\": \"lte\", \"limit\": 2000 }\n      ]\n    },\n    {\n      \"id\": \"stream.event-backpressure\",\n      \"sample_count\": 257,\n      \"metrics\": [\n        { \"name\": \"accepted_events\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 256 },\n        { \"name\": \"first_rejected_event\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 257 }\n      ]\n    },\n    {\n      \"id\": \"stream.idle-waiters\",\n      \"sample_count\": 500,\n      \"metrics\": [\n        { \"name\": \"waiters\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 500 },\n        { \"name\": \"periodic_store_queries\", \"unit\": \"queries\", \"comparator\": \"eq\", \"limit\": 0 },\n        { \"name\": \"wake_p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 100 }\n      ]\n    },\n    {\n      \"id\": \"stream.sqlite-batch-delivery\",\n      \"sample_count\": 256,\n      \"metrics\": [\n        { \"name\": \"events_selected\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 256 },\n        { \"name\": \"bounded_selects\", \"unit\": \"queries\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"delivery_snapshots\", \"unit\": \"queries\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"range_deletes\", \"unit\": \"queries\", \"comparator\": \"eq\", \"limit\": 1 },\n        { \"name\": \"remaining_events\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 256 }\n      ]\n    },\n    {\n      \"id\": \"ui.chromium-renderer\",\n      \"sample_count\": 10,\n      \"metrics\": [\n        { \"name\": \"reverse_patch_p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 50 },\n        { \"name\": \"long_tasks\", \"unit\": \"long_tasks\", \"comparator\": \"eq\", \"limit\": 0 },\n        { \"name\": \"max_long_task\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 50 }\n      ]\n    },\n    {\n      \"id\": \"ui.keyed-reversal\",\n      \"sample_count\": 30,\n      \"metrics\": [\n        { \"name\": \"moves\", \"unit\": \"count\", \"comparator\": \"eq\", \"limit\": 999 },\n        { \"name\": \"p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 50 }\n      ]\n    },\n    {\n      \"id\": \"ui.single-leaf-reconciliation\",\n      \"sample_count\": 40,\n      \"metrics\": [\n        { \"name\": \"p95\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 16 },\n        { \"name\": \"max\", \"unit\": \"milliseconds\", \"comparator\": \"lte\", \"limit\": 50 }\n      ]\n    }\n  ]\n}\n".as_bytes();
168static CONTRACT_BODY_PERFORMANCE_EVIDENCE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/performance-evidence-v3.schema.json\",\n  \"title\": \"ReDevPlugin release performance evidence v3\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"release_version\",\n    \"source_commit\",\n    \"generated_at\",\n    \"environment\",\n    \"scenarios\",\n    \"comparisons\",\n    \"contract_hashes\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.performance_evidence.v3\" },\n    \"release_version\": { \"$ref\": \"#/$defs/semver\" },\n    \"source_commit\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{40}$\" },\n    \"generated_at\": { \"type\": \"string\", \"format\": \"date-time\" },\n    \"environment\": { \"$ref\": \"#/$defs/environment\" },\n    \"scenarios\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/scenario\" }\n    },\n    \"comparisons\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/comparison\" }\n    },\n    \"contract_hashes\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/contract_hash\" }\n    }\n  },\n  \"$defs\": {\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?$\"\n    },\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[0-9a-f]{64}$\"\n    },\n    \"environment\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"os\", \"arch\", \"logical_cpus\", \"go_version\", \"node_version\", \"rustc_version\", \"chromium_version\"],\n      \"properties\": {\n        \"os\": { \"type\": \"string\", \"minLength\": 1 },\n        \"arch\": { \"type\": \"string\", \"minLength\": 1 },\n        \"logical_cpus\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"go_version\": { \"type\": \"string\", \"minLength\": 1 },\n        \"node_version\": { \"type\": \"string\", \"minLength\": 1 },\n        \"rustc_version\": { \"type\": \"string\", \"minLength\": 1 },\n        \"chromium_version\": { \"type\": \"string\", \"minLength\": 1 }\n      }\n    },\n    \"scenario\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"id\", \"gate\", \"status\", \"sample_count\", \"metrics\"],\n      \"properties\": {\n        \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]+$\" },\n        \"gate\": { \"enum\": [\"fast\", \"smoke\", \"weekly\", \"full\", \"release\"] },\n        \"status\": { \"const\": \"pass\" },\n        \"sample_count\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"metrics\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"uniqueItems\": true,\n          \"items\": { \"$ref\": \"#/$defs/metric\" }\n        }\n      }\n    },\n    \"metric\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"unit\", \"observed\", \"limit\", \"comparator\"],\n      \"properties\": {\n        \"name\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]+$\" },\n        \"unit\": { \"enum\": [\"milliseconds\", \"count\", \"bytes\", \"queries\", \"long_tasks\", \"basis_points\"] },\n        \"observed\": { \"type\": \"number\", \"minimum\": 0 },\n        \"limit\": { \"type\": \"number\", \"minimum\": 0 },\n        \"comparator\": { \"enum\": [\"lte\", \"eq\"] }\n      }\n    },\n    \"comparison\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"id\",\n        \"baseline_release\",\n        \"baseline_commit\",\n        \"candidate_commit\",\n        \"runs\"\n      ],\n      \"properties\": {\n        \"id\": { \"const\": \"httpadapter.route-authorization-v051\" },\n        \"baseline_release\": { \"const\": \"0.5.1\" },\n        \"baseline_commit\": { \"const\": \"3febcc59bbdb2118a4f105781b4c743bc11ba09f\" },\n        \"candidate_commit\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{40}$\" },\n        \"runs\": {\n          \"type\": \"array\",\n          \"minItems\": 3,\n          \"maxItems\": 3,\n          \"items\": { \"$ref\": \"#/$defs/comparison_run\" }\n        }\n      }\n    },\n    \"comparison_run\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"baseline_profile_sha256\",\n        \"candidate_profile_sha256\",\n        \"baseline_profile\",\n        \"candidate_profile\"\n      ],\n      \"properties\": {\n        \"baseline_profile_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"candidate_profile_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"baseline_profile\": { \"$ref\": \"#/$defs/route_authorization_profile\" },\n        \"candidate_profile\": { \"$ref\": \"#/$defs/route_authorization_profile\" }\n      }\n    },\n    \"route_authorization_profile\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"variant\", \"commit\", \"environment\", \"warmup_count\", \"requests_per_sample\", \"measurements\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.route_authorization_performance.v1\" },\n        \"variant\": { \"enum\": [\"v0.5.1\", \"v0.6.0\"] },\n        \"commit\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{40}$\" },\n        \"environment\": { \"$ref\": \"#/$defs/route_authorization_environment\" },\n        \"warmup_count\": { \"const\": 8 },\n        \"requests_per_sample\": { \"const\": 32 },\n        \"measurements\": {\n          \"type\": \"array\",\n          \"minItems\": 3,\n          \"maxItems\": 3,\n          \"uniqueItems\": true,\n          \"items\": { \"$ref\": \"#/$defs/route_authorization_measurement\" }\n        }\n      }\n    },\n    \"route_authorization_environment\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"os\", \"arch\", \"logical_cpus\", \"gomaxprocs\", \"go_version\"],\n      \"properties\": {\n        \"os\": { \"type\": \"string\", \"minLength\": 1 },\n        \"arch\": { \"type\": \"string\", \"minLength\": 1 },\n        \"logical_cpus\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"gomaxprocs\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"go_version\": { \"type\": \"string\", \"minLength\": 1 }\n      }\n    },\n    \"route_authorization_measurement\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"concurrency\",\n        \"batch_count\",\n        \"sample_count\",\n        \"median_nanoseconds\",\n        \"p95_nanoseconds\",\n        \"p99_nanoseconds\",\n        \"allocations_per_request\",\n        \"bytes_per_request\"\n      ],\n      \"properties\": {\n        \"concurrency\": { \"enum\": [1, 100, 1000] },\n        \"batch_count\": { \"type\": \"integer\", \"minimum\": 64, \"maximum\": 9007199254740991 },\n        \"sample_count\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"median_nanoseconds\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"p95_nanoseconds\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"p99_nanoseconds\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"allocations_per_request\": { \"type\": \"number\", \"minimum\": 0 },\n        \"bytes_per_request\": { \"type\": \"number\", \"minimum\": 0 }\n      }\n    },\n    \"contract_hash\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"id\", \"sha256\"],\n      \"properties\": {\n        \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9-]+$\" },\n        \"sha256\": { \"$ref\": \"#/$defs/sha256\" }\n      }\n    }\n  }\n}\n".as_bytes();
169static CONTRACT_BODY_PLATFORM_PACKAGE_PUBLICATION_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/platform-package-publication-v1.schema.json\",\n  \"title\": \"ReDevPlugin Platform Package Publication V1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"platform_version\", \"source_commit\", \"workflow\", \"go_module\", \"npm_packages\", \"rust_crates\", \"contract_set_sha256\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.platform_package_publication.v1\"},\n    \"platform_version\": {\"$ref\": \"#/$defs/version\"},\n    \"source_commit\": {\"$ref\": \"#/$defs/commit\"},\n    \"workflow\": {\"$ref\": \"#/$defs/workflow\"},\n    \"go_module\": {\"$ref\": \"#/$defs/go_module\"},\n    \"npm_packages\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"uniqueItems\": true,\n      \"prefixItems\": [\n        {\"$ref\": \"#/$defs/npm_contracts\"},\n        {\"$ref\": \"#/$defs/npm_ui\"}\n      ],\n      \"items\": false\n    },\n    \"rust_crates\": {\n      \"type\": \"array\",\n      \"minItems\": 6,\n      \"maxItems\": 6,\n      \"uniqueItems\": true,\n      \"prefixItems\": [\n        {\"$ref\": \"#/$defs/rust_contracts\"},\n        {\"$ref\": \"#/$defs/rust_ipc\"},\n        {\"$ref\": \"#/$defs/rust_wasm_abi\"},\n        {\"$ref\": \"#/$defs/rust_target_classifier\"},\n        {\"$ref\": \"#/$defs/rust_worker_sdk\"},\n        {\"$ref\": \"#/$defs/rust_runtime\"}\n      ],\n      \"items\": false\n    },\n    \"contract_set_sha256\": {\"$ref\": \"#/$defs/sha256\"}\n  },\n  \"$defs\": {\n    \"version\": {\n      \"type\": \"string\",\n      \"minLength\": 5,\n      \"maxLength\": 64,\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"\n    },\n    \"commit\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{40}$\"},\n    \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n    \"workflow\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"repository\", \"path\", \"ref\", \"sha\"],\n      \"properties\": {\n        \"repository\": {\"const\": \"floegence/redevplugin\"},\n        \"path\": {\"const\": \".github/workflows/release.yml\"},\n        \"ref\": {\"type\": \"string\", \"minLength\": 15, \"maxLength\": 80, \"pattern\": \"^refs/tags/v(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"},\n        \"sha\": {\"$ref\": \"#/$defs/commit\"}\n      }\n    },\n    \"go_module\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"module\", \"version\", \"h1\", \"go_mod_h1\"],\n      \"properties\": {\n        \"module\": {\"const\": \"github.com/floegence/redevplugin\"},\n        \"version\": {\"type\": \"string\", \"minLength\": 6, \"maxLength\": 65, \"pattern\": \"^v(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"},\n        \"h1\": {\"type\": \"string\", \"pattern\": \"^h1:[A-Za-z0-9+/]{43}=$\"},\n        \"go_mod_h1\": {\"type\": \"string\", \"pattern\": \"^h1:[A-Za-z0-9+/]{43}=$\"}\n      }\n    },\n    \"npm_package\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"version\", \"integrity\", \"provenance_subject_sha512\"],\n      \"properties\": {\n        \"name\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128},\n        \"version\": {\"$ref\": \"#/$defs/version\"},\n        \"integrity\": {\"type\": \"string\", \"pattern\": \"^sha512-[A-Za-z0-9+/]{86}==$\"},\n        \"provenance_subject_sha512\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{128}$\"}\n      }\n    },\n    \"npm_contracts\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/npm_package\"},\n        {\"properties\": {\"name\": {\"const\": \"@floegence/redevplugin-contracts\"}}}\n      ]\n    },\n    \"npm_ui\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/npm_package\"},\n        {\"properties\": {\"name\": {\"const\": \"@floegence/redevplugin-ui\"}}}\n      ]\n    },\n    \"rust_crate\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"version\", \"registry_checksum_sha256\"],\n      \"properties\": {\n        \"name\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128},\n        \"version\": {\"$ref\": \"#/$defs/version\"},\n        \"registry_checksum_sha256\": {\"$ref\": \"#/$defs/sha256\"}\n      }\n    },\n    \"rust_contracts\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-contracts\"}}}\n      ]\n    },\n    \"rust_ipc\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-ipc\"}}}\n      ]\n    },\n    \"rust_wasm_abi\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-wasm-abi\"}}}\n      ]\n    },\n    \"rust_target_classifier\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-target-classifier\"}}}\n      ]\n    },\n    \"rust_worker_sdk\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-worker-sdk\"}}}\n      ]\n    },\n    \"rust_runtime\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-runtime\"}}}\n      ]\n    }\n  }\n}\n".as_bytes();
170static CONTRACT_BODY_PLATFORM_PACKAGE_SET_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/platform-package-set-v1.schema.json\",\n  \"title\": \"ReDevPlugin Platform Package Set V1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"platform_version\", \"go_module\", \"npm_packages\", \"rust_crates\", \"contract_registry_version\", \"contract_set_sha256\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.platform_package_set.v1\"},\n    \"platform_version\": {\"$ref\": \"#/$defs/version\"},\n    \"go_module\": {\"$ref\": \"#/$defs/go_module\"},\n    \"npm_packages\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"uniqueItems\": true,\n      \"prefixItems\": [\n        {\"$ref\": \"#/$defs/npm_contracts\"},\n        {\"$ref\": \"#/$defs/npm_ui\"}\n      ],\n      \"items\": false\n    },\n    \"rust_crates\": {\n      \"type\": \"array\",\n      \"minItems\": 6,\n      \"maxItems\": 6,\n      \"uniqueItems\": true,\n      \"prefixItems\": [\n        {\"$ref\": \"#/$defs/rust_contracts\"},\n        {\"$ref\": \"#/$defs/rust_ipc\"},\n        {\"$ref\": \"#/$defs/rust_wasm_abi\"},\n        {\"$ref\": \"#/$defs/rust_target_classifier\"},\n        {\"$ref\": \"#/$defs/rust_worker_sdk\"},\n        {\"$ref\": \"#/$defs/rust_runtime\"}\n      ],\n      \"items\": false\n    },\n    \"contract_registry_version\": {\"const\": \"contract-registry-v2\"},\n    \"contract_set_sha256\": {\"$ref\": \"#/$defs/sha256\"}\n  },\n  \"$defs\": {\n    \"version\": {\n      \"type\": \"string\",\n      \"minLength\": 5,\n      \"maxLength\": 64,\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"\n    },\n    \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n    \"go_module\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"module\", \"version\"],\n      \"properties\": {\n        \"module\": {\"const\": \"github.com/floegence/redevplugin\"},\n        \"version\": {\"type\": \"string\", \"minLength\": 6, \"maxLength\": 65, \"pattern\": \"^v(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"}\n      }\n    },\n    \"npm_package\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"version\"],\n      \"properties\": {\n        \"name\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128},\n        \"version\": {\"$ref\": \"#/$defs/version\"}\n      }\n    },\n    \"npm_contracts\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/npm_package\"},\n        {\"properties\": {\"name\": {\"const\": \"@floegence/redevplugin-contracts\"}}}\n      ]\n    },\n    \"npm_ui\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/npm_package\"},\n        {\"properties\": {\"name\": {\"const\": \"@floegence/redevplugin-ui\"}}}\n      ]\n    },\n    \"rust_crate\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"version\", \"role\"],\n      \"properties\": {\n        \"name\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128},\n        \"version\": {\"$ref\": \"#/$defs/version\"},\n        \"role\": {\"enum\": [\"contracts\", \"ipc\", \"wasm_abi\", \"target_classifier\", \"worker_sdk\", \"runtime\"]}\n      }\n    },\n    \"rust_contracts\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-contracts\"}, \"role\": {\"const\": \"contracts\"}}}\n      ]\n    },\n    \"rust_ipc\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-ipc\"}, \"role\": {\"const\": \"ipc\"}}}\n      ]\n    },\n    \"rust_wasm_abi\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-wasm-abi\"}, \"role\": {\"const\": \"wasm_abi\"}}}\n      ]\n    },\n    \"rust_target_classifier\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-target-classifier\"}, \"role\": {\"const\": \"target_classifier\"}}}\n      ]\n    },\n    \"rust_worker_sdk\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-worker-sdk\"}, \"role\": {\"const\": \"worker_sdk\"}}}\n      ]\n    },\n    \"rust_runtime\": {\n      \"allOf\": [\n        {\"$ref\": \"#/$defs/rust_crate\"},\n        {\"properties\": {\"name\": {\"const\": \"redevplugin-runtime\"}, \"role\": {\"const\": \"runtime\"}}}\n      ]\n    }\n  }\n}\n".as_bytes();
171static CONTRACT_BODY_PLUGIN_PLATFORM_OPENAPI: &[u8] = "openapi: 3.1.0\ninfo:\n  title: ReDevPlugin Plugin Platform API\n  version: plugin-platform-v8\n  description: Host-agnostic plugin management, bridge, operation, data, and sandbox routes. Release-ref install and update routes resolve host-controlled package artifacts server-side and do not accept requested trust_state values; local-import package install/update routes are explicit developer/import flows and also do not accept caller-supplied trust_state values.\nx-redevplugin-query-policy:\n  reject_url_query_strings: true\n  require_closed_json_bodies: true\n  require_exact_origin: true\n  require_csrf: true\npaths:\n  /_redevplugin/api/plugins/{plugin_instance_id}/local-import:\n    post:\n      operationId: importLocalPackage\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        required: true\n        content:\n          application/vnd.redevplugin.package+zip:\n            schema: { type: string, format: binary }\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n    put:\n      operationId: updateLocalPackage\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n        - name: X-ReDevPlugin-Expected-Management-Revision\n          in: header\n          required: true\n          description: Canonical decimal management revision. Duplicate, combined, empty, or whitespace-padded values are rejected.\n          schema: { type: integer, minimum: 1, maximum: 9007199254740991 }\n      requestBody:\n        required: true\n        content:\n          application/vnd.redevplugin.package+zip:\n            schema: { type: string, format: binary }\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/install-release-ref:\n    post:\n      operationId: installReleaseRef\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/InstallReleaseRefRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/enable:\n    post:\n      operationId: enablePlugin\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/EnableRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/disable:\n    post:\n      operationId: disablePlugin\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/DisableRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/uninstall:\n    post:\n      operationId: uninstallPlugin\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/UninstallRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/update-release-ref:\n    post:\n      operationId: updateReleaseRef\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/UpdateReleaseRefRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/downgrade:\n    post:\n      operationId: downgradePlugin\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/DowngradeRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/catalog/query:\n    post:\n      operationId: listPlugins\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginCatalogResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/features/query:\n    post:\n      operationId: getPluginFeatures\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginFeaturesResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/platform/compatibility/query:\n    post:\n      operationId: getPluginPlatformCompatibility\n      x-redevplugin-route-effect: query\n      description: Returns the host-consumable ReDevPlugin compatibility manifest for the mounted platform artifact set.\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/CompatibilityResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/open:\n    post:\n      operationId: openPluginSurface\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/OpenSurfaceRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SurfaceBootstrapResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/session/revoke-scope:\n    post:\n      operationId: revokePluginSessionScope\n      x-redevplugin-route-effect: mutation\n      description: Irreversibly fences the authenticated session, drains every exact-session platform and runtime resource, and returns only public cumulative counts.\n      requestBody:\n        $ref: \"#/components/requestBodies/RevokeSessionScopeRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SessionScopeRevokeResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/prepare:\n    post:\n      operationId: preparePluginSurface\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/PrepareSurfaceRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SurfacePreparationResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/bridge-token:\n    post:\n      operationId: createSurfaceBridgeToken\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/TrustedParentBridgeTokenRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/BridgeTokenResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/assets/read:\n    post:\n      operationId: readPreparedSurfaceAsset\n      x-redevplugin-route-effect: query\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/ReadSurfaceAssetRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SurfaceAssetResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/streams/read:\n    post:\n      operationId: readPreparedSurfaceStream\n      x-redevplugin-route-effect: query\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/ReadSurfaceStreamRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SurfaceStreamResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/streams/ack:\n    post:\n      operationId: acknowledgePreparedSurfaceStream\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/AcknowledgeSurfaceStreamRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SurfaceStreamAcknowledgementResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/operations/cancel:\n    post:\n      operationId: cancelSurfacePluginOperation\n      x-redevplugin-route-effect: mutation\n      description: Cancels an operation only when it belongs to the authenticated surface, session, and private bridge channel.\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/CancelSurfaceOperationRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/confirmations/reject:\n    post:\n      operationId: rejectSurfacePluginConfirmation\n      x-redevplugin-route-effect: mutation\n      description: Atomically rejects a pending confirmation only when it belongs to the authenticated surface, session, current plugin revision, and private bridge channel.\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/RejectSurfaceConfirmationRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/ConfirmationRejectionResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/surfaces/{surface_instance_id}/dispose:\n    post:\n      operationId: disposePluginSurface\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/SurfaceInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/DisposeSurfaceRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SurfaceDisposeResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/rpc:\n    post:\n      operationId: callPluginMethod\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/RPCRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RPCResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/confirmations/prepare:\n    post:\n      operationId: preparePluginMethodConfirmation\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/PrepareMethodConfirmationRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PluginMethodConfirmationPreparationResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/intents/query:\n    post:\n      operationId: listPluginIntents\n      x-redevplugin-route-effect: query\n      description: 'Lists enabled, runnable plugin intents available to host-mediated interop. The response data is `{ \"intents\": [...] }`.'\n      requestBody:\n        $ref: \"#/components/requestBodies/ListIntentsQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/IntentListResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/intents/invoke:\n    post:\n      operationId: invokePluginIntent\n      x-redevplugin-route-effect: mutation\n      description: Invokes a host-mediated plugin intent without iframe gateway tokens while preserving local policy, permission grants, and dangerous-method fail-closed checks.\n      requestBody:\n        $ref: \"#/components/requestBodies/InvokeIntentRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RPCResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/operations/query:\n    post:\n      operationId: listPluginOperations\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/ListOperationsQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/OperationListResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/operations/{operation_id}/query:\n    post:\n      operationId: getPluginOperation\n      x-redevplugin-route-effect: query\n      parameters:\n        - $ref: \"#/components/parameters/OperationID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/operations/{operation_id}/cancel:\n    post:\n      operationId: cancelPluginOperation\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/OperationID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/CancelOperationRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/runtime/start:\n    post:\n      operationId: startPluginRuntime\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/StartRuntimeRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RuntimeHealthResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/runtime/stop:\n    post:\n      operationId: stopPluginRuntime\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RuntimeStopResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/runtime/refresh-enabled:\n    post:\n      operationId: refreshEnabledPluginRuntimeState\n      x-redevplugin-route-effect: mutation\n      description: 'Replays runtime-derived state for enabled plugins after the embedding host process restarts or reattaches adapters. The response data is `{ \"results\": [...] }`.'\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RuntimeRefreshResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/runtime/health/query:\n    post:\n      operationId: getPluginRuntimeHealth\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RuntimeHealthResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/data/export:\n    post:\n      operationId: exportPluginData\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/ExportDataRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/DataExportResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/data/export/delete:\n    post:\n      operationId: deletePluginDataExport\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/DeleteDataExportRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/DataExportDeleteResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/data/import:\n    post:\n      operationId: importPluginData\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/ImportDataRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/DataImportResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/retained-data/query:\n    post:\n      operationId: listPluginRetainedData\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/ListRetainedDataQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RetainedDataListResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/retained-data/delete:\n    post:\n      operationId: deletePluginRetainedData\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/DeleteRetainedDataRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RetainedDataBindingResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/retained-data/bind:\n    post:\n      operationId: bindPluginRetainedData\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/BindRetainedDataRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RetainedDataBindingResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/retained-data/cleanup-expired:\n    post:\n      operationId: cleanupExpiredPluginRetainedData\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/CleanupExpiredRetainedDataRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/RetainedDataCleanupResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/permissions/query:\n    post:\n      operationId: listPluginPermissionGrants\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/ListPermissionsQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PermissionListResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/permissions/grant:\n    post:\n      operationId: grantPluginPermission\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/GrantPermissionRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PermissionMutationResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/permissions/revoke:\n    post:\n      operationId: revokePluginPermission\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/RevokePermissionRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/PermissionMutationResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/security-policies/query:\n    post:\n      operationId: listPluginSecurityPolicies\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecurityPolicyListResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/security-policies/{plugin_instance_id}/query:\n    post:\n      operationId: getPluginSecurityPolicy\n      x-redevplugin-route-effect: query\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecurityPolicyRecordResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/security-policies/{plugin_instance_id}:\n    put:\n      operationId: putPluginSecurityPolicy\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/PutSecurityPolicyRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecurityPolicyRecordResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n    delete:\n      operationId: deletePluginSecurityPolicy\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/DeleteSecurityPolicyRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecurityPolicyDeleteResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/diagnostics/query:\n    post:\n      operationId: listPluginDiagnosticEvents\n      x-redevplugin-route-effect: query\n      requestBody:\n        $ref: \"#/components/requestBodies/ListDiagnosticsQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/DiagnosticEventListResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/secrets/bind:\n    post:\n      operationId: bindPluginSecret\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/SecretRefRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecretBindResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/secrets/test:\n    post:\n      operationId: testPluginSecret\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/SecretRefRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecretTestResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/secrets/delete:\n    post:\n      operationId: deletePluginSecret\n      x-redevplugin-route-effect: mutation\n      requestBody:\n        $ref: \"#/components/requestBodies/SecretRefRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SecretDeleteResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n  /_redevplugin/api/plugins/{plugin_instance_id}/settings/schema/query:\n    post:\n      operationId: getPluginSettingsSchema\n      x-redevplugin-route-effect: query\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/SettingsQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SettingsSchemaResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/{plugin_instance_id}/settings/query:\n    post:\n      operationId: getPluginSettings\n      x-redevplugin-route-effect: query\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/SettingsQueryRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SettingsSnapshotResponse\" }\n        default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n  /_redevplugin/api/plugins/{plugin_instance_id}/settings:\n    patch:\n      operationId: patchPluginSettings\n      x-redevplugin-route-effect: mutation\n      parameters:\n        - $ref: \"#/components/parameters/PluginInstanceID\"\n      requestBody:\n        $ref: \"#/components/requestBodies/PatchSettingsRequest\"\n      responses:\n        \"200\": { $ref: \"#/components/responses/SettingsSnapshotResponse\" }\n        default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\ncomponents:\n  parameters:\n    OperationID:\n      name: operation_id\n      in: path\n      required: true\n      schema: { type: string }\n    PluginInstanceID:\n      name: plugin_instance_id\n      in: path\n      required: true\n      schema: { type: string }\n    SurfaceInstanceID:\n      name: surface_instance_id\n      in: path\n      required: true\n      schema: { type: string }\n  responses:\n    PlatformErrorResponse:\n      description: Closed non-success response for read-only platform operations.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PlatformErrorResponse\"\n    MutationPlatformErrorResponse:\n      description: Closed non-success response for operations that may change durable platform state.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/MutationPlatformErrorResponse\"\n    RPCResponse:\n      description: Typed plugin method result. Subscriptions always bind one operation and one stream.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RPCSuccessResponse\"\n    SurfaceBootstrapResponse:\n      description: Trusted-parent surface bootstrap. Capability-bearing fields are never forwarded into the opaque iframe or plugin worker.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SurfaceBootstrapSuccessResponse\"\n    SurfacePreparationResponse:\n      description: Trusted-parent asset-session exchange and validated opaque surface document.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SurfacePreparationSuccessResponse\"\n    BridgeTokenResponse:\n      description: Trusted-parent plugin gateway token response.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/BridgeTokenSuccessResponse\"\n    SurfaceAssetResponse:\n      description: Trusted-parent package asset response. The plugin receives only a renderer-created blob URL.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SurfaceAssetSuccessResponse\"\n    SurfaceStreamResponse:\n      description: Trusted-parent stream redemption response. Stream tickets remain outside the plugin worker.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SurfaceStreamSuccessResponse\"\n    SurfaceStreamAcknowledgementResponse:\n      description: Confirms one exact stream delivery so the platform may release its events.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SurfaceStreamAcknowledgementSuccessResponse\"\n    SurfaceDisposeResponse:\n      description: Surface revocation response.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SurfaceDisposeSuccessResponse\"\n    SessionScopeRevokeResponse:\n      description: Completed authenticated-session teardown response.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SessionScopeRevokeSuccessResponse\"\n    PluginRecordResponse:\n      description: Plugin lifecycle response with typed registry trust assessment.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PluginRecordSuccessResponse\"\n    PluginCatalogResponse:\n      description: Installed plugin catalog response with typed registry records.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PluginCatalogSuccessResponse\"\n    PluginFeaturesResponse:\n      description: Closed set of optional host modules configured for this platform.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PluginFeaturesSuccessResponse\"\n    CompatibilityResponse:\n      description: Released platform compatibility manifest.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/CompatibilitySuccessResponse\"\n    PluginMethodConfirmationPreparationResponse:\n      description: Prepared plugin method confirmation. The raw confirmation token stays server-side and is never returned to parent JavaScript or the plugin iframe.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PluginMethodConfirmationPreparationSuccessResponse\"\n    ConfirmationRejectionResponse:\n      description: Trusted-parent acknowledgement that the pending confirmation was atomically rejected and cannot be replayed.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ConfirmationRejectionSuccessResponse\"\n    IntentListResponse:\n      description: Enabled plugin intent records.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/IntentListSuccessResponse\"\n    RetainedDataListResponse:\n      description: Retained plugin data list response.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RetainedDataListSuccessResponse\"\n    RetainedDataBindingResponse:\n      description: Plugin data binding returned after a retained-data mutation.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RetainedDataBindingSuccessResponse\"\n    RetainedDataCleanupResponse:\n      description: Retained plugin data cleanup response.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RetainedDataCleanupSuccessResponse\"\n    OperationRecordResponse:\n      description: Host-owned operation record with its immutable execution binding.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/OperationRecordSuccessResponse\"\n    OperationListResponse:\n      description: Host-owned operation records with immutable execution bindings.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/OperationListSuccessResponse\"\n    RuntimeHealthResponse:\n      description: Runtime manager and shard health.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RuntimeHealthSuccessResponse\"\n    RuntimeStopResponse:\n      description: Runtime manager stop acknowledgement.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RuntimeStopSuccessResponse\"\n    RuntimeRefreshResponse:\n      description: Enabled plugin runtime refresh result.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RuntimeRefreshSuccessResponse\"\n    DataExportResponse:\n      description: Plugin data export result.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DataExportSuccessResponse\"\n    DataExportDeleteResponse:\n      description: Immutable plugin data export deletion acknowledgement.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DataExportDeleteSuccessResponse\"\n    DataImportResponse:\n      description: Plugin record after the imported dataset becomes active.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PluginRecordSuccessResponse\"\n    PermissionListResponse:\n      description: Permission grants for the requested plugin scope.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PermissionListSuccessResponse\"\n    PermissionMutationResponse:\n      description: Permission grant mutation result.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PermissionMutationSuccessResponse\"\n    SecurityPolicyListResponse:\n      description: Complete list of configured plugin security policies.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecurityPolicyListSuccessResponse\"\n    SecurityPolicyRecordResponse:\n      description: Complete security policy for one plugin instance.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecurityPolicyRecordSuccessResponse\"\n    SecurityPolicyDeleteResponse:\n      description: Security policy deletion acknowledgement.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecurityPolicyDeleteSuccessResponse\"\n    DiagnosticEventListResponse:\n      description: Diagnostic events matching the requested filters.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DiagnosticEventListSuccessResponse\"\n    SecretBindResponse:\n      description: Secret reference bind acknowledgement.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecretBindSuccessResponse\"\n    SecretTestResponse:\n      description: Secret reference test acknowledgement.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecretTestSuccessResponse\"\n    SecretDeleteResponse:\n      description: Secret reference deletion acknowledgement.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecretDeleteSuccessResponse\"\n    SettingsSchemaResponse:\n      description: Plugin settings schema.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SettingsSchemaSuccessResponse\"\n    SettingsSnapshotResponse:\n      description: Plugin settings snapshot.\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SettingsSnapshotSuccessResponse\"\n  requestBodies:\n    InstallReleaseRefRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/InstallReleaseRefRequest\"\n    UpdateReleaseRefRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/UpdateReleaseRefRequest\"\n    DowngradeRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DowngradeRequest\"\n    EnableRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/EnableRequest\"\n    DisableRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DisableRequest\"\n    UninstallRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/UninstallRequest\"\n    OpenSurfaceRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/OpenSurfaceRequest\"\n    RevokeSessionScopeRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RevokeSessionScopeRequest\"\n    EmptyRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/EmptyRequest\"\n    EmptyQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/EmptyQueryRequest\"\n    ListIntentsQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ListIntentsQueryRequest\"\n    ListOperationsQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ListOperationsQueryRequest\"\n    ListRetainedDataQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ListRetainedDataQueryRequest\"\n    ListPermissionsQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ListPermissionsQueryRequest\"\n    ListDiagnosticsQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ListDiagnosticsQueryRequest\"\n    SettingsQueryRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SettingsQueryRequest\"\n    PrepareSurfaceRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PrepareSurfaceRequest\"\n    TrustedParentBridgeTokenRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/TrustedParentBridgeTokenRequest\"\n    ReadSurfaceAssetRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ReadSurfaceAssetRequest\"\n    ReadSurfaceStreamRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ReadSurfaceStreamRequest\"\n    AcknowledgeSurfaceStreamRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/AcknowledgeSurfaceStreamRequest\"\n    CancelSurfaceOperationRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/CancelSurfaceOperationRequest\"\n    RejectSurfaceConfirmationRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RejectSurfaceConfirmationRequest\"\n    DisposeSurfaceRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DisposeSurfaceRequest\"\n    RPCRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RPCRequest\"\n    PrepareMethodConfirmationRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PrepareMethodConfirmationRequest\"\n    InvokeIntentRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/InvokeIntentRequest\"\n    CancelOperationRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/CancelOperationRequest\"\n    StartRuntimeRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/StartRuntimeRequest\"\n    ExportDataRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ExportDataRequest\"\n    DeleteDataExportRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DeleteDataExportRequest\"\n    ImportDataRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/ImportDataRequest\"\n    DeleteRetainedDataRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DeleteRetainedDataRequest\"\n    BindRetainedDataRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/BindRetainedDataRequest\"\n    CleanupExpiredRetainedDataRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/CleanupExpiredRetainedDataRequest\"\n    GrantPermissionRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/GrantPermissionRequest\"\n    RevokePermissionRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/RevokePermissionRequest\"\n    PutSecurityPolicyRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PutSecurityPolicyRequest\"\n    DeleteSecurityPolicyRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/DeleteSecurityPolicyRequest\"\n    SecretRefRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/SecretRefRequest\"\n    PatchSettingsRequest:\n      required: true\n      content:\n        application/json:\n          schema:\n            $ref: \"#/components/schemas/PatchSettingsRequest\"\n  schemas:\n    PlatformErrorResponse:\n      type: object\n      required: [ok, error]\n      additionalProperties: false\n      properties:\n        ok: { const: false }\n        error:\n          $ref: \"#/components/schemas/PlatformError\"\n    MutationPlatformErrorResponse:\n      type: object\n      required: [ok, error]\n      additionalProperties: false\n      properties:\n        ok: { const: false }\n        error:\n          $ref: \"#/components/schemas/MutationPlatformError\"\n    RPCSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/RPCResult\" }\n    SurfaceBootstrapSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SurfaceBootstrap\" }\n    SurfacePreparationSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SurfacePreparation\" }\n    BridgeTokenSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/BridgeTokenResult\" }\n    SurfaceAssetSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SurfaceAssetResult\" }\n    SurfaceStreamSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SurfaceStreamResult\" }\n    SurfaceStreamAcknowledgementSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SurfaceStreamAcknowledgementResult\" }\n    SurfaceDisposeSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SurfaceDisposeResult\" }\n    SessionScopeRevokeSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/SessionScopeRevokeCompleteResult\" }\n    PluginRecordSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginRecord\" }\n    PluginCatalogSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginCatalogResult\" }\n    PluginFeaturesSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data:\n          type: array\n          uniqueItems: true\n          items:\n            type: string\n            enum: [release, runtime, capability, connectivity, secrets, core_action]\n    CompatibilitySuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginCompatibilityManifest\" }\n    PluginMethodConfirmationPreparationSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginMethodConfirmationPreparation\" }\n    ConfirmationRejectionSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/ConfirmationRejectionResult\" }\n    IntentListSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginIntentList\" }\n    RetainedDataListSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/RetainedDataList\" }\n    RetainedDataBindingSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginDataBinding\" }\n    RetainedDataCleanupSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/RetainedDataCleanupResult\" }\n    OperationRecordSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/OperationRecord\" }\n    OperationListSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginOperationList\" }\n    RuntimeHealthSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginRuntimeHealth\" }\n    RuntimeStopSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginRuntimeStopResult\" }\n    RuntimeRefreshSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginRuntimeRefreshResult\" }\n    DataExportSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginDataExportResult\" }\n    DataExportDeleteSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginDataExportDeleteResult\" }\n    PermissionListSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginPermissionList\" }\n    PermissionMutationSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginPermissionMutationResult\" }\n    SecurityPolicyListSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSecurityPolicyList\" }\n    SecurityPolicyRecordSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSecurityPolicy\" }\n    SecurityPolicyDeleteSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSecurityPolicyDeleteResult\" }\n    DiagnosticEventListSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginDiagnosticEventList\" }\n    SecretBindSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSecretBindResult\" }\n    SecretTestSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSecretTestResult\" }\n    SecretDeleteSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSecretDeleteResult\" }\n    SettingsSchemaSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSettingsSchema\" }\n    SettingsSnapshotSuccessResponse:\n      type: object\n      required: [ok, data]\n      additionalProperties: false\n      properties:\n        ok: { const: true }\n        data: { $ref: \"#/components/schemas/PluginSettingsSnapshot\" }\n    PlatformError:\n      oneOf:\n        - $ref: \"#/components/schemas/GenericPlatformError\"\n        - $ref: \"#/components/schemas/JSONLimitPlatformError\"\n        - $ref: \"#/components/schemas/PackageValidationPlatformError\"\n        - $ref: \"#/components/schemas/ManagementRevisionPlatformError\"\n        - $ref: \"#/components/schemas/AuthorizationRevisionPlatformError\"\n        - $ref: \"#/components/schemas/BindingRevisionPlatformError\"\n        - $ref: \"#/components/schemas/ValuesRevisionPlatformError\"\n        - $ref: \"#/components/schemas/CapabilityPlatformError\"\n        - $ref: \"#/components/schemas/WorkerPlatformError\"\n    MutationPlatformError:\n      oneOf:\n        - $ref: \"#/components/schemas/MutationGenericPlatformError\"\n        - $ref: \"#/components/schemas/MutationJSONLimitPlatformError\"\n        - $ref: \"#/components/schemas/MutationPackageValidationPlatformError\"\n        - $ref: \"#/components/schemas/MutationManagementRevisionPlatformError\"\n        - $ref: \"#/components/schemas/MutationAuthorizationRevisionPlatformError\"\n        - $ref: \"#/components/schemas/MutationBindingRevisionPlatformError\"\n        - $ref: \"#/components/schemas/MutationValuesRevisionPlatformError\"\n        - $ref: \"#/components/schemas/MutationCapabilityPlatformError\"\n        - $ref: \"#/components/schemas/MutationWorkerPlatformError\"\n        - $ref: \"#/components/schemas/MutationSessionTeardownPlatformError\"\n    GenericPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code:\n          $ref: \"#/components/schemas/GenericPlatformErrorCode\"\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details:\n          $ref: \"#/components/schemas/EmptyErrorDetails\"\n    JSONLimitPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_JSON_LIMIT_EXCEEDED }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/JSONLimitErrorDetails\" }\n    PackageValidationPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code:\n          type: string\n          enum: [PLUGIN_MANIFEST_INVALID, PLUGIN_PACKAGE_INVALID, PLUGIN_PACKAGE_TOO_LARGE, PLUGIN_PACKAGE_PATH_FORBIDDEN]\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/PackageValidationErrorDetails\" }\n    ManagementRevisionPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_MANAGEMENT_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/ManagementRevisionMismatchDetails\" }\n    AuthorizationRevisionPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_AUTHORIZATION_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/AuthorizationRevisionMismatchDetails\" }\n    BindingRevisionPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_BINDING_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/BindingRevisionMismatchDetails\" }\n    ValuesRevisionPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_VALUES_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/ValuesRevisionMismatchDetails\" }\n    CapabilityPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_CAPABILITY_ERROR }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/CapabilityBusinessErrorDetails\" }\n    WorkerPlatformError:\n      type: object\n      required: [code, message, details]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_WORKER_ERROR }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/WorkerErrorDetails\" }\n    MutationGenericPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { $ref: \"#/components/schemas/GenericPlatformErrorCode\" }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/EmptyErrorDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationJSONLimitPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_JSON_LIMIT_EXCEEDED }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/JSONLimitErrorDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationPackageValidationPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code:\n          type: string\n          enum: [PLUGIN_MANIFEST_INVALID, PLUGIN_PACKAGE_INVALID, PLUGIN_PACKAGE_TOO_LARGE, PLUGIN_PACKAGE_PATH_FORBIDDEN]\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/PackageValidationErrorDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationManagementRevisionPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_MANAGEMENT_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/ManagementRevisionMismatchDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationAuthorizationRevisionPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_AUTHORIZATION_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/AuthorizationRevisionMismatchDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationBindingRevisionPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_BINDING_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/BindingRevisionMismatchDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationValuesRevisionPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_VALUES_REVISION_MISMATCH }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/ValuesRevisionMismatchDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationCapabilityPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_CAPABILITY_ERROR }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/CapabilityBusinessErrorDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationWorkerPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_WORKER_ERROR }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/WorkerErrorDetails\" }\n        mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n    MutationSessionTeardownPlatformError:\n      type: object\n      required: [code, message, details, mutation_outcome]\n      additionalProperties: false\n      properties:\n        code: { const: PLUGIN_SESSION_TEARDOWN_INCOMPLETE }\n        message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n        details: { $ref: \"#/components/schemas/SessionTeardownIncompleteErrorDetails\" }\n        mutation_outcome: { const: committed }\n    MutationOutcome:\n      type: string\n      enum: [committed, not_committed, unknown]\n    EmptyErrorDetails:\n      type: object\n      additionalProperties: false\n    JSONLimitErrorDetails:\n      type: object\n      required: [reason]\n      additionalProperties: false\n      properties:\n        reason:\n          type: string\n          enum: [payload_bytes, json_depth, prototype_key, number_precision]\n    PackageValidationErrorDetails:\n      type: object\n      required: [reason]\n      additionalProperties: false\n      properties:\n        reason:\n          type: string\n          enum: [manifest_missing, manifest_field, manifest_decode, zip_invalid, file_count, duplicate_entry, ambiguous_entry, non_regular_entry, invalid_utf8_path, non_nfc_path, symlink_entry, directory_entry, entry_bytes, path_length, compression_ratio, total_uncompressed_bytes, entry_open_failed, entry_read_failed, entry_close_failed, entry_size_mismatch, unsupported_signature_entry, manifest_artifact, package_asset_security, package_artifact_boundary, entry_path, manifest_canonical_json, canonical_hash, package_signature, empty_path, slash_separator, non_canonical_path, path_traversal, hidden_path, external_icon_path, unsupported_icon_format, missing_icon_asset, icon_magic_mismatch, query_or_fragment]\n        path:\n          type: string\n          description: Package-local entry path related to the error, when available.\n        pointer:\n          type: string\n          description: JSON Pointer into manifest.json related to the error, when available.\n    CapabilityBusinessErrorDetails:\n      type: object\n      additionalProperties: false\n      required: [capability_id, capability_version, detail_schema_sha256, business_error_code]\n      properties:\n        capability_id:\n          type: string\n          minLength: 1\n        capability_version:\n          $ref: \"#/components/schemas/StrictSemVer\"\n        detail_schema_sha256:\n          type: string\n          pattern: \"^[0-9a-f]{64}$\"\n        business_error_code:\n          type: string\n          pattern: \"^[A-Z][A-Z0-9_]*$\"\n        business_error_details:\n          type: object\n          additionalProperties: true\n    WorkerErrorDetails:\n      type: object\n      additionalProperties: false\n      required: [worker_error_code, worker_error_message, worker_error_origin]\n      properties:\n        worker_error_code:\n          type: string\n          pattern: \"^[A-Z][A-Z0-9_]*$\"\n        worker_error_message:\n          type: string\n          minLength: 1\n          maxLength: 4096\n        worker_error_origin:\n          type: string\n          enum: [runtime, hostcall, plugin]\n    SessionTeardownIncompleteErrorDetails:\n      type: object\n      additionalProperties: false\n      required: [session_scope]\n      properties:\n        session_scope:\n          $ref: \"#/components/schemas/SessionScopeRevokeIncompleteResult\"\n    ManagementRevisionMismatchDetails:\n      type: object\n      additionalProperties: false\n      required: [plugin_instance_id, expected_management_revision, actual_management_revision]\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        actual_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    AuthorizationRevisionMismatchDetails:\n      type: object\n      additionalProperties: false\n      required:\n        - plugin_instance_id\n        - expected_policy_revision\n        - actual_policy_revision\n        - expected_management_revision\n        - actual_management_revision\n        - expected_revoke_epoch\n        - actual_revoke_epoch\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        actual_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        actual_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        actual_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n    BindingRevisionMismatchDetails:\n      type: object\n      additionalProperties: false\n      required: [plugin_instance_id, expected_binding_revision, actual_binding_revision]\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        expected_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        actual_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    ValuesRevisionMismatchDetails:\n      type: object\n      additionalProperties: false\n      required: [plugin_instance_id, expected_values_revision, actual_values_revision]\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        expected_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        actual_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    ErrorCode:\n      $ref: \"../plugin/error-codes-v6.schema.json#/$defs/platform_error_code\"\n    PlatformErrorMessage:\n      type: string\n      minLength: 1\n      maxLength: 4096\n      pattern: \".*\\\\S.*\"\n    GenericPlatformErrorCode:\n      type: string\n      enum:\n        - PLUGIN_INVALID_REQUEST\n        - PLUGIN_SIGNATURE_INVALID\n        - PLUGIN_TRUST_STATE_DENIED\n        - PLUGIN_TRUST_VERIFICATION_REQUIRED\n        - PLUGIN_TRUST_VERIFICATION_INVALID\n        - PLUGIN_RELEASE_REF_VERIFICATION_FAILED\n        - PLUGIN_RELEASE_REF_POLICY_DENIED\n        - PLUGIN_DISABLED\n        - PLUGIN_DISABLED_BY_POLICY\n        - PLUGIN_PERMISSION_DENIED\n        - PLUGIN_ORIGIN_DENIED\n        - PLUGIN_ACTION_DENIED\n        - PLUGIN_OWNER_SCOPE_MISMATCH\n        - PLUGIN_SECRET_SCOPE_MISMATCH\n        - PLUGIN_STORAGE_SCOPE_MISMATCH\n        - PLUGIN_ADAPTER_FAILURE\n        - PLUGIN_SESSION_REVOKED\n        - PLUGIN_SESSION_TEARDOWN_INCOMPLETE\n        - PLUGIN_SESSION_FENCE_CAPACITY\n        - PLUGIN_CONFIRMATION_REQUIRED\n        - PLUGIN_CONFIRMATION_INVALID\n        - PLUGIN_TOKEN_EXPIRED\n        - PLUGIN_TOKEN_REPLAY\n        - PLUGIN_GATEWAY_TOKEN_INVALID\n        - PLUGIN_GATEWAY_TOKEN_REPLAYED\n        - PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\n        - PLUGIN_ASSET_TICKET_INVALID\n        - PLUGIN_ASSET_SESSION_INVALID\n        - PLUGIN_STREAM_TICKET_INVALID\n        - PLUGIN_STREAM_DELIVERY_INVALID\n        - PLUGIN_STREAM_CANCELLED\n        - PLUGIN_LEASE_INVALID\n        - PLUGIN_LEASE_REPLAYED\n        - PLUGIN_GRANT_INVALID\n        - PLUGIN_STORAGE_QUOTA_EXCEEDED\n        - PLUGIN_OPERATION_BLOCKED\n        - PLUGIN_OPERATION_NOT_FOUND\n        - PLUGIN_OPERATION_NOT_CANCELABLE\n        - PLUGIN_NETWORK_TARGET_DENIED\n        - PLUGIN_NETWORK_RATE_LIMITED\n        - PLUGIN_RUNTIME_UNAVAILABLE\n        - PLUGIN_RUNTIME_VERSION_MISMATCH\n        - PLUGIN_RUNTIME_CONTRACT_MISMATCH\n        - PLUGIN_UI_PROTOCOL_UNSUPPORTED\n        - PLUGIN_UI_PROTOCOL_VIOLATION\n        - PLUGIN_SURFACE_QUIESCE_TIMEOUT\n        - PLUGIN_CONTRACT_MISMATCH\n        - PLUGIN_CSRF_REQUIRED\n        - PLUGIN_CSRF_INVALID\n        - PLUGIN_FEATURE_NOT_CONFIGURED\n    SurfaceDisposeResult:\n      type: object\n      required: [disposed]\n      additionalProperties: false\n      properties:\n        disposed: { const: true }\n    SessionScopeRevokeCounts:\n      $ref: \"../plugin/session-scope-v1.schema.json#/$defs/revoke_counts\"\n    SessionScopeRevokeResult:\n      $ref: \"../plugin/session-scope-v1.schema.json#/$defs/public_revoke_result\"\n    SessionScopeRevokeCompleteResult:\n      $ref: \"../plugin/session-scope-v1.schema.json#/$defs/complete_revoke_result\"\n    SessionScopeRevokeIncompleteResult:\n      $ref: \"../plugin/session-scope-v1.schema.json#/$defs/incomplete_revoke_result\"\n    PluginCatalogResult:\n      type: object\n      required: [plugins]\n      additionalProperties: false\n      properties:\n        plugins:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginRecord\" }\n    PluginCompatibilityManifest:\n      $ref: \"../plugin/compatibility-manifest-v8.schema.json\"\n    PluginOperationList:\n      type: object\n      required: [operations]\n      additionalProperties: false\n      properties:\n        operations:\n          type: array\n          items: { $ref: \"#/components/schemas/OperationRecord\" }\n        next_cursor: { type: string, maxLength: 1024 }\n    PluginIntentRecord:\n      type: object\n      required: [plugin_id, plugin_instance_id, publisher_id, display_name, version, active_fingerprint, intent_id, method, effect, execution]\n      additionalProperties: false\n      properties:\n        plugin_id: { type: string }\n        plugin_instance_id: { type: string }\n        publisher_id: { type: string }\n        display_name: { type: string }\n        version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        active_fingerprint: { type: string }\n        intent_id: { type: string }\n        method: { type: string }\n        effect: { type: string, enum: [read, write, delete, execute, admin] }\n        execution: { type: string, enum: [sync, operation, subscription] }\n        payload_schema:\n          type: object\n          additionalProperties: true\n    PluginIntentList:\n      type: object\n      required: [intents]\n      additionalProperties: false\n      properties:\n        intents:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginIntentRecord\" }\n    PluginPermissionGrant:\n      type: object\n      description: Explicit public HTTP projection of a permission grant. Internal actor ownership hashes are never returned.\n      required: [plugin_instance_id, permission_id, effect, granted_at]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string }\n        permission_id: { type: string }\n        effect: { type: string, enum: [grant, deny] }\n        granted_at: { type: string, format: date-time }\n        expires_at: { type: string, format: date-time }\n        revoked_at: { type: string, format: date-time }\n        revoked_reason: { type: string }\n    PluginPermissionList:\n      type: object\n      required: [permissions]\n      additionalProperties: false\n      properties:\n        permissions:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginPermissionGrant\" }\n    AuthorizationRevisions:\n      type: object\n      required: [policy_revision, management_revision, revoke_epoch]\n      additionalProperties: false\n      properties:\n        policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n    PluginPermissionMutationResult:\n      type: object\n      required: [permission, revisions]\n      additionalProperties: false\n      properties:\n        permission: { $ref: \"#/components/schemas/PluginPermissionGrant\" }\n        revisions: { $ref: \"#/components/schemas/AuthorizationRevisions\" }\n    PluginSecurityPolicy:\n      type: object\n      required: [plugin_instance_id, allowed_permissions, denied_methods, policy_revision, management_revision, revoke_epoch, updated_at]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        allowed_permissions:\n          type: array\n          uniqueItems: true\n          items: { type: string, minLength: 1 }\n        denied_methods:\n          type: array\n          uniqueItems: true\n          items: { type: string, minLength: 1 }\n        policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        updated_at: { type: string, format: date-time }\n    PluginSecurityPolicyList:\n      type: object\n      required: [security_policies]\n      additionalProperties: false\n      properties:\n        security_policies:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginSecurityPolicy\" }\n    PluginSecurityPolicyDeleteResult:\n      type: object\n      required: [plugin_instance_id, deleted, policy_revision, management_revision, revoke_epoch]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        deleted: { const: true }\n        policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n    DiagnosticMutationOutcome:\n      type: string\n      enum: [committed, not_committed, unknown]\n    PluginDiagnosticDetails:\n      type: object\n      additionalProperties: false\n      properties:\n        operations_deleted: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        streams_deleted: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        invocation_id: { type: string }\n        method: { type: string }\n        failure_code: { type: string }\n        runtime_process_failure_code:\n          $ref: \"../plugin/error-codes-v6.schema.json#/$defs/runtime_process_failure_code\"\n        operation_id: { type: string }\n        stream_id: { type: string }\n        runtime_instance_id: { type: string }\n        runtime_generation_id: { type: string }\n        runtime_version: { type: string }\n        rust_ipc_version: { type: string }\n        wasm_abi_version: { type: string }\n        contract_set_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n        runtime_target_os: { type: string }\n        runtime_target_arch: { type: string }\n        runtime_binary_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n        os: { type: string }\n        arch: { type: string }\n        stream: { type: string }\n        package_hash: { type: string }\n        artifact: { type: string }\n        plugin_instance_id: { type: string }\n        store_id: { type: string }\n        operation: { type: string }\n        hostcall: { type: string }\n        code: { type: string }\n        connector_id: { type: string }\n        transport: { type: string }\n        revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        stage_id: { type: string }\n        reason: { type: string }\n        surface_instance_id: { type: string }\n    PluginDiagnosticEvent:\n      type: object\n      required: [type, severity, message]\n      additionalProperties: false\n      properties:\n        event_id: { type: string }\n        type: { type: string }\n        severity: { type: string, enum: [info, warning] }\n        message: { type: string }\n        plugin_id: { type: string }\n        plugin_instance_id: { type: string }\n        surface_id: { type: string }\n        surface_instance_id: { type: string }\n        active_fingerprint: { type: string }\n        request_id: { type: string }\n        correlation_id: { type: string }\n        mutation_outcome: { $ref: \"#/components/schemas/DiagnosticMutationOutcome\" }\n        occurred_at: { type: string, format: date-time }\n        details: { $ref: \"#/components/schemas/PluginDiagnosticDetails\" }\n    PluginDiagnosticEventList:\n      type: object\n      required: [diagnostic_events]\n      additionalProperties: false\n      properties:\n        diagnostic_events:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginDiagnosticEvent\" }\n    PluginRuntimeShardHealth:\n      type: object\n      description: Explicit public HTTP projection of runtime shard health. IPC channel credentials and connection nonces are excluded.\n      required: [runtime_shard_id, runtime_instance_id, runtime_generation_id, descriptor, ready, active_invocations, queued_invocations, limits, module_cache]\n      additionalProperties: false\n      properties:\n        runtime_shard_id: { type: string }\n        runtime_instance_id: { type: string }\n        runtime_generation_id: { type: string }\n        descriptor: { $ref: \"#/components/schemas/RuntimeDescriptor\" }\n        ready: { type: boolean }\n        active_invocations: { type: integer, minimum: 0 }\n        queued_invocations: { type: integer, minimum: 0 }\n        limits: { $ref: \"#/components/schemas/RuntimeLimits\" }\n        module_cache: { $ref: \"#/components/schemas/RuntimeModuleCacheMetrics\" }\n    PluginRuntimeHealth:\n      type: object\n      description: Explicit public HTTP projection of runtime manager health.\n      required: [ready, descriptor, shards]\n      additionalProperties: false\n      properties:\n        ready: { type: boolean }\n        descriptor: { $ref: \"#/components/schemas/RuntimeDescriptor\" }\n        shards:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginRuntimeShardHealth\" }\n    RuntimeTarget:\n      oneOf:\n        - type: object\n          required: [os, arch]\n          additionalProperties: false\n          properties:\n            os: { const: darwin }\n            arch: { const: amd64 }\n        - type: object\n          required: [os, arch]\n          additionalProperties: false\n          properties:\n            os: { const: darwin }\n            arch: { const: arm64 }\n        - type: object\n          required: [os, arch]\n          additionalProperties: false\n          properties:\n            os: { const: linux }\n            arch: { const: amd64 }\n        - type: object\n          required: [os, arch]\n          additionalProperties: false\n          properties:\n            os: { const: linux }\n            arch: { const: arm64 }\n    RuntimeAdmissionTarget:\n      type: string\n      enum: [linux/amd64, linux/arm64]\n    StrictSemVer:\n      type: string\n      pattern: '^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$'\n    RuntimeDescriptor:\n      type: object\n      required: [schema_version, platform_version, target, rust_ipc_version, wasm_abi_version, contract_set_sha256, binary_sha256]\n      additionalProperties: false\n      properties:\n        schema_version: { const: runtime-descriptor-v2 }\n        platform_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        target: { $ref: \"#/components/schemas/RuntimeAdmissionTarget\" }\n        rust_ipc_version: { const: rust-ipc-v6 }\n        wasm_abi_version: { const: redevplugin-wasm-worker-v2 }\n        contract_set_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n        binary_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n    RuntimeLimits:\n      type: object\n      description: \"Negotiated runtime capacities. per_plugin_concurrency must not exceed worker_count. Route capacities are derived exactly from negotiated limits: active hostcall routes = worker_count, canceled hostcall retention = worker_count + queue_capacity, and compile-flight artifact routes = worker_count.\"\n      required: [worker_count, queue_capacity, per_plugin_concurrency, module_cache_entries, module_cache_source_bytes]\n      additionalProperties: false\n      properties:\n        worker_count: { type: integer, minimum: 1, maximum: 64, description: \"Number of runtime worker threads.\" }\n        queue_capacity: { type: integer, minimum: 1, maximum: 64, description: \"Maximum queued worker invocations.\" }\n        per_plugin_concurrency: { type: integer, minimum: 1, maximum: 64, description: \"Maximum concurrent invocations for one plugin; must not exceed worker_count.\" }\n        module_cache_entries: { type: integer, minimum: 1, maximum: 1024, description: \"Maximum compiled modules retained by the runtime cache.\" }\n        module_cache_source_bytes: { type: integer, minimum: 1, maximum: 134217728, description: \"Maximum source WASM bytes retained by the runtime cache (128 MiB).\" }\n    RuntimeModuleCacheMetrics:\n      type: object\n      required: [hits, misses, compiles, entries, source_bytes]\n      additionalProperties: false\n      properties:\n        hits: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        misses: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        compiles: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        entries: { type: integer, minimum: 0, maximum: 1024 }\n        source_bytes: { type: integer, minimum: 0, maximum: 134217728 }\n    PluginRuntimeStopResult:\n      type: object\n      required: [stopped]\n      additionalProperties: false\n      properties:\n        stopped: { const: true }\n    PluginRuntimeRefreshResult:\n      type: object\n      required: [results]\n      additionalProperties: false\n      properties:\n        results:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginRuntimeRefreshEntry\" }\n    PluginRuntimeRefreshEntry:\n      oneOf:\n        - $ref: \"#/components/schemas/PluginRuntimeRefreshSuccess\"\n        - $ref: \"#/components/schemas/PluginRuntimeRefreshFailure\"\n    PluginRuntimeRefreshSuccess:\n      type: object\n      required: [plugin_instance_id, status]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        status: { const: refreshed }\n    PluginRuntimeRefreshFailure:\n      type: object\n      required: [plugin_instance_id, status, error]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        status: { const: failed }\n        error: { $ref: \"#/components/schemas/PluginRuntimeRefreshPublicError\" }\n    PluginRuntimeRefreshPublicError:\n      type: object\n      required: [code, message]\n      additionalProperties: false\n      properties:\n        code:\n          type: string\n          enum: [PLUGIN_RUNTIME_UNAVAILABLE]\n        message: { const: \"Plugin runtime state could not be refreshed\" }\n    PluginDataExportResult:\n      type: object\n      required: [bundle_ref]\n      additionalProperties: false\n      properties:\n        bundle_ref: { type: string, minLength: 1 }\n    PluginDataExportDeleteResult:\n      type: object\n      required: [deleted]\n      additionalProperties: false\n      properties:\n        deleted: { const: true }\n    PluginSecretBindResult:\n      type: object\n      required: [bound]\n      additionalProperties: false\n      properties:\n        bound: { const: true }\n    PluginSecretTestResult:\n      type: object\n      required: [tested]\n      additionalProperties: false\n      properties:\n        tested: { const: true }\n    PluginSecretDeleteResult:\n      type: object\n      required: [deleted]\n      additionalProperties: false\n      properties:\n        deleted: { const: true }\n    PluginSettingsField:\n      type: object\n      required: [key, type, label, scope]\n      additionalProperties: false\n      properties:\n        key: { type: string }\n        type: { type: string }\n        label: { type: string }\n        scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n        default: true\n        secret_ref: { type: string }\n        options:\n          type: array\n          items: { type: string }\n        validation:\n          type: object\n          additionalProperties: true\n    PluginSettingsSchema:\n      type: object\n      description: Explicit public HTTP projection of the settings schema for one owner scope.\n      required: [plugin_instance_id, scope, schema_version, fields, values_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string }\n        scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n        schema_version: { type: integer, minimum: 1 }\n        fields:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginSettingsField\" }\n        values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    PluginSettingsSnapshot:\n      type: object\n      description: Explicit public HTTP projection of settings values and redacted secret metadata for one owner scope.\n      required: [plugin_instance_id, scope, schema_version, values_revision, values, secret_metadata]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string }\n        scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n        schema_version: { type: integer, minimum: 1 }\n        values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        values:\n          type: object\n          additionalProperties: true\n        secret_metadata:\n          type: array\n          items: { $ref: \"#/components/schemas/PluginSettingsSecretMetadata\" }\n    PluginSettingsSecretMetadata:\n      type: object\n      required: [key, secret_ref, scope, bound]\n      additionalProperties: false\n      properties:\n        key: { type: string, minLength: 1 }\n        secret_ref: { type: string, minLength: 1 }\n        scope: { type: string, enum: [user, environment] }\n        bound: { type: boolean }\n        last_test_status: { type: string }\n        bound_at: { type: string, format: date-time }\n        tested_at: { type: string, format: date-time }\n        updated_at: { type: string, format: date-time }\n    TrustState:\n      type: string\n      enum: [verified, unsigned_local, untrusted, needs_review, trust_unavailable, blocked_security]\n    TrustHashSet:\n      type: object\n      required: [package_sha256, manifest_sha256, entries_sha256]\n      additionalProperties: false\n      properties:\n        package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        manifest_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        entries_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n    VerifiedSignature:\n      type: object\n      required: [algorithm, key_id]\n      additionalProperties: false\n      properties:\n        algorithm: { type: string, minLength: 1 }\n        key_id: { type: string, minLength: 1 }\n    TrustAssessment:\n      type: object\n      required: [trust_state, verified_hashes]\n      additionalProperties: false\n      properties:\n        trust_state:\n          $ref: \"#/components/schemas/TrustState\"\n        reason_codes:\n          type: array\n          items: { type: string }\n        verified_hashes:\n          $ref: \"#/components/schemas/TrustHashSet\"\n        verified_signature:\n          $ref: \"#/components/schemas/VerifiedSignature\"\n        trust_assessment_epoch: { type: string }\n        policy_epoch: { type: string }\n        revocation_epoch: { type: string }\n        metadata:\n          type: object\n          additionalProperties: { type: string }\n    PluginVersion:\n      type: object\n      required: [version, active_fingerprint, package_hash, manifest_hash, entries_hash, trust_state, trust_assessment, manifest, package_entries, activated_at]\n      additionalProperties: false\n      properties:\n        version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        active_fingerprint: { type: string, minLength: 1 }\n        package_hash: { type: string, minLength: 1 }\n        manifest_hash: { type: string, minLength: 1 }\n        entries_hash: { type: string, minLength: 1 }\n        trust_state:\n          $ref: \"#/components/schemas/TrustState\"\n        trust_assessment:\n          $ref: \"#/components/schemas/TrustAssessment\"\n        source_policy_snapshot_hash: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        source_policy_snapshot:\n          type: object\n          additionalProperties: true\n        local_import_provenance:\n          $ref: \"#/components/schemas/LocalImportProvenance\"\n        capability_contracts:\n          type: array\n          items: { $ref: \"#/components/schemas/CapabilityContractPin\" }\n        manifest:\n          $ref: \"../plugin/manifest-v5.schema.json\"\n        package_entries:\n          type: array\n          items: { $ref: \"#/components/schemas/PackageEntry\" }\n        runtime_requirement: { $ref: \"#/components/schemas/RuntimeRequirement\" }\n        activated_at: { type: string, format: date-time }\n        metadata:\n          type: object\n          additionalProperties: { type: string }\n    PluginRecord:\n      type: object\n      description: Explicit public HTTP projection of a registry record. Persistent owner identity is excluded.\n      required: [plugin_instance_id, publisher_id, plugin_id, version, active_fingerprint, package_hash, manifest_hash, entries_hash, trust_state, trust_assessment, enable_state, policy_revision, management_revision, revoke_epoch, manifest, package_entries, installed_at, updated_at]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        publisher_id: { type: string }\n        plugin_id: { type: string, minLength: 1 }\n        version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        active_fingerprint: { type: string, minLength: 1 }\n        package_hash: { type: string }\n        manifest_hash: { type: string }\n        entries_hash: { type: string }\n        trust_state:\n          $ref: \"#/components/schemas/TrustState\"\n        trust_assessment:\n          $ref: \"#/components/schemas/TrustAssessment\"\n        source_policy_snapshot_hash: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        source_policy_snapshot:\n          type: object\n          additionalProperties: true\n        local_import_provenance:\n          $ref: \"#/components/schemas/LocalImportProvenance\"\n        capability_contracts:\n          type: array\n          items: { $ref: \"#/components/schemas/CapabilityContractPin\" }\n        enable_state:\n          type: string\n          enum: [disabled, enabled, disabled_by_policy, disabled_incompatible]\n        disabled_reason: { type: string }\n        policy_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        management_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        manifest:\n          $ref: \"../plugin/manifest-v5.schema.json\"\n        package_entries:\n          type: array\n          items: { $ref: \"#/components/schemas/PackageEntry\" }\n        runtime_requirement: { $ref: \"#/components/schemas/RuntimeRequirement\" }\n        version_history:\n          type: array\n          items:\n            $ref: \"#/components/schemas/PluginVersion\"\n        installed_at: { type: string, format: date-time }\n        enabled_at: { type: string, format: date-time }\n        updated_at: { type: string, format: date-time }\n        deleted_at: { type: string, format: date-time }\n        metadata:\n          type: object\n          additionalProperties: { type: string }\n    PackageEntry:\n      type: object\n      required: [path, size, sha256, mode]\n      additionalProperties: false\n      properties:\n        path: { type: string, minLength: 1 }\n        size: { type: integer, minimum: 0 }\n        sha256: { type: string, pattern: \"^[0-9a-f]{64}$\" }\n        mode: { type: string, minLength: 1 }\n        content_type: { type: string }\n    RuntimeRequirement:\n      type: object\n      required: [min_version]\n      additionalProperties: false\n      properties:\n        min_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        supported_targets:\n          type: array\n          uniqueItems: true\n          items:\n            type: string\n            enum: [darwin/amd64, darwin/arm64, linux/amd64, linux/arm64]\n    LocalImportProvenance:\n      type: object\n      required: [import_id, distribution, policy_epoch, unsigned_policy, assessed_at]\n      additionalProperties: false\n      properties:\n        import_id: { type: string, minLength: 1 }\n        distribution: { enum: [local_import] }\n        policy_epoch: { type: string, minLength: 1 }\n        unsigned_policy: { enum: [dev_only, review_required, block] }\n        assessed_at: { type: string, format: date-time }\n    PackageHashSet:\n      type: object\n      required: [package_sha256, manifest_sha256, entries_sha256]\n      additionalProperties: false\n      properties:\n        package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        manifest_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        entries_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n    PluginReleaseRef:\n      type: object\n      required: [source_id, channel, release_metadata_ref, release_metadata_sha256, publisher_id, plugin_id, version, expected_hashes]\n      additionalProperties: false\n      properties:\n        source_id: { type: string, minLength: 1 }\n        channel: { type: string, pattern: \"^[a-z][a-z0-9._-]{0,127}$\" }\n        release_metadata_ref: { type: string, minLength: 1 }\n        release_metadata_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n        publisher_id: { type: string, minLength: 1 }\n        plugin_id: { type: string, minLength: 1 }\n        version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        expected_hashes:\n          $ref: \"#/components/schemas/PackageHashSet\"\n    InstallReleaseRefRequest:\n      type: object\n      required: [plugin_instance_id, release_ref]\n      additionalProperties: false\n      properties:\n        release_ref:\n          $ref: \"#/components/schemas/PluginReleaseRef\"\n        plugin_instance_id: { type: string, minLength: 1 }\n    UpdateReleaseRefRequest:\n      type: object\n      required: [plugin_instance_id, release_ref, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        release_ref:\n          $ref: \"#/components/schemas/PluginReleaseRef\"\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    DowngradeRequest:\n      type: object\n      required: [plugin_instance_id, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        package_hash: { type: string }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    EnableRequest:\n      type: object\n      required: [plugin_instance_id, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    DisableRequest:\n      type: object\n      required: [plugin_instance_id, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        reason: { type: string }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    UninstallRequest:\n      type: object\n      required: [plugin_instance_id, delete_data, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        delete_data: { type: boolean }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    OpenSurfaceRequest:\n      type: object\n      required: [plugin_instance_id, surface_id, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        surface_id: { type: string, minLength: 1 }\n        surface_instance_id: { type: string }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    RevokeSessionScopeRequest:\n      type: object\n      additionalProperties: false\n      maxProperties: 0\n    EmptyRequest:\n      type: object\n      additionalProperties: false\n      maxProperties: 0\n    EmptyQueryRequest:\n      type: object\n      additionalProperties: false\n      maxProperties: 0\n    ListIntentsQueryRequest:\n      type: object\n      additionalProperties: false\n      properties:\n        intent_id: { type: string, minLength: 1 }\n        plugin_instance_id: { type: string, minLength: 1 }\n    ListOperationsQueryRequest:\n      type: object\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        cursor: { type: string, minLength: 1, maxLength: 1024 }\n        limit: { type: integer, minimum: 1, maximum: 500 }\n    ListRetainedDataQueryRequest:\n      type: object\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n    ListPermissionsQueryRequest:\n      type: object\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        active_only: { type: boolean }\n    ListDiagnosticsQueryRequest:\n      type: object\n      additionalProperties: false\n      properties:\n        plugin_id: { type: string, minLength: 1 }\n        plugin_instance_id: { type: string, minLength: 1 }\n        surface_instance_id: { type: string, minLength: 1 }\n        type: { type: string, minLength: 1 }\n        severity: { type: string, enum: [info, warning] }\n        limit: { type: integer, minimum: 1, maximum: 1000 }\n    SettingsQueryRequest:\n      type: object\n      additionalProperties: false\n      required: [scope]\n      properties:\n        scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n    SurfaceBootstrap:\n      type: object\n      additionalProperties: false\n      required:\n        - plugin_id\n        - plugin_instance_id\n        - plugin_version\n        - surface_id\n        - surface_instance_id\n        - active_fingerprint\n        - entry_path\n        - entry_sha256\n        - asset_session_nonce\n        - management_revision\n        - revoke_epoch\n        - runtime_generation_id\n        - asset_ticket\n        - asset_ticket_id\n        - bridge_nonce\n        - issued_at\n        - expires_at\n      properties:\n        plugin_id: { type: string, minLength: 1 }\n        plugin_instance_id: { type: string, minLength: 1 }\n        plugin_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        surface_id: { type: string, minLength: 1 }\n        surface_instance_id: { type: string, minLength: 1 }\n        active_fingerprint: { type: string, minLength: 1 }\n        entry_path: { type: string, minLength: 1 }\n        entry_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n        asset_session_nonce: { type: string, minLength: 16 }\n        management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        runtime_generation_id: { type: string, minLength: 1 }\n        asset_ticket: { type: string, minLength: 1 }\n        asset_ticket_id: { type: string, minLength: 1 }\n        bridge_nonce: { type: string, minLength: 16 }\n        issued_at: { type: string, format: date-time }\n        expires_at: { type: string, format: date-time }\n    PrepareSurfaceRequest:\n      type: object\n      required: [asset_ticket]\n      additionalProperties: false\n      properties:\n        asset_ticket: { type: string, minLength: 1 }\n    SurfacePreparation:\n      type: object\n      additionalProperties: false\n      required:\n        - asset_session\n        - asset_session_id\n        - asset_session_nonce\n        - entry_path\n        - entry_sha256\n        - management_revision\n        - revoke_epoch\n        - issued_at\n        - expires_at\n        - document\n      properties:\n        asset_session: { type: string, minLength: 1 }\n        asset_session_id: { type: string, minLength: 1 }\n        asset_session_nonce: { type: string, minLength: 16 }\n        entry_path: { type: string, minLength: 1 }\n        entry_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n        management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        issued_at: { type: string, format: date-time }\n        expires_at: { type: string, format: date-time }\n        document:\n          $ref: \"../plugin/opaque-surface-document-v3.schema.json\"\n    TrustedParentBridgeHandshake:\n      type: object\n      required: [type, plugin_id, surface_id, surface_instance_id, active_fingerprint, bridge_nonce, asset_session_nonce, management_revision, revoke_epoch, ui_protocol_version]\n      additionalProperties: false\n      properties:\n        type: { const: redevplugin.bridge.handshake }\n        plugin_id: { type: string, minLength: 1 }\n        surface_id: { type: string, minLength: 1 }\n        surface_instance_id: { type: string, minLength: 1 }\n        active_fingerprint: { type: string, minLength: 1 }\n        bridge_nonce: { type: string, minLength: 16 }\n        asset_session_nonce: { type: string, minLength: 16 }\n        management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        ui_protocol_version: { const: plugin-ui-v5 }\n    TrustedParentBridgeTokenRequest:\n      type: object\n      required: [handshake, bridge_channel_id, handshake_transcript_sha256]\n      additionalProperties: false\n      properties:\n        handshake:\n          $ref: \"#/components/schemas/TrustedParentBridgeHandshake\"\n        bridge_channel_id: { type: string, minLength: 1 }\n        handshake_transcript_sha256:\n          type: string\n          pattern: '^sha256:[0-9a-f]{64}$'\n        previous_plugin_gateway_token:\n          type: string\n          minLength: 1\n          description: Required only when renewing the current bridge channel lease.\n    BridgeTokenResult:\n      type: object\n      additionalProperties: false\n      required: [plugin_gateway_token, plugin_gateway_token_id, asset_session, asset_session_id, issued_at, expires_at]\n      properties:\n        plugin_gateway_token: { type: string, minLength: 1 }\n        plugin_gateway_token_id: { type: string, minLength: 1 }\n        asset_session: { type: string, minLength: 1 }\n        asset_session_id: { type: string, minLength: 1 }\n        issued_at: { type: string, format: date-time }\n        expires_at: { type: string, format: date-time }\n    ReadSurfaceAssetRequest:\n      type: object\n      additionalProperties: false\n      required: [asset_session, asset_session_id, binding_id]\n      properties:\n        asset_session: { type: string, minLength: 1 }\n        asset_session_id: { type: string, minLength: 1 }\n        binding_id: { type: string, pattern: '^asset_[A-Za-z0-9_-]{8,128}$' }\n    SurfaceAssetResult:\n      type: object\n      additionalProperties: false\n      required: [path, sha256, content_type, content_base64]\n      properties:\n        path: { type: string, minLength: 1 }\n        sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n        content_type: { type: string, minLength: 1 }\n        content_base64: { type: string, contentEncoding: base64 }\n    ReadSurfaceStreamRequest:\n      type: object\n      additionalProperties: false\n      required: [stream_id, stream_ticket, read_id]\n      properties:\n        stream_id: { type: string, minLength: 1 }\n        stream_ticket: { type: string, minLength: 1 }\n        read_id: { type: string, pattern: '^read_[A-Za-z0-9_-]{8,128}$' }\n    AcknowledgeSurfaceStreamRequest:\n      type: object\n      additionalProperties: false\n      required: [stream_id, stream_ticket, delivery_id]\n      properties:\n        stream_id: { type: string, minLength: 1 }\n        stream_ticket: { type: string, minLength: 1 }\n        delivery_id: { type: string, pattern: '^delivery_[A-Za-z0-9_-]{8,128}$' }\n    SurfaceStreamResult:\n      type: object\n      additionalProperties: false\n      required: [read_id, events, done]\n      properties:\n        delivery_id: { type: string, pattern: '^delivery_[A-Za-z0-9_-]{8,128}$' }\n        read_id: { type: string, pattern: '^read_[A-Za-z0-9_-]{8,128}$' }\n        events:\n          type: array\n          items:\n            $ref: \"#/components/schemas/StreamEvent\"\n        done: { type: boolean }\n        terminal_status:\n          enum: [closed, canceled, failed, orphaned_after_disable, orphaned_after_uninstall]\n      allOf:\n        - if:\n            properties: { events: { minItems: 1 } }\n            required: [events]\n          then:\n            required: [delivery_id]\n        - if:\n            properties: { done: { const: false } }\n            required: [done]\n          then:\n            not:\n              required: [terminal_status]\n        - if:\n            properties: { done: { const: true } }\n            required: [done]\n          then:\n            required: [delivery_id, terminal_status]\n    SurfaceStreamAcknowledgementResult:\n      type: object\n      required: [acknowledged]\n      additionalProperties: false\n      properties:\n        acknowledged: { const: true }\n    CancelSurfaceOperationRequest:\n      type: object\n      additionalProperties: false\n      required: [operation_id, bridge_channel_id]\n      properties:\n        operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n        bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n        reason: { type: string, maxLength: 256 }\n    RejectSurfaceConfirmationRequest:\n      type: object\n      additionalProperties: false\n      required: [plugin_instance_id, bridge_channel_id, plugin_gateway_token, confirmation_id]\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n        plugin_gateway_token: { type: string, minLength: 1 }\n        confirmation_id: { type: string, pattern: '^confirmation_[A-Za-z0-9_-]{8,128}$' }\n    ConfirmationRejectionResult:\n      type: object\n      additionalProperties: false\n      required: [rejected]\n      properties:\n        rejected: { const: true }\n    StreamEvent:\n      type: object\n      additionalProperties: false\n      required: [stream_id, sequence, kind, at]\n      properties:\n        stream_id: { type: string, minLength: 1 }\n        sequence: { type: integer, minimum: 0 }\n        kind: { type: string, minLength: 1 }\n        data: { type: string, contentEncoding: base64 }\n        error: { type: string }\n        at: { type: string, format: date-time }\n    DisposeSurfaceRequest:\n      type: object\n      additionalProperties: false\n      required: [bridge_nonce]\n      properties:\n        bridge_nonce: { type: string, minLength: 16 }\n    RPCRequest:\n      type: object\n      required: [plugin_instance_id, surface_instance_id, bridge_channel_id, plugin_gateway_token, method]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        surface_instance_id: { type: string, minLength: 1 }\n        bridge_channel_id: { type: string, minLength: 1 }\n        plugin_gateway_token: { type: string, minLength: 1 }\n        confirmation_id: { type: string }\n        method: { type: string, minLength: 1 }\n        params:\n          type: object\n          additionalProperties: true\n    PrepareMethodConfirmationRequest:\n      type: object\n      required: [plugin_instance_id, surface_instance_id, bridge_channel_id, plugin_gateway_token, method]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        surface_instance_id: { type: string, minLength: 1 }\n        bridge_channel_id: { type: string, minLength: 1 }\n        plugin_gateway_token: { type: string, minLength: 1 }\n        method: { type: string, minLength: 1 }\n        params:\n          type: object\n          additionalProperties: true\n    RPCResult:\n      oneOf:\n        - type: object\n          additionalProperties: false\n          properties:\n            data: true\n          not:\n            anyOf:\n              - required: [operation_id]\n              - required: [stream_id]\n              - required: [confirmation_required]\n        - type: object\n          additionalProperties: false\n          required: [operation_id]\n          properties:\n            data: true\n            operation_id: { type: string, minLength: 1 }\n        - type: object\n          additionalProperties: false\n          required: [operation_id, stream_id, stream_ticket, stream_ticket_id, stream_expires_at]\n          properties:\n            data: true\n            operation_id: { type: string, minLength: 1 }\n            stream_id: { type: string, minLength: 1 }\n            stream_ticket: { type: string, minLength: 1 }\n            stream_ticket_id: { type: string, minLength: 1 }\n            stream_expires_at: { type: string, format: date-time }\n        - type: object\n          additionalProperties: false\n          required: [confirmation_required, confirmation_token_id, request_hash, plan_hash]\n          properties:\n            confirmation_required: { const: true }\n            confirmation_token_id: { type: string, minLength: 1 }\n            request_hash: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n            plan_hash: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n    RiskFlag:\n      type: object\n      required: [id, severity, summary]\n      additionalProperties: false\n      properties:\n        id:\n          type: string\n          minLength: 1\n          description: Stable machine-readable risk identifier.\n        severity:\n          type: string\n          enum: [info, low, medium, high, critical]\n        summary: { type: string, minLength: 1 }\n        description: { type: string }\n        requires_confirmation: { type: boolean }\n        requires_admin: { type: boolean }\n        data_loss_risk: { type: boolean }\n        destructive: { type: boolean }\n    RiskPlan:\n      type: object\n      required: [schema_version, summary, risk_flags]\n      additionalProperties: false\n      properties:\n        schema_version: { const: redevplugin.capability.risk_plan.v1 }\n        capability_id: { type: string }\n        binding_id: { type: string }\n        method: { type: string }\n        target_method: { type: string }\n        action: { type: string }\n        effect:\n          type: string\n          enum: [read, write, execute, delete, admin]\n        resource_ref: { type: string }\n        resource_display_name: { type: string }\n        summary: { type: string, minLength: 1 }\n        risk_flags:\n          type: array\n          items:\n            $ref: \"#/components/schemas/RiskFlag\"\n        requires_confirmation: { type: boolean }\n        requires_admin: { type: boolean }\n        data_loss_risk: { type: boolean }\n        destructive: { type: boolean }\n        deny_reason: { type: string }\n        details:\n          type: object\n          additionalProperties: true\n    PluginMethodConfirmationPreparation:\n      type: object\n      required: [confirmation_id, confirmation_token_id, request_hash, plan_hash, expires_at]\n      additionalProperties: false\n      properties:\n        confirmation_id: { type: string, minLength: 1 }\n        confirmation_token_id:\n          type: string\n          minLength: 1\n          description: Opaque audit/display id for the server-held confirmation token. It is not a credential.\n        request_hash:\n          type: string\n          pattern: \"^sha256:[0-9a-f]{64}$\"\n        plan_hash:\n          type: string\n          pattern: \"^sha256:[0-9a-f]{64}$\"\n        plan:\n          description: Host-redacted confirmation plan payload returned by the declared preflight method, when available.\n          oneOf:\n            - $ref: \"#/components/schemas/RiskPlan\"\n            - type: object\n              additionalProperties: true\n        expires_at: { type: string, format: date-time }\n    InvokeIntentRequest:\n      type: object\n      required: [intent_id]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string }\n        intent_id: { type: string, minLength: 1 }\n        params:\n          type: object\n          additionalProperties: true\n    CancelOperationRequest:\n      type: object\n      additionalProperties: false\n      properties:\n        reason: { type: string }\n    CapabilityContractPin:\n      $ref: \"../plugin/host-capability-pin-v1.schema.json\"\n    PublicOperationBinding:\n      type: object\n      description: Public immutable execution evidence embedded into operation responses. Session and bridge channel ownership fields are excluded.\n      required:\n        - invocation_id\n        - audit_correlation_id\n        - publisher_id\n        - plugin_id\n        - plugin_instance_id\n        - plugin_version\n        - active_fingerprint\n        - route_kind\n        - capability_id\n        - capability_version\n        - binding_id\n        - method\n        - target_method\n        - effect\n        - execution\n        - permissions\n        - confirmation\n        - revision\n        - quota\n        - target\n        - target_descriptor_sha256\n      properties:\n        invocation_id: { type: string, minLength: 1 }\n        audit_correlation_id: { type: string, minLength: 1 }\n        operation_id: { type: string, minLength: 1 }\n        stream_id: { type: string, minLength: 1 }\n        publisher_id: { type: string, minLength: 1 }\n        plugin_id: { type: string, minLength: 1 }\n        plugin_instance_id: { type: string, minLength: 1 }\n        plugin_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        active_fingerprint: { type: string, minLength: 1 }\n        surface_instance_id: { type: string }\n        route_kind: { type: string, enum: [capability, worker, core_action] }\n        capability_id: { type: string, minLength: 1 }\n        capability_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n        binding_id: { type: string, minLength: 1 }\n        contract:\n          $ref: \"#/components/schemas/CapabilityContractPin\"\n        method: { type: string, minLength: 1 }\n        target_method: { type: string, minLength: 1 }\n        effect: { type: string, enum: [read, write, execute, delete, admin] }\n        execution: { type: string, enum: [sync, operation, subscription] }\n        permissions:\n          type: object\n          additionalProperties: false\n          required: [required, granted]\n          properties:\n            required: { type: array, items: { type: string } }\n            granted: { type: array, items: { type: string } }\n        confirmation:\n          type: object\n          additionalProperties: false\n          required: [required, confirmed]\n          properties:\n            required: { type: boolean }\n            confirmed: { type: boolean }\n            confirmation_id: { type: string }\n            request_sha256: { type: string }\n            plan_sha256: { type: string }\n            target_sha256: { type: string }\n        revision:\n          type: object\n          additionalProperties: false\n          required: [policy_revision, management_revision, revoke_epoch]\n          properties:\n            policy_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n            management_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n            revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        quota:\n          type: object\n          additionalProperties: false\n          properties:\n            max_concurrent: { type: integer, minimum: 0, maximum: 9007199254740991 }\n            max_duration_ms: { type: integer, minimum: 0, maximum: 9007199254740991 }\n            max_stream_bytes: { type: integer, minimum: 0, maximum: 9007199254740991 }\n            expires_at: { type: string, format: date-time }\n        target:\n          type: object\n          additionalProperties: false\n          required: [kind, fields]\n          properties:\n            kind: { type: string, minLength: 1 }\n            fields: { type: object, additionalProperties: true }\n        target_descriptor_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n        stream_event_type_name: { type: string, minLength: 1 }\n        stream_event_schema_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n      oneOf:\n        - required: [route_kind, contract]\n          properties:\n            route_kind: { const: capability }\n        - required: [route_kind]\n          properties:\n            route_kind: { const: worker }\n          not:\n            required: [contract]\n        - required: [route_kind]\n          properties:\n            route_kind: { const: core_action }\n          not:\n            required: [contract]\n    OperationRecord:\n      allOf:\n        - $ref: \"#/components/schemas/PublicOperationBinding\"\n        - type: object\n          required:\n            - operation_id\n            - cancelable\n            - created_at\n            - updated_at\n          properties:\n            operation_id: { type: string, minLength: 1 }\n            execution: { type: string, enum: [operation, subscription] }\n            cancelable: { type: boolean }\n            cancel_ack_timeout_ms: { type: integer, minimum: 0 }\n            disable_behavior: { type: string, enum: [cancel, orphan, wait] }\n            uninstall_behavior: { type: string, enum: [cancel_then_block_delete, force_cleanup_allowed] }\n            created_at: { type: string, format: date-time }\n            updated_at: { type: string, format: date-time }\n            cancel_requested_at: { type: string, format: date-time }\n            orphaned_at: { type: string, format: date-time }\n            terminal_at: { type: string, format: date-time }\n          oneOf:\n            - type: object\n              required: [status, failure_code, reason]\n              properties:\n                status: { const: failed }\n                failure_code: { $ref: \"#/components/schemas/ExecutionFailureCode\" }\n                reason: { const: \"execution failed\" }\n            - type: object\n              required: [status]\n              properties:\n                status:\n                  enum: [running, cancel_requested, canceled, completed, orphaned_after_disable, orphaned_after_uninstall]\n                reason: { type: string }\n              not:\n                required: [failure_code]\n      unevaluatedProperties: false\n    ExecutionFailureCode:\n      type: string\n      enum: [adapter_failed, contract_invalid, platform_failed, quota_exceeded, runtime_failed]\n    StartRuntimeRequest:\n      type: object\n      required: [target]\n      additionalProperties: false\n      properties:\n        target: { $ref: \"#/components/schemas/RuntimeTarget\" }\n    ExportDataRequest:\n      type: object\n      required: [plugin_instance_id]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n    DeleteDataExportRequest:\n      type: object\n      required: [plugin_instance_id, bundle_ref]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        bundle_ref: { type: string, minLength: 1 }\n    ImportDataRequest:\n      type: object\n      required: [plugin_instance_id, bundle_ref, expected_management_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        bundle_ref: { type: string, minLength: 1 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    PluginDataBinding:\n      type: object\n      required: [plugin_instance_id, generation_id, state, revision, shape_hash]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        generation_id: { type: string, minLength: 1 }\n        state: { type: string, enum: [active, retained] }\n        revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        shape_hash: { type: string, pattern: \"^[0-9a-f]{64}$\" }\n        retained_at: { type: string, format: date-time }\n        expires_at: { type: string, format: date-time }\n    RetainedDataList:\n      type: object\n      required: [retained_data]\n      additionalProperties: false\n      properties:\n        retained_data:\n          type: array\n          items:\n            $ref: \"#/components/schemas/PluginDataBinding\"\n    RetainedDataCleanupResult:\n      type: object\n      required: [deleted]\n      additionalProperties: false\n      properties:\n        deleted:\n          type: array\n          items:\n            $ref: \"#/components/schemas/PluginDataBinding\"\n    DeleteRetainedDataRequest:\n      type: object\n      required: [plugin_instance_id, expected_binding_revision]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        expected_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    BindRetainedDataRequest:\n      type: object\n      required: [source_plugin_instance_id, expected_source_binding_revision, target_plugin_instance_id, target_expected_management_revision]\n      additionalProperties: false\n      properties:\n        source_plugin_instance_id: { type: string, minLength: 1 }\n        expected_source_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        target_plugin_instance_id: { type: string, minLength: 1 }\n        target_expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n    CleanupExpiredRetainedDataRequest:\n      type: object\n      additionalProperties: false\n    GrantPermissionRequest:\n      type: object\n      required: [plugin_instance_id, permission_id, expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        permission_id: { type: string, minLength: 1 }\n        expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        expires_at: { type: string, format: date-time }\n    RevokePermissionRequest:\n      type: object\n      required: [plugin_instance_id, permission_id, expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        permission_id: { type: string, minLength: 1 }\n        expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        reason: { type: string }\n    PutSecurityPolicyRequest:\n      type: object\n      required: [expected_policy_revision, expected_management_revision, expected_revoke_epoch, allowed_permissions, denied_methods]\n      additionalProperties: false\n      properties:\n        expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n        allowed_permissions:\n          type: array\n          uniqueItems: true\n          items: { type: string, minLength: 1 }\n        denied_methods:\n          type: array\n          uniqueItems: true\n          items: { type: string, minLength: 1 }\n    DeleteSecurityPolicyRequest:\n      type: object\n      required: [expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n      additionalProperties: false\n      properties:\n        expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n    SecretRefRequest:\n      type: object\n      required: [plugin_instance_id, secret_ref, scope]\n      additionalProperties: false\n      properties:\n        plugin_instance_id: { type: string, minLength: 1 }\n        secret_ref: { type: string, minLength: 1 }\n        scope: { type: string, enum: [user, environment] }\n    ResourceScopeKind:\n      type: string\n      enum: [user, environment]\n    PatchSettingsRequest:\n      type: object\n      required: [scope, expected_values_revision]\n      additionalProperties: false\n      minProperties: 3\n      properties:\n        scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n        expected_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n        set:\n          type: object\n          minProperties: 1\n          additionalProperties: true\n        remove:\n          type: array\n          minItems: 1\n          uniqueItems: true\n          items: { type: string, minLength: 1 }\n".as_bytes();
172static CONTRACT_BODY_PROCESS_CONTAINMENT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/process-containment-v1.schema.json\",\n  \"title\": \"ReDevPlugin runtime process containment evidence v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"profile\", \"seccomp_policy_sha256\", \"no_new_privs\", \"seccomp_tsync\", \"process_creation_denied\", \"reexec_denied\", \"active\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.process_containment.v1\"},\n    \"profile\": {\"const\": \"linux-runtime-v1\"},\n    \"seccomp_policy_sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n    \"no_new_privs\": {\"const\": true},\n    \"seccomp_tsync\": {\"const\": true},\n    \"process_creation_denied\": {\"const\": true},\n    \"reexec_denied\": {\"const\": true},\n    \"active\": {\"const\": true}\n  }\n}\n".as_bytes();
173static CONTRACT_BODY_QUARANTINE_CLEANUP_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/quarantine-cleanup-v1.schema.json\",\n  \"title\": \"ReDevPlugin quarantine cleanup journal v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"migration_id\",\n    \"root_identity_sha256\",\n    \"quarantine_id\",\n    \"quarantine_sha256\",\n    \"state\",\n    \"entries\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"quarantine-cleanup-v1\" },\n    \"migration_id\": { \"type\": \"string\", \"pattern\": \"^migration_[0-9a-f]{32}$\" },\n    \"root_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"quarantine_id\": { \"type\": \"string\", \"pattern\": \"^quarantine_[0-9a-f]{32}$\" },\n    \"quarantine_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"state\": { \"enum\": [\"delete_prepared\", \"deleting\", \"delete_reconcile_required\", \"deleted\"] },\n    \"entries\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 200000,\n      \"items\": { \"$ref\": \"#/$defs/entry\" }\n    }\n  },\n  \"$defs\": {\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"entry\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"path\", \"kind\", \"device\", \"inode\", \"uid\", \"mode\", \"size\", \"nlink\", \"sha256\"],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"minLength\": 1,\n          \"maxLength\": 4096,\n          \"pattern\": \"^[^/\\\\\\\\]+(?:/[^/\\\\\\\\]+)*$\",\n          \"not\": { \"pattern\": \"(^|/)\\\\.\\\\.?($|/)\" }\n        },\n        \"kind\": { \"enum\": [\"directory\", \"file\"] },\n        \"device\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 18446744073709551615 },\n        \"inode\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 18446744073709551615 },\n        \"uid\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 4294967295 },\n        \"mode\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 4095 },\n        \"size\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 4294967296 },\n        \"nlink\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 1 },\n        \"sha256\": { \"type\": \"string\", \"pattern\": \"^$|^[0-9a-f]{64}$\" }\n      }\n    }\n  }\n}\n".as_bytes();
174static CONTRACT_BODY_RELEASE_METADATA_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-metadata-v5.schema.json\",\n  \"title\": \"ReDevPlugin signed plugin release metadata v5\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"source_id\",\n    \"release_metadata_ref\",\n    \"publisher_id\",\n    \"plugin_id\",\n    \"version\",\n    \"distribution_ref\",\n    \"hashes\",\n    \"release_metadata_signature\",\n    \"package_signature\",\n    \"compatibility\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_metadata.v5\" },\n    \"source_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"release_metadata_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"publisher_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"version\": { \"$ref\": \"#/$defs/semver\" },\n    \"distribution_ref\": { \"$ref\": \"#/$defs/distribution_ref\" },\n    \"hashes\": { \"$ref\": \"#/$defs/package_hash_set\" },\n    \"release_metadata_signature\": { \"$ref\": \"#/$defs/release_metadata_signature\" },\n    \"package_signature\": { \"$ref\": \"#/$defs/package_release_signature\" },\n    \"compatibility\": { \"$ref\": \"#/$defs/release_compatibility\" },\n    \"host_requirements\": {\n      \"type\": \"array\",\n      \"items\": { \"$ref\": \"#/$defs/host_requirement\" }\n    },\n    \"release_evidence\": { \"$ref\": \"#/$defs/release_evidence\" },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"additionalProperties\": { \"type\": \"string\" }\n    }\n  },\n  \"$defs\": {\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"artifact_ref\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"pattern\": \"^[A-Za-z0-9._/@+-]+$\",\n      \"not\": {\n        \"anyOf\": [\n          { \"pattern\": \"^/\" },\n          { \"pattern\": \"(^|/)\\\\.\\\\.(/|$)\" },\n          { \"pattern\": \"\\\\\\\\\" },\n          { \"pattern\": \"[?#]\" }\n        ]\n      }\n    },\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(sha256:)?[a-f0-9]{64}$\"\n    },\n    \"distribution_ref\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"distribution\", \"artifact_ref\"],\n      \"properties\": {\n        \"distribution\": { \"enum\": [\"registry_ref\", \"host_artifact_ref\"] },\n        \"artifact_ref\": { \"$ref\": \"#/$defs/artifact_ref\" }\n      }\n    },\n    \"package_hash_set\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"package_sha256\", \"manifest_sha256\", \"entries_sha256\"],\n      \"properties\": {\n        \"package_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"manifest_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"entries_sha256\": { \"$ref\": \"#/$defs/sha256\" }\n      }\n    },\n    \"release_metadata_signature\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"algorithm\", \"key_id\", \"signature_ref\", \"source_policy_epoch\", \"revocation_epoch\"],\n      \"properties\": {\n        \"algorithm\": { \"enum\": [\"ed25519\"] },\n        \"key_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"signature_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n        \"source_policy_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" },\n        \"revocation_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" }\n      }\n    },\n    \"package_release_signature\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"algorithm\", \"key_id\", \"signature_bundle_ref\", \"source_policy_epoch\", \"revocation_epoch\"],\n      \"properties\": {\n        \"algorithm\": { \"enum\": [\"ed25519\"] },\n        \"key_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"signature_bundle_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n        \"source_policy_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" },\n        \"revocation_epoch\": { \"$ref\": \"#/$defs/decimal_epoch\" }\n      }\n    },\n    \"release_compatibility\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"min_redevplugin_version\", \"min_runtime_version\", \"ui_protocol_version\"],\n      \"properties\": {\n        \"min_redevplugin_version\": { \"$ref\": \"#/$defs/semver\" },\n        \"min_runtime_version\": { \"$ref\": \"#/$defs/semver\" },\n        \"ui_protocol_version\": { \"const\": \"plugin-ui-v5\" },\n        \"supported_targets\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": { \"enum\": [\"darwin/amd64\", \"darwin/arm64\", \"linux/amd64\", \"linux/arm64\"] }\n        }\n      }\n    },\n    \"host_requirement\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"host_id\"],\n      \"properties\": {\n        \"host_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"min_host_version\": { \"$ref\": \"#/$defs/semver\" },\n        \"required_capability_contracts\": {\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/$defs/host_capability_requirement\" }\n        }\n      }\n    },\n    \"host_capability_requirement\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"capability_id\",\n        \"capability_version\",\n        \"contract\"\n      ],\n      \"properties\": {\n        \"capability_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"capability_version\": { \"$ref\": \"#/$defs/semver\" },\n        \"contract\": { \"$ref\": \"#/$defs/host_capability_contract_ref\" }\n      }\n    },\n    \"host_capability_contract_ref\": {\n      \"$ref\": \"host-capability-pin-v1.schema.json\"\n    },\n    \"release_evidence\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"notices_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"provenance_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"generated_at\": { \"type\": \"string\", \"format\": \"date-time\" }\n      }\n    },\n    \"decimal_epoch\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)$\"\n    }\n  }\n}\n".as_bytes();
175static CONTRACT_BODY_RELEASE_REVOCATION_POINTER_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-revocation-pointer-v1.schema.json\",\n  \"title\": \"ReDevPlugin release revocation pointer v1\",\n  \"$ref\": \"#/$defs/pointer\",\n  \"$defs\": {\n    \"pointer\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"schema_version\",\n        \"source_id\",\n        \"channel\",\n        \"epoch\",\n        \"previous_epoch\",\n        \"previous_document_sha256\",\n        \"ref\",\n        \"document_sha256\",\n        \"generated_at\",\n        \"expires_at\",\n        \"key_id\",\n        \"signature\"\n      ],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_revocation_pointer.v1\" },\n        \"source_id\": { \"$ref\": \"#/$defs/id\" },\n        \"channel\": { \"$ref\": \"#/$defs/id\" },\n        \"epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n        \"previous_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n        \"previous_document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n        \"document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"generated_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n        \"expires_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"signature\": { \"$ref\": \"#/$defs/signature\" }\n      }\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[a-z][a-z0-9._-]*$\"\n    },\n    \"artifact_ref\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1024,\n      \"pattern\": \"^[A-Za-z0-9._@+-]+(?:/[A-Za-z0-9._@+-]+)*$\",\n      \"not\": {\n        \"anyOf\": [\n          { \"pattern\": \"^/\" },\n          { \"pattern\": \"(^|/)\\\\.(/|$)\" },\n          { \"pattern\": \"(^|/)\\\\.\\\\.(/|$)\" },\n          { \"pattern\": \"\\\\\\\\\" },\n          { \"pattern\": \"[?#]\" }\n        ]\n      }\n    },\n    \"epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)$\" },\n    \"positive_epoch\": { \"type\": \"string\", \"pattern\": \"^[1-9][0-9]*$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"canonical_time\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\"\n    },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  }\n}\n".as_bytes();
176static CONTRACT_BODY_RELEASE_REVOCATION_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-revocation-v2.schema.json\",\n  \"title\": \"ReDevPlugin release revocation v2\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"source_id\",\n    \"channel\",\n    \"epoch\",\n    \"previous_epoch\",\n    \"previous_document_sha256\",\n    \"root_epoch\",\n    \"generated_at\",\n    \"expires_at\",\n    \"revoked_key_ids\",\n    \"revoked_releases\",\n    \"key_id\",\n    \"signature\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_revocation.v2\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"channel\": { \"$ref\": \"#/$defs/id\" },\n    \"epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n    \"previous_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n    \"previous_document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"root_epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n    \"generated_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n    \"expires_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n    \"revoked_key_ids\": {\n      \"type\": \"array\",\n      \"maxItems\": 4096,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/id\" }\n    },\n    \"revoked_releases\": {\n      \"type\": \"array\",\n      \"maxItems\": 16384,\n      \"items\": { \"$ref\": \"#/$defs/revoked_release\" }\n    },\n    \"key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature\": { \"$ref\": \"#/$defs/signature\" }\n  },\n  \"$defs\": {\n    \"revoked_release\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"publisher_id\",\n        \"plugin_id\",\n        \"version\",\n        \"release_metadata_sha256\",\n        \"revoked_at\"\n      ],\n      \"properties\": {\n        \"publisher_id\": { \"$ref\": \"#/$defs/legacy_id\" },\n        \"plugin_id\": { \"$ref\": \"#/$defs/legacy_id\" },\n        \"version\": { \"$ref\": \"#/$defs/semver\" },\n        \"release_metadata_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"revoked_at\": { \"$ref\": \"#/$defs/canonical_time\" }\n      }\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[a-z][a-z0-9._-]*$\"\n    },\n    \"legacy_id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\"\n    },\n    \"epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)$\" },\n    \"positive_epoch\": { \"type\": \"string\", \"pattern\": \"^[1-9][0-9]*$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"canonical_time\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\"\n    },\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  }\n}\n".as_bytes();
177static CONTRACT_BODY_RELEASE_ROOT_DELEGATION_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-root-delegation-v1.schema.json\",\n  \"title\": \"ReDevPlugin release root delegation v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"source_id\",\n    \"root_epoch\",\n    \"previous_root_epoch\",\n    \"previous_delegation_sha256\",\n    \"generated_at\",\n    \"expires_at\",\n    \"delegated_keys\",\n    \"key_id\",\n    \"signature\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_root_delegation.v1\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"root_epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n    \"previous_root_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n    \"previous_delegation_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"generated_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n    \"expires_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n    \"delegated_keys\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 32,\n      \"items\": { \"$ref\": \"#/$defs/delegated_key\" }\n    },\n    \"key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature\": { \"$ref\": \"#/$defs/signature\" }\n  },\n  \"$defs\": {\n    \"delegated_key\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"algorithm\",\n        \"key_id\",\n        \"public_key\",\n        \"usages\",\n        \"channels\",\n        \"valid_from\",\n        \"valid_until\"\n      ],\n      \"properties\": {\n        \"algorithm\": { \"const\": \"ed25519\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"public_key\": { \"$ref\": \"#/$defs/public_key\" },\n        \"usages\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 9,\n          \"uniqueItems\": true,\n          \"items\": {\n            \"enum\": [\n              \"package\",\n              \"release_metadata\",\n              \"host_capability_contract\",\n              \"source_policy_document\",\n              \"source_policy_pointer\",\n              \"revocation_document\",\n              \"revocation_pointer\",\n              \"signing_ledger\",\n              \"trusted_time\"\n            ]\n          }\n        },\n        \"channels\": {\n          \"type\": \"array\",\n          \"minItems\": 0,\n          \"maxItems\": 16,\n          \"uniqueItems\": true,\n          \"items\": { \"$ref\": \"#/$defs/id\" }\n        },\n        \"valid_from\": { \"$ref\": \"#/$defs/canonical_time\" },\n        \"valid_until\": { \"$ref\": \"#/$defs/canonical_time\" }\n      },\n      \"allOf\": [\n        {\n          \"if\": {\n            \"properties\": {\n              \"usages\": { \"contains\": { \"enum\": [\"signing_ledger\", \"trusted_time\"] } }\n            },\n            \"required\": [\"usages\"]\n          },\n          \"then\": {\n            \"properties\": {\n              \"usages\": { \"items\": { \"enum\": [\"signing_ledger\", \"trusted_time\"] } },\n              \"channels\": { \"maxItems\": 0 }\n            }\n          },\n          \"else\": {\n            \"properties\": {\n              \"channels\": { \"minItems\": 1 },\n              \"usages\": {\n                \"items\": {\n                  \"enum\": [\n                    \"package\", \"release_metadata\", \"host_capability_contract\", \"source_policy_document\", \"source_policy_pointer\",\n                    \"revocation_document\", \"revocation_pointer\"\n                  ]\n                }\n              }\n            }\n          }\n        }\n      ]\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[a-z][a-z0-9._-]*$\"\n    },\n    \"epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)$\" },\n    \"positive_epoch\": { \"type\": \"string\", \"pattern\": \"^[1-9][0-9]*$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"canonical_time\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\"\n    },\n    \"public_key\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{43}=$\" },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  }\n}\n".as_bytes();
178static CONTRACT_BODY_RELEASE_SIGNATURE_ENVELOPE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-signature-envelope-v1.schema.json\",\n  \"title\": \"ReDevPlugin release signature envelope v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\", \"subject_identity_sha256\", \"signing_preimage_sha256\",\n    \"algorithm\", \"key_id\", \"signature\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_signature_envelope.v1\" },\n    \"subject_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signing_preimage_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"algorithm\": { \"const\": \"ed25519\" },\n    \"key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" }\n  }\n}\n".as_bytes();
179static CONTRACT_BODY_RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-signing-ledger-evidence-v1.schema.json\",\n  \"title\": \"ReDevPlugin release signing ledger evidence v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"source_id\",\n    \"subject_identity_sha256\",\n    \"signing_preimage_sha256\",\n    \"signature_envelope_sha256\",\n    \"receipt_ref\",\n    \"receipt_sha256\",\n    \"checkpoint_ref\",\n    \"checkpoint_sha256\",\n    \"inclusion_proof_ref\",\n    \"inclusion_proof_sha256\",\n    \"latest_proof_ref\",\n    \"latest_proof_sha256\"\n  ],\n  \"dependentRequired\": {\n    \"consistency_proof_ref\": [\"consistency_proof_sha256\"],\n    \"consistency_proof_sha256\": [\"consistency_proof_ref\"]\n  },\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger_evidence.v1\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"channel\": { \"$ref\": \"#/$defs/id\" },\n    \"subject_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signing_preimage_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signature_envelope_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"receipt_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"receipt_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"checkpoint_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"checkpoint_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"inclusion_proof_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"inclusion_proof_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"latest_proof_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"latest_proof_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"consistency_proof_ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n    \"consistency_proof_sha256\": { \"$ref\": \"#/$defs/sha256\" }\n  },\n  \"$defs\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[a-z][a-z0-9._-]*$\"\n    },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"artifact_ref\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1024,\n      \"pattern\": \"^[A-Za-z0-9._@+-]+(?:/[A-Za-z0-9._@+-]+)*$\",\n      \"not\": {\n        \"anyOf\": [\n          { \"pattern\": \"^/\" },\n          { \"pattern\": \"(^|/)\\\\.(/|$)\" },\n          { \"pattern\": \"(^|/)\\\\.\\\\.(/|$)\" },\n          { \"pattern\": \"\\\\\\\\\" },\n          { \"pattern\": \"[?#]\" }\n        ]\n      }\n    }\n  }\n}\n".as_bytes();
180static CONTRACT_BODY_RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-signing-ledger-receipt-v1.schema.json\",\n  \"title\": \"ReDevPlugin release signing ledger receipt v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\", \"log_id\", \"source_id\", \"subject_identity_sha256\", \"signing_preimage_sha256\",\n    \"signature_envelope_sha256\", \"sequence\", \"leaf_index\", \"tree_size\", \"log_root_hash\",\n    \"latest_map_root_hash\", \"checkpoint_sha256\", \"checkpoint_time\", \"key_id\", \"signature\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger_receipt.v1\" },\n    \"log_id\": { \"$ref\": \"#/$defs/id\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"channel\": { \"$ref\": \"#/$defs/id\" },\n    \"subject_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signing_preimage_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"signature_envelope_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"sequence\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n    \"leaf_index\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740990 },\n    \"tree_size\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n    \"log_root_hash\": { \"$ref\": \"#/$defs/sha256\" },\n    \"latest_map_root_hash\": { \"$ref\": \"#/$defs/sha256\" },\n    \"checkpoint_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"checkpoint_time\": { \"$ref\": \"#/$defs/time\" },\n    \"key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"time\": { \"type\": \"string\", \"format\": \"date-time\", \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\" }\n  }\n}\n".as_bytes();
181static CONTRACT_BODY_RELEASE_SIGNING_LEDGER_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-signing-ledger-v1.schema.json\",\n  \"title\": \"ReDevPlugin release signing ledger v1\",\n  \"oneOf\": [\n    { \"$ref\": \"#/$defs/entry\" },\n    { \"$ref\": \"#/$defs/log_leaf\" },\n    { \"$ref\": \"#/$defs/checkpoint\" },\n    { \"$ref\": \"#/$defs/inclusion_proof\" },\n    { \"$ref\": \"#/$defs/latest_proof\" },\n    { \"$ref\": \"#/$defs/consistency_proof\" }\n  ],\n  \"$defs\": {\n\t\"log_leaf\": {\n\t  \"type\": \"object\",\n\t  \"additionalProperties\": false,\n\t  \"required\": [\n\t\t\"schema_version\", \"source_id\", \"subject_identity_sha256\", \"signing_preimage_sha256\",\n\t\t\"signature_envelope_sha256\", \"sequence\"\n\t  ],\n\t  \"properties\": {\n\t\t\"schema_version\": { \"const\": \"redevplugin.release_signing_ledger_log_leaf.v1\" },\n\t\t\"source_id\": { \"$ref\": \"#/$defs/id\" },\n\t\t\"channel\": { \"$ref\": \"#/$defs/id\" },\n\t\t\"subject_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n\t\t\"signing_preimage_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n\t\t\"signature_envelope_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n\t\t\"sequence\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 }\n\t  }\n\t},\n    \"entry\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"schema_version\", \"state\", \"subject\", \"subject_identity_sha256\", \"signing_preimage_sha256\",\n        \"algorithm\", \"key_id\", \"revision\", \"reserved_at\"\n      ],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger_entry.v1\" },\n        \"state\": { \"enum\": [\"reserved\", \"finalized\", \"terminal_failed\"] },\n        \"subject\": { \"$ref\": \"https://schemas.redevplugin.dev/plugin/release-signing-subject-v1.schema.json\" },\n        \"subject_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"signing_preimage_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"algorithm\": { \"const\": \"ed25519\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"revision\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"reserved_at\": { \"$ref\": \"#/$defs/time\" },\n        \"signature_envelope\": { \"$ref\": \"https://schemas.redevplugin.dev/plugin/release-signature-envelope-v1.schema.json\" },\n        \"signature_envelope_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"finalized_at\": { \"$ref\": \"#/$defs/time\" },\n        \"failure_code\": { \"enum\": [\"signer_rejected\", \"subject_conflict\", \"ledger_rejected\"] },\n        \"failed_at\": { \"$ref\": \"#/$defs/time\" }\n      },\n      \"allOf\": [\n        {\n          \"if\": { \"properties\": { \"state\": { \"const\": \"reserved\" } }, \"required\": [\"state\"] },\n          \"then\": {\n            \"not\": {\n              \"anyOf\": [\n                { \"required\": [\"signature_envelope\"] }, { \"required\": [\"signature_envelope_sha256\"] },\n                { \"required\": [\"finalized_at\"] }, { \"required\": [\"failure_code\"] }, { \"required\": [\"failed_at\"] }\n              ]\n            }\n          }\n        },\n        {\n          \"if\": { \"properties\": { \"state\": { \"const\": \"finalized\" } }, \"required\": [\"state\"] },\n          \"then\": { \"required\": [\"signature_envelope\", \"signature_envelope_sha256\", \"finalized_at\"] },\n          \"else\": {\n            \"not\": {\n              \"anyOf\": [\n                { \"required\": [\"signature_envelope\"] }, { \"required\": [\"signature_envelope_sha256\"] },\n                { \"required\": [\"finalized_at\"] }\n              ]\n            }\n          }\n        },\n        {\n          \"if\": { \"properties\": { \"state\": { \"const\": \"terminal_failed\" } }, \"required\": [\"state\"] },\n          \"then\": { \"required\": [\"failure_code\", \"failed_at\"] },\n          \"else\": {\n            \"not\": { \"anyOf\": [{ \"required\": [\"failure_code\"] }, { \"required\": [\"failed_at\"] }] }\n          }\n        }\n      ]\n    },\n    \"checkpoint\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"schema_version\", \"kind\", \"log_id\", \"tree_size\", \"log_root_hash\", \"latest_map_root_hash\",\n        \"checkpoint_time\", \"key_id\", \"signature\"\n      ],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger.v1\" },\n        \"kind\": { \"const\": \"checkpoint\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" },\n        \"tree_size\": { \"$ref\": \"#/$defs/tree_size\" },\n        \"log_root_hash\": { \"$ref\": \"#/$defs/sha256\" },\n        \"latest_map_root_hash\": { \"$ref\": \"#/$defs/sha256\" },\n        \"checkpoint_time\": { \"$ref\": \"#/$defs/time\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"signature\": { \"$ref\": \"#/$defs/signature\" }\n      }\n    },\n    \"inclusion_proof\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"kind\", \"log_id\", \"leaf_index\", \"tree_size\", \"nodes\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger.v1\" },\n        \"kind\": { \"const\": \"inclusion_proof\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" },\n        \"leaf_index\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740990 },\n        \"tree_size\": { \"$ref\": \"#/$defs/tree_size\" },\n        \"nodes\": { \"$ref\": \"#/$defs/log_proof\" }\n      }\n    },\n    \"latest_proof\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"kind\", \"log_id\", \"subject_identity_sha256\", \"present\", \"siblings\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger.v1\" },\n        \"kind\": { \"const\": \"latest_proof\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" },\n        \"subject_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"present\": { \"type\": \"boolean\" },\n        \"sequence\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"signing_preimage_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"signature_envelope_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"siblings\": {\n          \"type\": \"array\", \"minItems\": 256, \"maxItems\": 256,\n          \"items\": { \"$ref\": \"#/$defs/sha256\" }\n        }\n      },\n      \"allOf\": [\n        {\n          \"if\": { \"properties\": { \"present\": { \"const\": true } }, \"required\": [\"present\"] },\n          \"then\": { \"required\": [\"sequence\", \"signing_preimage_sha256\", \"signature_envelope_sha256\"] },\n          \"else\": {\n            \"not\": {\n              \"anyOf\": [\n                { \"required\": [\"sequence\"] },\n                { \"required\": [\"signing_preimage_sha256\"] },\n                { \"required\": [\"signature_envelope_sha256\"] }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"consistency_proof\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"kind\", \"log_id\", \"old_tree_size\", \"new_tree_size\", \"nodes\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_ledger.v1\" },\n        \"kind\": { \"const\": \"consistency_proof\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" },\n        \"old_tree_size\": { \"$ref\": \"#/$defs/tree_size\" },\n        \"new_tree_size\": { \"$ref\": \"#/$defs/tree_size\" },\n        \"nodes\": { \"$ref\": \"#/$defs/log_proof\" }\n      }\n    },\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"tree_size\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n    \"time\": { \"type\": \"string\", \"format\": \"date-time\", \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\" },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" },\n    \"log_proof\": {\n      \"type\": \"array\", \"maxItems\": 64,\n      \"items\": { \"$ref\": \"#/$defs/sha256\" }\n    }\n  }\n}\n".as_bytes();
182static CONTRACT_BODY_RELEASE_SIGNING_SUBJECT_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-signing-subject-v1.schema.json\",\n  \"title\": \"ReDevPlugin release signing subject v1\",\n  \"oneOf\": [\n    { \"$ref\": \"#/$defs/root_subject\" },\n    { \"$ref\": \"#/$defs/release_subject\" },\n    { \"$ref\": \"#/$defs/epoch_subject\" }\n  ],\n  \"$defs\": {\n    \"root_subject\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"usage\", \"source_id\", \"root_epoch\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_subject.v1\" },\n        \"usage\": { \"const\": \"root_delegation\" },\n        \"source_id\": { \"$ref\": \"#/$defs/id\" },\n        \"root_epoch\": { \"$ref\": \"#/$defs/positive_epoch\" }\n      }\n    },\n    \"release_subject\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"schema_version\", \"usage\", \"source_id\", \"channel\", \"publisher_id\",\n        \"plugin_id\", \"version\", \"artifact_or_metadata_identity_sha256\"\n      ],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_subject.v1\" },\n        \"usage\": { \"enum\": [\"package\", \"release_metadata\"] },\n        \"source_id\": { \"$ref\": \"#/$defs/id\" },\n        \"channel\": { \"$ref\": \"#/$defs/id\" },\n        \"publisher_id\": { \"$ref\": \"#/$defs/legacy_id\" },\n        \"plugin_id\": { \"$ref\": \"#/$defs/legacy_id\" },\n        \"version\": { \"$ref\": \"#/$defs/semver\" },\n        \"artifact_or_metadata_identity_sha256\": { \"$ref\": \"#/$defs/sha256\" }\n      }\n    },\n    \"epoch_subject\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"usage\", \"source_id\", \"channel\", \"epoch\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_signing_subject.v1\" },\n        \"usage\": {\n          \"enum\": [\"source_policy_document\", \"source_policy_pointer\", \"revocation_document\", \"revocation_pointer\"]\n        },\n        \"source_id\": { \"$ref\": \"#/$defs/id\" },\n        \"channel\": { \"$ref\": \"#/$defs/id\" },\n        \"epoch\": { \"$ref\": \"#/$defs/positive_epoch\" }\n      }\n    },\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"legacy_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$\" },\n    \"positive_epoch\": { \"type\": \"string\", \"pattern\": \"^[1-9][0-9]*$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    }\n  }\n}\n".as_bytes();
183static CONTRACT_BODY_RELEASE_SOURCE_POLICY_POINTER_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-source-policy-pointer-v1.schema.json\",\n  \"title\": \"ReDevPlugin release source policy pointer v1\",\n  \"$ref\": \"#/$defs/pointer\",\n  \"$defs\": {\n    \"pointer\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"schema_version\",\n        \"source_id\",\n        \"channel\",\n        \"epoch\",\n        \"previous_epoch\",\n        \"previous_document_sha256\",\n        \"ref\",\n        \"document_sha256\",\n        \"generated_at\",\n        \"expires_at\",\n        \"key_id\",\n        \"signature\"\n      ],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.release_source_policy_pointer.v1\" },\n        \"source_id\": { \"$ref\": \"#/$defs/id\" },\n        \"channel\": { \"$ref\": \"#/$defs/id\" },\n        \"epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n        \"previous_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n        \"previous_document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"ref\": { \"$ref\": \"#/$defs/artifact_ref\" },\n        \"document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"generated_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n        \"expires_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"signature\": { \"$ref\": \"#/$defs/signature\" }\n      }\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[a-z][a-z0-9._-]*$\"\n    },\n    \"artifact_ref\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1024,\n      \"pattern\": \"^[A-Za-z0-9._@+-]+(?:/[A-Za-z0-9._@+-]+)*$\",\n      \"not\": {\n        \"anyOf\": [\n          { \"pattern\": \"^/\" },\n          { \"pattern\": \"(^|/)\\\\.(/|$)\" },\n          { \"pattern\": \"(^|/)\\\\.\\\\.(/|$)\" },\n          { \"pattern\": \"\\\\\\\\\" },\n          { \"pattern\": \"[?#]\" }\n        ]\n      }\n    },\n    \"epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)$\" },\n    \"positive_epoch\": { \"type\": \"string\", \"pattern\": \"^[1-9][0-9]*$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"canonical_time\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\"\n    },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  }\n}\n".as_bytes();
184static CONTRACT_BODY_RELEASE_SOURCE_POLICY_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-source-policy-v2.schema.json\",\n  \"title\": \"ReDevPlugin release source policy v2\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"source_id\",\n    \"channel\",\n    \"epoch\",\n    \"previous_epoch\",\n    \"previous_document_sha256\",\n    \"root_epoch\",\n    \"source_type\",\n    \"source_class\",\n    \"allowed_publishers\",\n    \"allowed_artifact_hosts\",\n    \"active_keys\",\n    \"capability_publisher_scopes\",\n    \"require_signature\",\n    \"install_policy\",\n    \"unsigned_policy\",\n    \"downgrade_policy\",\n    \"minimum_revocation_epoch\",\n    \"limits\",\n    \"generated_at\",\n    \"expires_at\",\n    \"key_id\",\n    \"signature\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_source_policy.v2\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"channel\": { \"$ref\": \"#/$defs/id\" },\n    \"epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n    \"previous_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n    \"previous_document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"root_epoch\": { \"$ref\": \"#/$defs/positive_epoch\" },\n    \"source_type\": { \"enum\": [\"registry\", \"host_artifact\"] },\n    \"source_class\": { \"enum\": [\"official\", \"curated\", \"community\", \"private\"] },\n    \"allowed_publishers\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 1024,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/id\" }\n    },\n    \"allowed_artifact_hosts\": {\n      \"type\": \"array\",\n      \"maxItems\": 1024,\n      \"uniqueItems\": true,\n      \"items\": {\n        \"type\": \"string\",\n        \"minLength\": 1,\n        \"maxLength\": 253,\n        \"pattern\": \"^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$\"\n      }\n    },\n    \"active_keys\": { \"$ref\": \"#/$defs/active_keys\" },\n    \"capability_publisher_scopes\": { \"$ref\": \"#/$defs/capability_publisher_scopes\" },\n    \"require_signature\": { \"type\": \"boolean\" },\n    \"install_policy\": { \"enum\": [\"allow\", \"review_required\", \"block\"] },\n    \"unsigned_policy\": { \"enum\": [\"dev_only\", \"review_required\", \"block\"] },\n    \"downgrade_policy\": { \"enum\": [\"review_required\", \"block\"] },\n    \"minimum_revocation_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n    \"limits\": { \"$ref\": \"#/$defs/limits\" },\n    \"generated_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n    \"expires_at\": { \"$ref\": \"#/$defs/canonical_time\" },\n    \"key_id\": { \"$ref\": \"#/$defs/id\" },\n    \"signature\": { \"$ref\": \"#/$defs/signature\" }\n  },\n  \"$defs\": {\n    \"active_keys\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"package\",\n        \"release_metadata\",\n        \"host_capability_contract\",\n        \"source_policy_pointer\",\n        \"revocation_document\",\n        \"revocation_pointer\"\n      ],\n      \"properties\": {\n        \"package\": { \"$ref\": \"#/$defs/key_ids\" },\n        \"release_metadata\": { \"$ref\": \"#/$defs/key_ids\" },\n        \"host_capability_contract\": { \"$ref\": \"#/$defs/optional_key_ids\" },\n        \"source_policy_pointer\": { \"$ref\": \"#/$defs/key_ids\" },\n        \"revocation_document\": { \"$ref\": \"#/$defs/key_ids\" },\n        \"revocation_pointer\": { \"$ref\": \"#/$defs/key_ids\" }\n      }\n    },\n    \"key_ids\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 16,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/id\" }\n    },\n    \"optional_key_ids\": {\n      \"type\": \"array\",\n      \"maxItems\": 16,\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/id\" }\n    },\n    \"capability_publisher_scopes\": {\n      \"type\": \"array\",\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/capability_publisher_scope\" }\n    },\n    \"capability_publisher_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"key_id\", \"allowed_publishers\"],\n      \"properties\": {\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"allowed_publishers\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 1024,\n          \"uniqueItems\": true,\n          \"items\": { \"$ref\": \"#/$defs/legacy_id\" }\n        }\n      }\n    },\n    \"limits\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"document_max_lifetime_seconds\",\n        \"future_skew_seconds\",\n        \"activation_lease_max_seconds\",\n        \"refresh_interval_max_seconds\",\n        \"failure_teardown_deadline_seconds\"\n      ],\n      \"properties\": {\n        \"document_max_lifetime_seconds\": { \"const\": 86400 },\n        \"future_skew_seconds\": { \"const\": 300 },\n        \"activation_lease_max_seconds\": { \"const\": 300 },\n        \"refresh_interval_max_seconds\": { \"const\": 60 },\n        \"failure_teardown_deadline_seconds\": { \"const\": 30 }\n      }\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[a-z][a-z0-9._-]*$\"\n    },\n    \"legacy_id\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 128,\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\"\n    },\n    \"epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)$\" },\n    \"positive_epoch\": { \"type\": \"string\", \"pattern\": \"^[1-9][0-9]*$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"canonical_time\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"pattern\": \"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$\"\n    },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n  }\n}\n".as_bytes();
185static CONTRACT_BODY_RELEASE_TRUST_STATE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/release-trust-state-v1.schema.json\",\n  \"title\": \"ReDevPlugin release trust state v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"source_id\", \"revision\", \"external_counter\", \"trusted_time\", \"channels\"],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.release_trust_state.v1\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"revision\": { \"$ref\": \"#/$defs/revision\" },\n    \"external_counter\": { \"$ref\": \"#/$defs/counter\" },\n    \"root\": { \"$ref\": \"#/$defs/root_head\" },\n    \"trusted_time\": { \"$ref\": \"#/$defs/trusted_time\" },\n\t\"signing_ledger\": { \"$ref\": \"#/$defs/signing_ledger\" },\n    \"channels\": {\n      \"type\": \"array\",\n      \"maxItems\": 16,\n      \"items\": { \"$ref\": \"#/$defs/channel\" }\n    }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"counter\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n    \"revision\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n    \"epoch\": { \"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]{0,19})$\" },\n    \"time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n    \"locator\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1024,\n      \"pattern\": \"^(?:[A-Za-z0-9_@+-][A-Za-z0-9._@+-]*|\\\\.[A-Za-z0-9_@+-][A-Za-z0-9._@+-]*|\\\\.{2}[A-Za-z0-9_@+-][A-Za-z0-9._@+-]*|\\\\.{3,}[A-Za-z0-9._@+-]*)(?:/(?:[A-Za-z0-9_@+-][A-Za-z0-9._@+-]*|\\\\.[A-Za-z0-9_@+-][A-Za-z0-9._@+-]*|\\\\.{2}[A-Za-z0-9_@+-][A-Za-z0-9._@+-]*|\\\\.{3,}[A-Za-z0-9._@+-]*))*$\"\n    },\n    \"transport_token\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 512, \"pattern\": \"^[A-Za-z0-9._:@+-]+$\" },\n    \"root_head\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"epoch\", \"document_sha256\", \"generated_at\", \"expires_at\", \"key_id\"],\n      \"properties\": {\n        \"epoch\": { \"$ref\": \"#/$defs/epoch\" },\n        \"document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"generated_at\": { \"$ref\": \"#/$defs/time\" },\n        \"expires_at\": { \"$ref\": \"#/$defs/time\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" }\n      }\n    },\n    \"checkpoint\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"log_id\", \"tree_size\", \"root_hash\", \"checkpoint_time\", \"key_id\", \"signature\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.trusted_time_checkpoint.v1\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" },\n        \"tree_size\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"root_hash\": { \"$ref\": \"#/$defs/sha256\" },\n        \"checkpoint_time\": { \"$ref\": \"#/$defs/time\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" }\n      }\n    },\n    \"trusted_time\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"floor\", \"checkpoint_sha256\", \"checkpoint\"],\n      \"properties\": {\n        \"floor\": { \"$ref\": \"#/$defs/time\" },\n        \"checkpoint_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"checkpoint\": { \"$ref\": \"#/$defs/checkpoint\" }\n      }\n    },\n\t\"signing_ledger\": {\n\t  \"type\": \"object\",\n\t  \"additionalProperties\": false,\n\t  \"required\": [\"checkpoint_sha256\", \"checkpoint\"],\n\t  \"properties\": {\n\t\t\"checkpoint_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n\t\t\"checkpoint\": {\n\t\t  \"allOf\": [\n\t\t\t{ \"$ref\": \"https://schemas.redevplugin.dev/plugin/release-signing-ledger-v1.schema.json\" },\n\t\t\t{ \"properties\": { \"kind\": { \"const\": \"checkpoint\" } }, \"required\": [\"kind\"] }\n\t\t  ]\n\t\t}\n\t  }\n\t},\n    \"document_head\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"pointer_locator\",\n        \"pointer_transport_token\",\n        \"pointer_epoch\",\n        \"pointer_sha256\",\n        \"document_locator\",\n        \"document_transport_token\",\n        \"document_sha256\",\n        \"generated_at\",\n        \"expires_at\",\n        \"key_id\"\n      ],\n      \"properties\": {\n        \"pointer_locator\": { \"$ref\": \"#/$defs/locator\" },\n        \"pointer_transport_token\": { \"$ref\": \"#/$defs/transport_token\" },\n        \"pointer_epoch\": { \"$ref\": \"#/$defs/epoch\" },\n        \"pointer_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"document_locator\": { \"$ref\": \"#/$defs/locator\" },\n        \"document_transport_token\": { \"$ref\": \"#/$defs/transport_token\" },\n        \"document_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"generated_at\": { \"$ref\": \"#/$defs/time\" },\n        \"expires_at\": { \"$ref\": \"#/$defs/time\" },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" }\n      }\n    },\n    \"channel\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"channel\"],\n      \"properties\": {\n        \"channel\": { \"$ref\": \"#/$defs/id\" },\n        \"policy\": { \"$ref\": \"#/$defs/document_head\" },\n        \"revocation\": { \"$ref\": \"#/$defs/document_head\" },\n\t\t\"fence_generation\": { \"$ref\": \"#/$defs/counter\" },\n\t\t\"fence\": { \"$ref\": \"#/$defs/fence\" }\n      }\n    },\n\t\"fence\": {\n\t  \"type\": \"object\",\n\t  \"additionalProperties\": false,\n\t  \"required\": [\"generation\", \"reason\", \"fenced_at\"],\n\t  \"properties\": {\n\t\t\"generation\": { \"$ref\": \"#/$defs/revision\" },\n\t\t\"reason\": { \"enum\": [\"refresh_failed\", \"expired\", \"trust_advanced\", \"restart_recovery\"] },\n\t\t\"fenced_at\": { \"$ref\": \"#/$defs/time\" }\n\t  }\n    }\n  }\n}\n".as_bytes();
186static CONTRACT_BODY_RESOURCE_SCOPE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/resource-scope-v1.schema.json\",\n  \"title\": \"ReDevPlugin persistent resource scope v1\",\n  \"description\": \"Host-issued ownership scope for persistent plugin resources. Session and channel hashes are intentionally excluded.\",\n  \"oneOf\": [\n    { \"$ref\": \"#/$defs/user_scope\" },\n    { \"$ref\": \"#/$defs/environment_scope\" }\n  ],\n  \"$defs\": {\n    \"owner_hash\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\"\n    },\n    \"scope_kind\": {\n      \"type\": \"string\",\n      \"enum\": [\"user\", \"environment\"]\n    },\n    \"owner_scope_migration_required_code\": {\n      \"type\": \"string\",\n      \"const\": \"owner_scope_migration_required\"\n    },\n    \"user_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"kind\", \"owner_env_hash\", \"owner_user_hash\"],\n      \"properties\": {\n        \"kind\": { \"const\": \"user\" },\n        \"owner_env_hash\": { \"$ref\": \"#/$defs/owner_hash\" },\n        \"owner_user_hash\": { \"$ref\": \"#/$defs/owner_hash\" }\n      }\n    },\n    \"environment_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"kind\", \"owner_env_hash\"],\n      \"properties\": {\n        \"kind\": { \"const\": \"environment\" },\n        \"owner_env_hash\": { \"$ref\": \"#/$defs/owner_hash\" }\n      }\n    }\n  }\n}\n".as_bytes();
187static CONTRACT_BODY_RUNTIME_ADMISSION_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/runtime-admission-v1.schema.json\",\n  \"title\": \"ReDevPlugin runtime admission v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"target\", \"binary_name\", \"binary_sha256\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.runtime_admission.v1\"},\n    \"target\": {\"$ref\": \"#/$defs/target\"},\n    \"binary_name\": {\"const\": \"redevplugin-runtime\"},\n    \"binary_sha256\": {\"$ref\": \"#/$defs/sha256\"}\n  },\n  \"$defs\": {\n    \"target\": {\"type\": \"string\", \"enum\": [\"linux/amd64\", \"linux/arm64\"]},\n    \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n  }\n}\n".as_bytes();
188static CONTRACT_BODY_RUNTIME_DESCRIPTOR_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/runtime-descriptor-v2.schema.json\",\n  \"title\": \"ReDevPlugin runtime descriptor v2\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"platform_version\", \"target\", \"rust_ipc_version\", \"wasm_abi_version\", \"contract_set_sha256\", \"binary_sha256\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"runtime-descriptor-v2\"},\n    \"platform_version\": {\"$ref\": \"#/$defs/semver\"},\n    \"target\": {\"type\": \"string\", \"enum\": [\"linux/amd64\", \"linux/arm64\"]},\n    \"rust_ipc_version\": {\"const\": \"rust-ipc-v6\"},\n    \"wasm_abi_version\": {\"const\": \"redevplugin-wasm-worker-v2\"},\n    \"contract_set_sha256\": {\"$ref\": \"#/$defs/sha256\"},\n    \"binary_sha256\": {\"$ref\": \"#/$defs/sha256\"}\n  },\n  \"$defs\": {\n    \"semver\": {\"type\": \"string\", \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?$\"},\n    \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n  }\n}\n".as_bytes();
189static CONTRACT_BODY_RUNTIME_EXEC_JOURNAL_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/runtime-exec-journal-v1.schema.json\",\n  \"title\": \"ReDevPlugin runtime execution journal v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"module_id\", \"descriptor_digest\", \"state\", \"containment_identity\", \"mutation_outcome\"],\n  \"properties\": {\n    \"schema_version\": {\"const\": \"redevplugin.runtime_exec_journal.v1\"},\n    \"module_id\": {\"type\": \"string\", \"pattern\": \"^[A-Za-z0-9._-]{16,128}$\"},\n    \"descriptor_digest\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n    \"state\": {\"enum\": [\"opened\", \"consumed\", \"bound\", \"running\", \"stopping\", \"closed\", \"reconcile_required\"]},\n    \"containment_identity\": {\"type\": \"string\", \"pattern\": \"^[A-Za-z0-9._:-]{1,256}$\"},\n    \"mutation_outcome\": {\"enum\": [\"committed\", \"not_committed\", \"unknown\"]}\n  }\n}\n".as_bytes();
190static CONTRACT_BODY_RUST_IPC_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/ipc-v6.schema.json\",\n  \"title\": \"ReDevPlugin Rust IPC v6\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"ipc_version\", \"frame_type\", \"request_id\"],\n  \"properties\": {\n    \"ipc_version\": { \"const\": \"rust-ipc-v6\" },\n    \"frame_type\": {\n      \"enum\": [\"hello\", \"hello_ack\", \"heartbeat\", \"invoke_worker\", \"invoke_worker_result\", \"cancel_invoke\", \"cancel_invoke_ack\", \"compile_flight_register\", \"compile_flight_complete\", \"open_handle\", \"validate_handle_grant\", \"storage_file\", \"storage_kv\", \"storage_sqlite\", \"network_grant\", \"network_execute\", \"revoke_epoch\", \"revoke_epoch_ack\", \"session_revoke\", \"session_revoke_ack\", \"diagnostic\"]\n    },\n    \"request_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"parent_request_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"runtime_generation_id\": { \"type\": \"string\" },\n    \"payload\": true\n  },\n  \"allOf\": [\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"hello\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"target\", \"host_process_id\", \"host_ipc_version\", \"host_wasm_abi\", \"contract_set_sha256\", \"started_unix_nano\", \"channel_nonce\", \"runtime_lease_public_keys\", \"limits\"],\n            \"properties\": {\n              \"target\": { \"$ref\": \"#/$defs/runtime_target\" },\n              \"host_process_id\": { \"type\": \"integer\", \"minimum\": 1 },\n              \"host_ipc_version\": { \"const\": \"rust-ipc-v6\" },\n              \"host_wasm_abi\": { \"const\": \"redevplugin-wasm-worker-v2\" },\n              \"contract_set_sha256\": { \"$ref\": \"#/$defs/lower_sha256\" },\n              \"started_unix_nano\": { \"type\": \"integer\", \"minimum\": 1 },\n              \"channel_nonce\": { \"type\": \"string\", \"minLength\": 16 },\n              \"runtime_lease_public_keys\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"items\": {\n                  \"type\": \"object\",\n                  \"additionalProperties\": false,\n                  \"required\": [\"algorithm\", \"key_id\", \"public_key_base64\"],\n                  \"properties\": {\n                    \"algorithm\": { \"const\": \"ed25519\" },\n                    \"key_id\": { \"type\": \"string\", \"minLength\": 1 },\n                    \"public_key_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" }\n                  }\n                },\n                \"uniqueItems\": true\n              },\n              \"limits\": { \"$ref\": \"#/$defs/runtime_limits\" }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"hello_ack\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"runtime_version\", \"actual_target\", \"rust_ipc_version\", \"wasm_abi_version\", \"contract_set_sha256\", \"channel_nonce\", \"limits\", \"process_containment\"],\n            \"properties\": {\n              \"runtime_version\": { \"$ref\": \"#/$defs/semver\" },\n              \"actual_target\": { \"$ref\": \"#/$defs/runtime_target\" },\n              \"rust_ipc_version\": { \"const\": \"rust-ipc-v6\" },\n              \"wasm_abi_version\": { \"const\": \"redevplugin-wasm-worker-v2\" },\n              \"contract_set_sha256\": { \"$ref\": \"#/$defs/lower_sha256\" },\n              \"channel_nonce\": { \"type\": \"string\", \"minLength\": 16 },\n              \"limits\": { \"$ref\": \"#/$defs/runtime_limits\" },\n              \"process_containment\": { \"$ref\": \"#/$defs/process_containment\" }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"heartbeat\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/heartbeat_request_payload\" },\n              { \"$ref\": \"#/$defs/heartbeat_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"invoke_worker\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"lease\", \"method\", \"invocation\"],\n            \"properties\": {\n              \"lease\": {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"required\": [\n                  \"lease_id\",\n                  \"token_id\",\n                  \"lease_nonce\",\n                  \"runtime_generation_id\",\n                  \"plugin_instance_id\",\n                  \"plugin_id\",\n                  \"plugin_version\",\n                  \"active_fingerprint\",\n                  \"owner_env_hash\",\n                  \"issued_at_unix_ms\",\n                  \"method\",\n                  \"effect\",\n                  \"execution\",\n                  \"audit_correlation_id\",\n                  \"target_descriptor_hashes\",\n                  \"limits\",\n                  \"policy_revision\",\n                  \"management_revision\",\n                  \"revoke_epoch\",\n                  \"runtime_shard_id\",\n                  \"runtime_instance_id\",\n                  \"ipc_channel_id\",\n                  \"connection_nonce\",\n                  \"key_id\",\n                  \"signature\",\n                  \"expires_at_unix_ms\"\n                ],\n                \"properties\": {\n                  \"lease_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"token_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"lease_nonce\": { \"type\": \"string\", \"minLength\": 16 },\n                  \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"plugin_version\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"issued_at_unix_ms\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n                  \"method\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"effect\": { \"enum\": [\"read\", \"write\", \"execute\", \"delete\", \"admin\"] },\n                  \"execution\": { \"enum\": [\"sync\", \"operation\", \"subscription\"] },\n                  \"operation_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"stream_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"audit_correlation_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"surface_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"owner_session_hash\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"owner_user_hash\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"owner_env_hash\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"session_channel_id_hash\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"bridge_channel_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"target_descriptor_hashes\": {\n                    \"type\": \"array\",\n                    \"minItems\": 1,\n                    \"items\": { \"type\": \"string\", \"minLength\": 1 },\n                    \"uniqueItems\": true\n                  },\n                  \"limits\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": false,\n                    \"required\": [\"timeout_ms\", \"memory_bytes\", \"max_payload_bytes\", \"max_stream_bytes_per_sec\"],\n                    \"properties\": {\n                      \"timeout_ms\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n                      \"memory_bytes\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 268435456 },\n                      \"max_payload_bytes\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n                      \"max_stream_bytes_per_sec\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 }\n                    }\n                  },\n                  \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n                  \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n                  \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n                  \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"ipc_channel_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"connection_nonce\": { \"type\": \"string\", \"minLength\": 16 },\n                  \"key_id\": { \"type\": \"string\", \"minLength\": 1 },\n                  \"signature\": { \"type\": \"string\", \"pattern\": \"^ed25519:.+\" },\n                  \"expires_at_unix_ms\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 }\n                },\n                \"allOf\": [\n                  {\n                    \"if\": { \"properties\": { \"execution\": { \"const\": \"sync\" } }, \"required\": [\"execution\"] },\n                    \"then\": { \"not\": { \"anyOf\": [{ \"required\": [\"operation_id\"] }, { \"required\": [\"stream_id\"] }] } }\n                  },\n                  {\n                    \"if\": { \"properties\": { \"execution\": { \"const\": \"operation\" } }, \"required\": [\"execution\"] },\n                    \"then\": { \"required\": [\"operation_id\"], \"not\": { \"required\": [\"stream_id\"] } }\n                  },\n                  {\n                    \"if\": { \"properties\": { \"execution\": { \"const\": \"subscription\" } }, \"required\": [\"execution\"] },\n                    \"then\": { \"required\": [\"operation_id\", \"stream_id\"] }\n                  }\n                ]\n              },\n              \"method\": { \"type\": \"string\", \"minLength\": 1 },\n              \"invocation\": {\n                \"$ref\": \"https://schemas.redevplugin.dev/plugin/worker-invocation-v3.schema.json\"\n              }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"invoke_worker_result\" } }, \"required\": [\"frame_type\"] },\n      \"then\": { \"$ref\": \"#/$defs/runtime_response_frame\" }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"cancel_invoke\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"invocation_request_id\"],\n            \"properties\": {\n              \"invocation_request_id\": { \"type\": \"string\", \"minLength\": 1 }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"cancel_invoke_ack\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": { \"$ref\": \"#/$defs/cancel_invoke_ack_response_payload\" }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"compile_flight_register\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"parent_request_id\", \"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": { \"$ref\": \"#/$defs/compile_flight_lifecycle_payload\" }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"compile_flight_complete\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"parent_request_id\", \"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": { \"$ref\": \"#/$defs/compile_flight_lifecycle_payload\" }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"open_handle\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/open_handle_request_payload\" },\n              { \"$ref\": \"#/$defs/open_handle_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"validate_handle_grant\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/validate_handle_grant_request_payload\" },\n              { \"$ref\": \"#/$defs/validate_handle_grant_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"storage_file\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/storage_file_request_payload\" },\n              { \"$ref\": \"#/$defs/storage_file_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"storage_kv\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/storage_kv_request_payload\" },\n              { \"$ref\": \"#/$defs/storage_kv_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"storage_sqlite\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/storage_sqlite_request_payload\" },\n              { \"$ref\": \"#/$defs/storage_sqlite_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"network_grant\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/network_grant_request_payload\" },\n              { \"$ref\": \"#/$defs/network_grant_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"network_execute\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"oneOf\": [\n              { \"$ref\": \"#/$defs/network_execute_request_payload\" },\n              { \"$ref\": \"#/$defs/network_execute_response_payload\" }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"revoke_epoch\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"resource_scope\", \"plugin_instance_id\", \"revoke_epoch\"],\n            \"properties\": {\n              \"resource_scope\": { \"$ref\": \"#/$defs/environment_resource_scope\" },\n              \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n              \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"revoke_epoch_ack\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": { \"$ref\": \"#/$defs/revoke_epoch_ack_response_payload\" }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"session_revoke\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": { \"$ref\": \"#/$defs/session_revoke_request_payload\" }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"session_revoke_ack\" } }, \"required\": [\"frame_type\"] },\n      \"then\": {\n        \"required\": [\"runtime_generation_id\", \"payload\"],\n        \"properties\": {\n          \"payload\": { \"$ref\": \"#/$defs/session_revoke_ack_response_payload\" }\n        }\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"frame_type\": { \"const\": \"diagnostic\" } }, \"required\": [\"frame_type\"] },\n      \"then\": { \"$ref\": \"#/$defs/runtime_response_frame\" }\n    },\n    {\n      \"if\": {\n        \"properties\": {\n          \"frame_type\": {\n            \"enum\": [\"compile_flight_register\", \"compile_flight_complete\", \"open_handle\", \"validate_handle_grant\", \"storage_file\", \"storage_kv\", \"storage_sqlite\", \"network_grant\", \"network_execute\"]\n          }\n        },\n        \"required\": [\"frame_type\"]\n      },\n      \"then\": { \"required\": [\"parent_request_id\"] }\n    }\n  ],\n  \"$defs\": {\n    \"semver\": {\n      \"type\": \"string\",\n      \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n    },\n    \"runtime_target\": {\"type\": \"string\", \"enum\": [\"linux/amd64\", \"linux/arm64\"]},\n    \"lower_sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n    \"runtime_limits\": {\n      \"type\": \"object\",\n      \"description\": \"Negotiated runtime capacities. per_plugin_concurrency must not exceed worker_count. Route capacities are derived exactly from negotiated limits: active hostcall routes = worker_count, canceled hostcall retention = worker_count + queue_capacity, and compile-flight artifact routes = worker_count.\",\n      \"additionalProperties\": false,\n      \"required\": [\"worker_count\", \"queue_capacity\", \"per_plugin_concurrency\", \"module_cache_entries\", \"module_cache_source_bytes\"],\n      \"properties\": {\n        \"worker_count\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 64, \"description\": \"Number of runtime worker threads.\" },\n        \"queue_capacity\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 64, \"description\": \"Maximum queued worker invocations.\" },\n        \"per_plugin_concurrency\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 64, \"description\": \"Maximum concurrent invocations for one plugin; must not exceed worker_count.\" },\n        \"module_cache_entries\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 1024, \"description\": \"Maximum compiled modules retained by the runtime cache.\" },\n        \"module_cache_source_bytes\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 134217728, \"description\": \"Maximum source WASM bytes retained by the runtime cache (128 MiB).\" }\n      }\n    },\n    \"process_containment\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"profile\", \"seccomp_policy_sha256\", \"no_new_privs\", \"seccomp_tsync\", \"process_creation_denied\", \"reexec_denied\", \"active\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.process_containment.v1\" },\n        \"profile\": { \"const\": \"linux-runtime-v1\" },\n        \"seccomp_policy_sha256\": { \"const\": \"6305735925c1fbacaf4950df2e535d3a11cebec8ab7aa16ce37fca3c31745543\" },\n        \"no_new_privs\": { \"const\": true },\n        \"seccomp_tsync\": { \"const\": true },\n        \"process_creation_denied\": { \"const\": true },\n        \"reexec_denied\": { \"const\": true },\n        \"active\": { \"const\": true }\n      }\n    },\n    \"module_cache_metrics\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"hits\", \"misses\", \"compiles\", \"entries\", \"source_bytes\"],\n      \"properties\": {\n        \"hits\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"misses\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"compiles\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"entries\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"source_bytes\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sha256:[a-f0-9]{64}$\"\n    },\n    \"worker_artifact_path\": {\n      \"type\": \"string\",\n      \"pattern\": \"^workers/.+\\\\.wasm$\",\n      \"not\": {\n        \"anyOf\": [\n          { \"pattern\": \"(^|/)\\\\.\" },\n          { \"pattern\": \"//\" },\n          { \"pattern\": \"\\\\\\\\\" }\n        ]\n      }\n    },\n    \"heartbeat_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"sent_unix_nano\", \"max_staleness_ms\"],\n      \"properties\": {\n        \"sent_unix_nano\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"max_staleness_ms\": { \"type\": \"integer\", \"minimum\": 1 }\n      }\n    },\n    \"heartbeat_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"result\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"result\": { \"$ref\": \"#/$defs/heartbeat_ack_result\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"code\", \"message\", \"error_origin\"],\n          \"properties\": {\n            \"ok\": { \"const\": false },\n            \"code\": { \"type\": \"string\", \"minLength\": 1 },\n            \"message\": { \"type\": \"string\", \"minLength\": 1 },\n            \"error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n          }\n        }\n      ]\n    },\n    \"heartbeat_ack_result\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"runtime_generation_id\",\n        \"runtime_unix_nano\",\n        \"max_staleness_ms\",\n        \"host_sent_unix_nano\",\n        \"active_invocations\",\n        \"queued_invocations\",\n        \"limits\",\n        \"module_cache\"\n      ],\n      \"properties\": {\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_unix_nano\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"max_staleness_ms\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"host_sent_unix_nano\": { \"type\": \"integer\", \"minimum\": 1 },\n        \"active_invocations\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"queued_invocations\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"limits\": { \"$ref\": \"#/$defs/runtime_limits\" },\n        \"module_cache\": { \"$ref\": \"#/$defs/module_cache_metrics\" }\n      }\n    },\n    \"cancel_invoke_ack_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"result\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"result\": {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"invocation_request_id\", \"disposition\"],\n              \"properties\": {\n                \"invocation_request_id\": { \"type\": \"string\", \"minLength\": 1 },\n                \"disposition\": { \"enum\": [\"queued\", \"running\", \"complete\"] }\n              }\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"code\", \"message\", \"error_origin\"],\n          \"properties\": {\n            \"ok\": { \"const\": false },\n            \"code\": { \"type\": \"string\", \"minLength\": 1 },\n            \"message\": { \"type\": \"string\", \"minLength\": 1 },\n            \"error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n          }\n        }\n      ]\n    },\n    \"hostcall_failure_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"code\", \"message\", \"error_origin\"],\n      \"properties\": {\n        \"ok\": { \"const\": false },\n        \"code\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128, \"pattern\": \"^[A-Z][A-Z0-9_]{0,127}$\" },\n        \"message\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 4096 },\n        \"error_origin\": { \"const\": \"hostcall\" }\n      }\n    },\n    \"compile_flight_lifecycle_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"artifact_request_id\", \"package_hash\", \"artifact\", \"artifact_sha256\", \"wasm_abi_version\"],\n      \"properties\": {\n        \"artifact_request_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"package_hash\": { \"$ref\": \"#/$defs/sha256\" },\n        \"artifact\": { \"$ref\": \"#/$defs/worker_artifact_path\" },\n        \"artifact_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"wasm_abi_version\": { \"const\": \"redevplugin-wasm-worker-v2\" }\n      }\n    },\n    \"open_handle_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"package_hash\", \"artifact\", \"artifact_sha256\"],\n      \"properties\": {\n        \"package_hash\": { \"$ref\": \"#/$defs/sha256\" },\n        \"artifact\": { \"$ref\": \"#/$defs/worker_artifact_path\" },\n        \"artifact_sha256\": { \"$ref\": \"#/$defs/sha256\" }\n      }\n    },\n    \"open_handle_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"package_hash\", \"artifact\", \"sha256\", \"content_base64\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"package_hash\": { \"$ref\": \"#/$defs/sha256\" },\n            \"artifact\": { \"$ref\": \"#/$defs/worker_artifact_path\" },\n            \"sha256\": { \"$ref\": \"#/$defs/sha256\" },\n            \"content_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" }\n          }\n        },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"validate_handle_grant_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"handle_grant_token\",\n        \"plugin_instance_id\",\n        \"active_fingerprint\",\n        \"runtime_instance_id\",\n        \"runtime_generation_id\",\n        \"runtime_shard_id\",\n        \"owner_session_hash\",\n        \"owner_user_hash\",\n        \"owner_env_hash\",\n        \"session_channel_id_hash\",\n        \"handle_id\",\n        \"method\",\n        \"resource_scope\",\n        \"policy_revision\",\n        \"management_revision\",\n        \"revoke_epoch\"\n      ],\n      \"properties\": {\n        \"handle_grant_token\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"owner_session_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"owner_user_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"owner_env_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"session_channel_id_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"handle_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"method\": { \"type\": \"string\", \"minLength\": 1 },\n        \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 }\n      }\n    },\n    \"validate_handle_grant_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"handle_grant_id\", \"handle_id\", \"method\", \"runtime_generation_id\", \"resource_scope\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"handle_grant_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"handle_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"method\": { \"type\": \"string\", \"minLength\": 1 },\n            \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n            \"max_bytes_per_second\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"max_total_bytes\": { \"type\": \"integer\", \"minimum\": 0 }\n          }\n        },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"storage_file_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"handle_grant_token\",\n        \"plugin_instance_id\",\n        \"active_fingerprint\",\n        \"runtime_instance_id\",\n        \"runtime_generation_id\",\n        \"runtime_shard_id\",\n        \"handle_id\",\n        \"method\",\n        \"resource_scope\",\n        \"policy_revision\",\n        \"management_revision\",\n        \"revoke_epoch\",\n        \"operation\",\n        \"store_id\"\n      ],\n      \"properties\": {\n        \"handle_grant_token\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"handle_id\": { \"type\": \"string\", \"pattern\": \"^storage:[A-Za-z0-9_.-]+$\" },\n        \"method\": { \"const\": \"storage.files\" },\n        \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"operation\": { \"enum\": [\"read\", \"write\", \"delete\", \"list\"] },\n        \"store_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9_.-]+$\" },\n        \"path\": { \"type\": \"string\" },\n        \"data_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n        \"max_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_entries\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"recursive\": { \"type\": \"boolean\" }\n      }\n    },\n    \"storage_file_response_payload\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/storage_file_read_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_file_write_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_file_delete_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_file_list_success_response_payload\" },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"storage_file_read_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"path\", \"data_base64\", \"size_bytes\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"path\": { \"type\": \"string\" },\n        \"data_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n        \"size_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_file_write_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"path\", \"size_bytes\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"path\": { \"type\": \"string\" },\n        \"size_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_file_delete_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"path\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"path\": { \"type\": \"string\" }\n      }\n    },\n    \"storage_file_list_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"path\", \"entries\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"path\": { \"type\": \"string\" },\n        \"entries\": {\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/$defs/storage_file_entry\" }\n        },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_file_entry\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"path\", \"dir\", \"updated_at\"],\n      \"properties\": {\n        \"path\": { \"type\": \"string\", \"minLength\": 1 },\n        \"dir\": { \"type\": \"boolean\" },\n        \"size_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"updated_at\": { \"type\": \"string\", \"format\": \"date-time\" }\n      }\n    },\n    \"storage_kv_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"handle_grant_token\",\n        \"plugin_instance_id\",\n        \"active_fingerprint\",\n        \"runtime_instance_id\",\n        \"runtime_generation_id\",\n        \"runtime_shard_id\",\n        \"handle_id\",\n        \"method\",\n        \"resource_scope\",\n        \"policy_revision\",\n        \"management_revision\",\n        \"revoke_epoch\",\n        \"operation\",\n        \"store_id\"\n      ],\n      \"properties\": {\n        \"handle_grant_token\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"handle_id\": { \"type\": \"string\", \"pattern\": \"^storage:[A-Za-z0-9_.-]+$\" },\n        \"method\": { \"const\": \"storage.kv\" },\n        \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"operation\": { \"enum\": [\"get\", \"put\", \"delete\", \"list\"] },\n        \"store_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9_.-]+$\" },\n        \"key\": { \"type\": \"string\" },\n        \"value_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n        \"prefix\": { \"type\": \"string\" },\n        \"max_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_entries\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"storage_kv_response_payload\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/storage_kv_get_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_kv_put_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_kv_delete_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_kv_list_success_response_payload\" },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"storage_kv_get_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"key\", \"value_base64\", \"size_bytes\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"key\": { \"type\": \"string\" },\n        \"value_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n        \"size_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_kv_put_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"key\", \"size_bytes\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"key\": { \"type\": \"string\" },\n        \"size_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_kv_delete_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"key\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"key\": { \"type\": \"string\" }\n      }\n    },\n    \"storage_kv_list_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"entries\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"prefix\": { \"type\": \"string\" },\n        \"entries\": {\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/$defs/storage_kv_entry\" }\n        },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_kv_entry\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"key\", \"size_bytes\", \"updated_at\"],\n      \"properties\": {\n        \"key\": { \"type\": \"string\", \"minLength\": 1 },\n        \"size_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"updated_at\": { \"type\": \"string\", \"format\": \"date-time\" }\n      }\n    },\n    \"storage_sqlite_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"handle_grant_token\",\n        \"plugin_instance_id\",\n        \"active_fingerprint\",\n        \"runtime_instance_id\",\n        \"runtime_generation_id\",\n        \"runtime_shard_id\",\n        \"handle_id\",\n        \"method\",\n        \"resource_scope\",\n        \"policy_revision\",\n        \"management_revision\",\n        \"revoke_epoch\",\n        \"operation\",\n        \"store_id\",\n        \"sql\"\n      ],\n      \"properties\": {\n        \"handle_grant_token\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"handle_id\": { \"type\": \"string\", \"pattern\": \"^storage:[A-Za-z0-9_.-]+$\" },\n        \"method\": { \"const\": \"storage.sqlite\" },\n        \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"operation\": { \"enum\": [\"exec\", \"query\"] },\n        \"store_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9_.-]+$\" },\n        \"database\": { \"type\": \"string\" },\n        \"sql\": { \"type\": \"string\", \"minLength\": 1 },\n        \"args\": {\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/$defs/storage_sqlite_value\" }\n        },\n        \"max_rows\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_response_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"timeout_ms\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"storage_sqlite_response_payload\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/storage_sqlite_exec_success_response_payload\" },\n        { \"$ref\": \"#/$defs/storage_sqlite_query_success_response_payload\" },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"storage_sqlite_exec_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"database\", \"rows_affected\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"database\": { \"type\": \"string\" },\n        \"rows_affected\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"last_insert_id\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_sqlite_query_success_response_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"ok\", \"database\", \"columns\", \"rows\", \"usage\"],\n      \"properties\": {\n        \"ok\": { \"const\": true },\n        \"database\": { \"type\": \"string\" },\n        \"columns\": {\n          \"type\": \"array\",\n          \"items\": { \"type\": \"string\" }\n        },\n        \"rows\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"array\",\n            \"items\": { \"$ref\": \"#/$defs/storage_sqlite_value\" }\n          }\n        },\n        \"usage\": { \"$ref\": \"#/$defs/storage_usage\" }\n      }\n    },\n    \"storage_sqlite_value\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"oneOf\": [\n        { \"required\": [\"null\"], \"properties\": { \"null\": { \"const\": true } } },\n        { \"required\": [\"int\"] },\n        { \"required\": [\"float\"] },\n        { \"required\": [\"text\"] },\n        { \"required\": [\"blob_base64\"] }\n      ],\n      \"properties\": {\n        \"null\": { \"type\": \"boolean\" },\n        \"int\": { \"type\": \"integer\" },\n        \"float\": { \"type\": \"number\" },\n        \"text\": { \"type\": \"string\" },\n        \"blob_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" }\n      }\n    },\n    \"storage_usage\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"plugin_instance_id\", \"store_id\", \"usage_bytes\", \"quota_bytes\", \"usage_files\", \"quota_files\"],\n      \"properties\": {\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"store_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"usage_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"quota_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"usage_files\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"quota_files\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"network_grant_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"plugin_instance_id\",\n        \"active_fingerprint\",\n        \"resource_scope\",\n        \"runtime_instance_id\",\n        \"runtime_generation_id\",\n        \"runtime_shard_id\",\n        \"policy_revision\",\n        \"management_revision\",\n        \"revoke_epoch\",\n        \"connector_id\",\n        \"transport\",\n        \"destination\"\n      ],\n      \"properties\": {\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n        \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"connector_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n        \"destination\": { \"type\": \"string\", \"minLength\": 1 },\n        \"ttl_ms\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"network_grant_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\n            \"ok\", \"grant_id\", \"plugin_instance_id\", \"active_fingerprint\",\n            \"resource_scope\",\n            \"policy_revision\", \"management_revision\", \"revoke_epoch\", \"connector_id\",\n            \"transport\", \"destination\", \"runtime_generation_id\",\n            \"target_classifier_version\", \"expires_at\"\n          ],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"grant_id\": { \"type\": \"string\", \"pattern\": \"^netgrant_[0-9a-f]{32}$\" },\n            \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n            \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n            \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n            \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n            \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n            \"connector_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n            \"destination\": { \"$ref\": \"#/$defs/network_destination\" },\n            \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"target_classifier_version\": { \"const\": \"target-classifier-v2\" },\n            \"expires_at\": { \"type\": \"string\", \"format\": \"date-time\" }\n          }\n        },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"network_execute_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"plugin_id\",\n        \"plugin_instance_id\",\n        \"active_fingerprint\",\n        \"resource_scope\",\n        \"runtime_instance_id\",\n        \"runtime_generation_id\",\n        \"runtime_shard_id\",\n        \"policy_revision\",\n        \"management_revision\",\n        \"revoke_epoch\",\n        \"connector_id\",\n        \"transport\",\n        \"destination\",\n        \"owner_session_hash\",\n        \"owner_user_hash\",\n        \"owner_env_hash\",\n        \"session_channel_id_hash\"\n      ],\n      \"properties\": {\n        \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"resource_scope\": { \"$ref\": \"#/$defs/resource_scope\" },\n        \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"runtime_shard_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"connector_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n        \"destination\": { \"type\": \"string\", \"minLength\": 1 },\n        \"ttl_ms\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"operation\": { \"enum\": [\"http\", \"http_stream\", \"websocket_round_trip\", \"tcp_round_trip\", \"udp_round_trip\"] },\n        \"method\": { \"type\": \"string\", \"minLength\": 1 },\n        \"path\": { \"type\": \"string\" },\n        \"query\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" }\n          }\n        },\n        \"headers\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" }\n          }\n        },\n        \"message_type\": { \"enum\": [\"text\", \"binary\"] },\n        \"body_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n        \"payload_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n        \"max_request_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_response_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_chunk_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"max_buffered_bytes\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"timeout_ms\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"stream_id\": { \"type\": \"string\" },\n        \"stream_method\": { \"type\": \"string\" },\n        \"stream_effect\": { \"enum\": [\"read\", \"write\", \"execute\", \"delete\", \"admin\"] },\n        \"stream_execution\": { \"enum\": [\"sync\", \"operation\", \"subscription\"] },\n        \"surface_instance_id\": { \"type\": \"string\" },\n        \"owner_session_hash\": { \"type\": \"string\" },\n        \"owner_user_hash\": { \"type\": \"string\" },\n        \"owner_env_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"session_channel_id_hash\": { \"type\": \"string\" },\n        \"bridge_channel_id\": { \"type\": \"string\" },\n        \"content_type\": { \"type\": \"string\" }\n      }\n    },\n    \"network_execute_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"transport\", \"destination\", \"grant_id\", \"connector_id\", \"runtime_generation_id\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n            \"destination\": { \"$ref\": \"#/$defs/network_destination\" },\n            \"status_code\": { \"type\": \"integer\", \"minimum\": 100, \"maximum\": 599 },\n            \"headers\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"array\",\n                \"items\": { \"type\": \"string\" }\n              }\n            },\n            \"message_type\": { \"enum\": [\"text\", \"binary\"] },\n            \"body_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n            \"payload_base64\": { \"type\": \"string\", \"contentEncoding\": \"base64\" },\n            \"stream_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"bytes_read\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"chunk_count\": { \"type\": \"integer\", \"minimum\": 0 },\n            \"grant_id\": { \"type\": \"string\", \"pattern\": \"^netgrant_[0-9a-f]{32}$\" },\n            \"connector_id\": { \"type\": \"string\", \"minLength\": 1 },\n            \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 }\n          }\n        },\n        { \"$ref\": \"#/$defs/hostcall_failure_response_payload\" }\n      ]\n    },\n    \"resource_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"kind\", \"owner_env_hash\"],\n      \"properties\": {\n        \"kind\": { \"enum\": [\"user\", \"environment\"] },\n        \"owner_env_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" },\n        \"owner_user_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" }\n      },\n      \"oneOf\": [\n        { \"properties\": { \"kind\": { \"const\": \"user\" } }, \"required\": [\"owner_user_hash\"] },\n        { \"properties\": { \"kind\": { \"const\": \"environment\" } }, \"not\": { \"required\": [\"owner_user_hash\"] } }\n      ]\n    },\n    \"environment_resource_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"kind\", \"owner_env_hash\"],\n      \"properties\": {\n        \"kind\": { \"const\": \"environment\" },\n        \"owner_env_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" }\n      }\n    },\n    \"network_destination\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"transport\", \"host\", \"port\"],\n      \"properties\": {\n        \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n        \"scheme\": { \"enum\": [\"http\", \"https\", \"ws\", \"wss\"] },\n        \"host\": { \"type\": \"string\", \"minLength\": 1 },\n        \"port\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 65535 }\n      }\n    },\n    \"revoke_epoch_ack_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"result\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"result\": { \"$ref\": \"#/$defs/revoke_epoch_ack_result\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"code\", \"message\", \"error_origin\"],\n          \"properties\": {\n            \"ok\": { \"const\": false },\n            \"code\": { \"type\": \"string\", \"minLength\": 1 },\n            \"message\": { \"type\": \"string\", \"minLength\": 1 },\n            \"error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n          }\n        }\n      ]\n    },\n    \"revoke_epoch_ack_result\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"resource_scope\",\n        \"plugin_instance_id\",\n        \"revoke_epoch\",\n        \"closed_socket_count\",\n        \"closed_stream_count\",\n        \"closed_storage_handle_count\"\n      ],\n      \"properties\": {\n        \"resource_scope\": { \"$ref\": \"#/$defs/environment_resource_scope\" },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"closed_socket_count\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"closed_stream_count\": { \"type\": \"integer\", \"minimum\": 0 },\n        \"closed_storage_handle_count\": { \"type\": \"integer\", \"minimum\": 0 }\n      }\n    },\n    \"session_revoke_request_payload\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"session_revoke_sequence\",\n        \"owner_session_hash\",\n        \"owner_user_hash\",\n        \"owner_env_hash\",\n        \"session_channel_id_hash\"\n      ],\n      \"properties\": {\n        \"session_revoke_sequence\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"owner_session_hash\": { \"$ref\": \"#/$defs/session_owner_hash\" },\n        \"owner_user_hash\": { \"$ref\": \"#/$defs/session_owner_hash\" },\n        \"owner_env_hash\": { \"$ref\": \"#/$defs/session_owner_hash\" },\n        \"session_channel_id_hash\": { \"$ref\": \"#/$defs/session_owner_hash\" }\n      }\n    },\n    \"session_owner_hash\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\"\n    },\n    \"session_revoke_ack_response_payload\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"result\"],\n          \"properties\": {\n            \"ok\": { \"const\": true },\n            \"result\": { \"$ref\": \"#/$defs/session_revoke_ack_result\" }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"required\": [\"ok\", \"code\", \"message\", \"error_origin\"],\n          \"properties\": {\n            \"ok\": { \"const\": false },\n            \"code\": {\n              \"enum\": [\n                \"SESSION_REVOKE_SEQUENCE_STALE\",\n                \"SESSION_REVOKE_DRAIN_TIMEOUT\",\n                \"WORKER_INVOCATION_INVALID\"\n              ]\n            },\n            \"message\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 4096 },\n            \"error_origin\": { \"const\": \"runtime\" }\n          }\n        }\n      ]\n    },\n    \"session_revoke_ack_result\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"session_revoke_sequence\", \"state\", \"counts\"],\n      \"properties\": {\n        \"session_revoke_sequence\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"state\": { \"const\": \"complete\" },\n        \"counts\": { \"$ref\": \"#/$defs/session_revoke_ack_counts\" }\n      }\n    },\n    \"session_revoke_ack_counts\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"queued_invocations\",\n        \"running_invocations\",\n        \"storage_hostcalls\",\n        \"active_network_requests\",\n        \"sockets\",\n        \"network_streams\"\n      ],\n      \"properties\": {\n        \"queued_invocations\": { \"$ref\": \"#/$defs/session_revoke_count\" },\n        \"running_invocations\": { \"$ref\": \"#/$defs/session_revoke_count\" },\n        \"storage_hostcalls\": { \"$ref\": \"#/$defs/session_revoke_count\" },\n        \"active_network_requests\": { \"$ref\": \"#/$defs/session_revoke_count\" },\n        \"sockets\": { \"$ref\": \"#/$defs/session_revoke_count\" },\n        \"network_streams\": { \"$ref\": \"#/$defs/session_revoke_count\" }\n      }\n    },\n    \"session_revoke_count\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 9007199254740991\n    },\n    \"runtime_response_frame\": {\n      \"required\": [\"runtime_generation_id\", \"payload\"],\n      \"properties\": {\n        \"payload\": {\n          \"oneOf\": [\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"ok\", \"result\"],\n              \"properties\": {\n                \"ok\": { \"const\": true },\n                \"result\": true\n              }\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"required\": [\"ok\", \"code\", \"message\", \"error_origin\"],\n              \"properties\": {\n                \"ok\": { \"const\": false },\n                \"code\": { \"type\": \"string\", \"minLength\": 1 },\n                \"message\": { \"type\": \"string\", \"minLength\": 1 },\n                \"error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n".as_bytes();
191static CONTRACT_BODY_SESSION_SCOPE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/session-scope-v1.schema.json\",\n  \"title\": \"ReDevPlugin session scope lifecycle v1\",\n  \"description\": \"Exact authenticated-session ownership, teardown phases, and public revoke results. Teardown identities and closed-session proofs are intentionally excluded from every wire shape.\",\n  \"$ref\": \"#/$defs/public_revoke_result\",\n  \"$defs\": {\n    \"owner_hash\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\"\n    },\n    \"session_scope\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"owner_session_hash\",\n        \"owner_user_hash\",\n        \"owner_env_hash\",\n        \"session_channel_id_hash\"\n      ],\n      \"properties\": {\n        \"owner_session_hash\": { \"$ref\": \"#/$defs/owner_hash\" },\n        \"owner_user_hash\": { \"$ref\": \"#/$defs/owner_hash\" },\n        \"owner_env_hash\": { \"$ref\": \"#/$defs/owner_hash\" },\n        \"session_channel_id_hash\": { \"$ref\": \"#/$defs/owner_hash\" }\n      }\n    },\n    \"teardown_phase\": {\n      \"type\": \"string\",\n      \"enum\": [\"bridge\", \"confirmation\", \"execution\", \"operation\", \"stream\", \"runtime\"]\n    },\n    \"revoke_counts\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"surfaces\",\n        \"asset_tickets\",\n        \"asset_sessions\",\n        \"plugin_gateway_tokens\",\n        \"confirmation_tokens\",\n        \"stream_tickets\",\n        \"handle_grants\",\n        \"confirmations\",\n        \"operations\",\n        \"streams\",\n        \"runtime_executions\",\n        \"active_network_requests\",\n        \"sockets\",\n        \"network_streams\",\n        \"storage_hostcalls\"\n      ],\n      \"properties\": {\n        \"surfaces\": { \"$ref\": \"#/$defs/count\" },\n        \"asset_tickets\": { \"$ref\": \"#/$defs/count\" },\n        \"asset_sessions\": { \"$ref\": \"#/$defs/count\" },\n        \"plugin_gateway_tokens\": { \"$ref\": \"#/$defs/count\" },\n        \"confirmation_tokens\": { \"$ref\": \"#/$defs/count\" },\n        \"stream_tickets\": { \"$ref\": \"#/$defs/count\" },\n        \"handle_grants\": { \"$ref\": \"#/$defs/count\" },\n        \"confirmations\": { \"$ref\": \"#/$defs/count\" },\n        \"operations\": { \"$ref\": \"#/$defs/count\" },\n        \"streams\": { \"$ref\": \"#/$defs/count\" },\n        \"runtime_executions\": { \"$ref\": \"#/$defs/count\" },\n        \"active_network_requests\": { \"$ref\": \"#/$defs/count\" },\n        \"sockets\": { \"$ref\": \"#/$defs/count\" },\n        \"network_streams\": { \"$ref\": \"#/$defs/count\" },\n        \"storage_hostcalls\": { \"$ref\": \"#/$defs/count\" }\n      }\n    },\n    \"count\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 9007199254740991\n    },\n    \"complete_revoke_result\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"state\", \"fenced\", \"complete\", \"counts\"],\n      \"properties\": {\n        \"state\": { \"const\": \"complete\" },\n        \"fenced\": { \"const\": true },\n        \"complete\": { \"const\": true },\n        \"counts\": { \"$ref\": \"#/$defs/revoke_counts\" }\n      }\n    },\n    \"incomplete_revoke_result\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"state\", \"fenced\", \"complete\", \"counts\"],\n      \"properties\": {\n        \"state\": { \"const\": \"incomplete\" },\n        \"fenced\": { \"const\": true },\n        \"complete\": { \"const\": false },\n        \"counts\": { \"$ref\": \"#/$defs/revoke_counts\" }\n      }\n    },\n    \"public_revoke_result\": {\n      \"oneOf\": [\n        { \"$ref\": \"#/$defs/complete_revoke_result\" },\n        { \"$ref\": \"#/$defs/incomplete_revoke_result\" }\n      ]\n    }\n  }\n}\n".as_bytes();
192static CONTRACT_BODY_TARGET_CLASSIFIER_FIXTURE: &[u8] = "{\n  \"version\": \"target-classifier-v2\",\n  \"default_policy\": \"allow_public_unicast_only\",\n  \"normalization\": {\n    \"dns_names\": \"ASCII lowercase with one trailing dot stripped before special-host checks\",\n    \"ip_literals\": \"netip canonical form; IPv4-mapped IPv6 addresses are unmapped before blocked-range checks\"\n  },\n  \"blocked_ip_ranges\": [\n    \"0.0.0.0/8\",\n    \"10.0.0.0/8\",\n    \"100.64.0.0/10\",\n    \"127.0.0.0/8\",\n    \"169.254.0.0/16\",\n    \"172.16.0.0/12\",\n    \"192.0.0.0/24\",\n    \"192.0.2.0/24\",\n    \"192.31.196.0/24\",\n    \"192.52.193.0/24\",\n    \"192.88.99.0/24\",\n    \"192.168.0.0/16\",\n    \"192.175.48.0/24\",\n    \"198.18.0.0/15\",\n    \"198.51.100.0/24\",\n    \"203.0.113.0/24\",\n    \"224.0.0.0/4\",\n    \"240.0.0.0/4\",\n    \"::/96\",\n    \"::1/128\",\n    \"64:ff9b::/96\",\n    \"64:ff9b:1::/48\",\n    \"100::/64\",\n    \"2001::/23\",\n    \"2001:db8::/32\",\n    \"2002::/16\",\n    \"3fff::/20\",\n    \"5f00::/16\",\n    \"2620:4f:8000::/48\",\n    \"fc00::/7\",\n    \"fe80::/10\",\n    \"fec0::/10\",\n    \"ff00::/8\"\n  ],\n  \"special_hosts\": [\n    \"localhost\",\n    \"metadata.google.internal\",\n    \"metadata.goog\",\n    \"instance-data\",\n    \"instance-data.ec2.internal\",\n    \"metadata.azure.internal\",\n    \"169.254.169.254\"\n  ],\n  \"fixtures\": [\n    {\n      \"name\": \"public-http-origin\",\n      \"transport\": \"http\",\n      \"destination\": \"https://api.example.com\",\n      \"resolved_address\": \"93.184.216.34\",\n      \"decision\": \"allow\"\n    },\n    {\n      \"name\": \"public-ipv4-literal\",\n      \"transport\": \"tcp\",\n      \"destination\": \"1.1.1.1:443\",\n      \"decision\": \"allow\"\n    },\n    {\n      \"name\": \"public-ipv4-mapped-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"dns.example.com:853\",\n      \"resolved_address\": \"::ffff:8.8.8.8\",\n      \"decision\": \"allow\"\n    },\n    {\n      \"name\": \"public-ipv6-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"dns.example.com:853\",\n      \"resolved_address\": \"2606:4700:4700::1111\",\n      \"decision\": \"allow\"\n    },\n    {\n      \"name\": \"punycode-public-host\",\n      \"transport\": \"http\",\n      \"destination\": \"https://xn--bcher-kva.example\",\n      \"resolved_address\": \"1.0.0.1\",\n      \"decision\": \"allow\"\n    },\n    {\n      \"name\": \"localhost-special-host\",\n      \"transport\": \"http\",\n      \"destination\": \"http://localhost\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"metadata-special-host-trailing-dot\",\n      \"transport\": \"websocket\",\n      \"destination\": \"wss://metadata.google.internal.\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"instance-data-special-host\",\n      \"transport\": \"http\",\n      \"destination\": \"http://instance-data.ec2.internal\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"this-network-ipv4-literal\",\n      \"transport\": \"udp\",\n      \"destination\": \"0.1.2.3:53\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"private-ipv4-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"10.0.0.10\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"shared-address-space-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"100.64.0.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"loopback-ipv4-literal\",\n      \"transport\": \"tcp\",\n      \"destination\": \"127.0.0.1:443\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"link-local-ipv4-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"dns.example.com:53\",\n      \"resolved_address\": \"169.254.169.254\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"private-172-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"172.31.255.255\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"ietf-protocol-assignments-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"192.0.0.9\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"documentation-192-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"192.0.2.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"as112-v4-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"dns.example.com:53\",\n      \"resolved_address\": \"192.31.196.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"amt-v4-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"service.example.com:2268\",\n      \"resolved_address\": \"192.52.193.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"6to4-relay-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"192.88.99.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"private-192-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"192.168.1.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"direct-delegation-as112-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"dns.example.com:53\",\n      \"resolved_address\": \"192.175.48.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"benchmark-ipv4-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"198.18.0.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"documentation-198-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"198.51.100.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"documentation-203-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"203.0.113.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"multicast-ipv4-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"service.example.com:5000\",\n      \"resolved_address\": \"239.1.2.3\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"reserved-ipv4-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"240.0.0.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"ipv4-mapped-shared-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"::ffff:100.64.0.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"ipv4-compatible-ipv6-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"::192.0.2.1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"unspecified-ipv6-literal\",\n      \"transport\": \"tcp\",\n      \"destination\": \"[::]:443\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"loopback-ipv6-literal\",\n      \"transport\": \"tcp\",\n      \"destination\": \"[::1]:443\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"nat64-well-known-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"64:ff9b::c000:201\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"nat64-local-use-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"64:ff9b:1::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"discard-only-ipv6-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"service.example.com:5000\",\n      \"resolved_address\": \"100::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"ietf-special-ipv6-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"2001::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"documentation-ipv6-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"2001:db8::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"six-to-four-ipv6-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"2002:c000:0201::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"documentation-3fff-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"3fff::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"segment-routing-sid-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"service.example.com:443\",\n      \"resolved_address\": \"5f00::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"direct-delegation-as112-ipv6-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"dns.example.com:53\",\n      \"resolved_address\": \"2620:4f:8000::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"ula-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"fd00::10\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"ipv6-link-local-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"fe80::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"site-local-resolved\",\n      \"transport\": \"tcp\",\n      \"destination\": \"db.example.com:5432\",\n      \"resolved_address\": \"fec0::1\",\n      \"decision\": \"deny\"\n    },\n    {\n      \"name\": \"multicast-ipv6-resolved\",\n      \"transport\": \"udp\",\n      \"destination\": \"service.example.com:5000\",\n      \"resolved_address\": \"ff02::1\",\n      \"decision\": \"deny\"\n    }\n  ]\n}\n".as_bytes();
193static CONTRACT_BODY_TOKEN_TICKET_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/token-ticket-v4.schema.json\",\n  \"title\": \"ReDevPlugin token and ticket v4\",\n  \"description\": \"Host-issued token records. Exact session-bound audiences participate in the session-scope-v1 revocation lifecycle.\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"token_kind\",\n    \"token_id\",\n    \"audience\",\n    \"revision\",\n    \"issued_at\",\n    \"expires_at\",\n    \"nonce\",\n    \"use\"\n  ],\n  \"properties\": {\n    \"token_kind\": { \"$ref\": \"#/$defs/token_kind\" },\n    \"token_id\": { \"$ref\": \"#/$defs/token_id\" },\n    \"token_hash\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sha256:[0-9a-f]{64}$\",\n      \"description\": \"Server-side record only. Cleartext token is returned exactly once and must not be persisted.\"\n    },\n    \"audience\": { \"$ref\": \"#/$defs/audience\" },\n    \"revision\": { \"$ref\": \"#/$defs/revision\" },\n    \"issued_at\": { \"type\": \"string\", \"format\": \"date-time\" },\n    \"expires_at\": { \"type\": \"string\", \"format\": \"date-time\" },\n    \"nonce\": { \"type\": \"string\", \"minLength\": 16 },\n    \"use\": { \"enum\": [\"single_use\", \"reusable\"] },\n    \"consumed\": { \"type\": \"boolean\" },\n    \"consumed_at\": { \"type\": [\"string\", \"null\"], \"format\": \"date-time\" },\n    \"revoked\": { \"type\": \"boolean\" },\n    \"revoked_at\": { \"type\": [\"string\", \"null\"], \"format\": \"date-time\" },\n    \"bound_bridge_channel_id\": { \"type\": \"string\" },\n    \"limits\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"max_bytes_per_second\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"max_total_bytes\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 }\n      }\n    }\n  },\n  \"$defs\": {\n    \"token_kind\": {\n      \"enum\": [\n        \"asset_ticket\",\n        \"asset_session\",\n        \"plugin_gateway_token\",\n        \"confirmation_token\",\n        \"handle_grant\",\n        \"stream_ticket\"\n      ]\n    },\n    \"token_id\": {\n      \"type\": \"string\",\n      \"description\": \"Opaque token or ticket identifier. Prefixes are stable namespaces: at_ asset tickets, as_ asset sessions, pgt_ plugin gateway tokens, ct_ confirmation tokens, hg_ handle grants, and st_ stream tickets.\",\n      \"pattern\": \"^(at|as|pgt|ct|hg|st)_[A-Za-z0-9_-]+$\"\n    },\n    \"audience\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"plugin_instance_id\", \"active_fingerprint\"],\n      \"properties\": {\n        \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"plugin_version\": { \"type\": \"string\", \"minLength\": 1 },\n        \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n        \"surface_id\": { \"type\": \"string\", \"minLength\": 1 },\n        \"surface_instance_id\": { \"type\": \"string\" },\n        \"entry_path\": { \"type\": \"string\", \"minLength\": 1 },\n        \"entry_sha256\": {\n          \"type\": \"string\",\n          \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n        },\n        \"asset_session_nonce\": { \"type\": \"string\", \"minLength\": 16 },\n        \"route_role\": { \"enum\": [\"trusted_parent\", \"trusted_intent\"] },\n        \"owner_session_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"owner_user_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" },\n        \"owner_env_hash\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\" },\n        \"session_channel_id_hash\": { \"type\": \"string\", \"minLength\": 1 },\n        \"bridge_channel_id\": { \"type\": \"string\" },\n        \"runtime_instance_id\": { \"type\": \"string\" },\n        \"runtime_generation_id\": { \"type\": \"string\" },\n        \"runtime_shard_id\": { \"type\": \"string\" },\n        \"ipc_channel_id\": { \"type\": \"string\" },\n        \"connection_nonce\": { \"type\": \"string\", \"minLength\": 16 },\n        \"stream_id\": { \"type\": \"string\" },\n        \"operation_id\": { \"type\": \"string\" },\n        \"audit_correlation_id\": { \"type\": \"string\" },\n        \"stream_direction\": { \"enum\": [\"read\", \"write\", \"duplex\"] },\n        \"handle_id\": { \"type\": \"string\" },\n        \"confirmation_id\": { \"type\": \"string\" },\n        \"method\": { \"type\": \"string\" },\n        \"resource_scope\": { \"$ref\": \"https://schemas.redevplugin.dev/plugin/resource-scope-v1.schema.json\" },\n        \"request_hash\": {\n          \"type\": \"string\",\n          \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n        },\n        \"plan_hash\": {\n          \"type\": \"string\",\n          \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n        }\n      }\n    },\n    \"revision\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"policy_revision\", \"management_revision\", \"revoke_epoch\"],\n      \"properties\": {\n        \"policy_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"management_revision\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740991 },\n        \"revoke_epoch\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 }\n      }\n    }\n  },\n  \"allOf\": [\n    {\n      \"if\": { \"properties\": { \"token_kind\": { \"const\": \"asset_ticket\" } }, \"required\": [\"token_kind\"] },\n      \"then\": {\n        \"properties\": {\n          \"token_id\": { \"pattern\": \"^at_[A-Za-z0-9_-]+$\" },\n          \"use\": { \"const\": \"single_use\" },\n          \"audience\": {\n            \"not\": { \"required\": [\"resource_scope\"] },\n            \"required\": [\n              \"plugin_id\",\n              \"plugin_instance_id\",\n              \"plugin_version\",\n              \"active_fingerprint\",\n              \"surface_id\",\n              \"surface_instance_id\",\n              \"entry_path\",\n              \"entry_sha256\",\n              \"asset_session_nonce\",\n              \"route_role\",\n              \"owner_session_hash\",\n              \"owner_user_hash\",\n              \"owner_env_hash\",\n              \"session_channel_id_hash\",\n              \"runtime_generation_id\"\n            ]\n          }\n        },\n        \"required\": [\"token_kind\", \"audience\", \"revision\", \"use\"]\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"token_kind\": { \"const\": \"asset_session\" } }, \"required\": [\"token_kind\"] },\n      \"then\": {\n        \"properties\": {\n          \"token_id\": { \"pattern\": \"^as_[A-Za-z0-9_-]+$\" },\n          \"use\": { \"const\": \"reusable\" },\n          \"audience\": {\n            \"not\": { \"required\": [\"resource_scope\"] },\n            \"required\": [\n              \"plugin_id\",\n              \"plugin_instance_id\",\n              \"plugin_version\",\n              \"active_fingerprint\",\n              \"surface_id\",\n              \"surface_instance_id\",\n              \"entry_path\",\n              \"entry_sha256\",\n              \"asset_session_nonce\",\n              \"route_role\",\n              \"owner_session_hash\",\n              \"owner_user_hash\",\n              \"owner_env_hash\",\n              \"session_channel_id_hash\",\n              \"runtime_generation_id\"\n            ]\n          }\n        },\n        \"required\": [\"token_kind\", \"audience\", \"revision\", \"use\"]\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"token_kind\": { \"const\": \"plugin_gateway_token\" } }, \"required\": [\"token_kind\"] },\n      \"then\": {\n        \"properties\": {\n          \"token_id\": { \"pattern\": \"^pgt_[A-Za-z0-9_-]+$\" },\n          \"use\": { \"const\": \"reusable\" },\n          \"audience\": {\n            \"not\": { \"required\": [\"resource_scope\"] },\n            \"required\": [\n              \"plugin_id\",\n              \"plugin_instance_id\",\n              \"plugin_version\",\n              \"active_fingerprint\",\n              \"surface_id\",\n              \"surface_instance_id\",\n              \"entry_path\",\n              \"entry_sha256\",\n              \"asset_session_nonce\",\n              \"route_role\",\n              \"owner_session_hash\",\n              \"owner_user_hash\",\n              \"owner_env_hash\",\n              \"session_channel_id_hash\",\n              \"bridge_channel_id\",\n              \"runtime_generation_id\"\n            ]\n          }\n        },\n        \"required\": [\"token_kind\", \"audience\", \"revision\", \"use\"]\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"token_kind\": { \"const\": \"confirmation_token\" } }, \"required\": [\"token_kind\"] },\n      \"then\": {\n        \"properties\": {\n          \"token_id\": { \"pattern\": \"^ct_[A-Za-z0-9_-]+$\" },\n          \"use\": { \"const\": \"single_use\" },\n          \"audience\": {\n            \"not\": { \"required\": [\"resource_scope\"] },\n            \"required\": [\n              \"plugin_id\",\n              \"plugin_instance_id\",\n              \"plugin_version\",\n              \"active_fingerprint\",\n              \"surface_id\",\n              \"surface_instance_id\",\n              \"entry_path\",\n              \"entry_sha256\",\n              \"asset_session_nonce\",\n              \"route_role\",\n              \"owner_session_hash\",\n              \"owner_user_hash\",\n              \"owner_env_hash\",\n              \"session_channel_id_hash\",\n              \"confirmation_id\",\n              \"bridge_channel_id\",\n              \"method\",\n              \"request_hash\",\n              \"plan_hash\",\n              \"runtime_generation_id\"\n            ]\n          }\n        },\n        \"required\": [\"token_kind\", \"audience\", \"revision\", \"use\"]\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"token_kind\": { \"const\": \"handle_grant\" } }, \"required\": [\"token_kind\"] },\n      \"then\": {\n        \"properties\": {\n          \"token_id\": { \"pattern\": \"^hg_[A-Za-z0-9_-]+$\" },\n          \"use\": { \"const\": \"reusable\" },\n          \"audience\": {\n            \"required\": [\n              \"plugin_instance_id\",\n              \"active_fingerprint\",\n              \"runtime_generation_id\",\n              \"owner_session_hash\",\n              \"owner_user_hash\",\n              \"owner_env_hash\",\n              \"session_channel_id_hash\",\n              \"handle_id\",\n              \"method\",\n              \"resource_scope\"\n            ]\n          }\n        },\n        \"required\": [\"token_kind\", \"audience\", \"revision\", \"use\"]\n      }\n    },\n    {\n      \"if\": { \"properties\": { \"token_kind\": { \"const\": \"stream_ticket\" } }, \"required\": [\"token_kind\"] },\n      \"then\": {\n        \"properties\": {\n          \"token_id\": { \"pattern\": \"^st_[A-Za-z0-9_-]+$\" },\n          \"use\": { \"const\": \"single_use\" },\n          \"audience\": {\n            \"not\": { \"required\": [\"resource_scope\"] },\n            \"required\": [\n              \"plugin_id\",\n              \"plugin_instance_id\",\n              \"plugin_version\",\n              \"active_fingerprint\",\n              \"route_role\",\n              \"owner_session_hash\",\n              \"owner_user_hash\",\n              \"owner_env_hash\",\n              \"session_channel_id_hash\",\n              \"stream_id\",\n              \"operation_id\",\n              \"stream_direction\",\n              \"method\"\n            ],\n            \"allOf\": [\n              {\n                \"if\": {\n                  \"properties\": { \"route_role\": { \"const\": \"trusted_parent\" } },\n                  \"required\": [\"route_role\"]\n                },\n                \"then\": {\n                  \"required\": [\n                    \"surface_id\",\n                    \"surface_instance_id\",\n                    \"entry_path\",\n                    \"entry_sha256\",\n                    \"asset_session_nonce\",\n                    \"bridge_channel_id\",\n                    \"runtime_generation_id\"\n                  ]\n                }\n              }\n            ]\n          }\n        },\n        \"required\": [\"token_kind\", \"audience\", \"revision\", \"use\"]\n      }\n    }\n  ]\n}\n".as_bytes();
194static CONTRACT_BODY_TRUSTED_TIME_EVIDENCE_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/trusted-time-evidence-v1.schema.json\",\n  \"title\": \"ReDevPlugin trusted time transparency evidence v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"schema_version\",\n    \"kind\",\n    \"leaf\",\n    \"leaf_sha256\",\n    \"integrated_time\",\n    \"signed_entry_timestamp\",\n    \"checkpoint\",\n    \"leaf_index\",\n    \"inclusion_proof\",\n    \"consistency_proof\"\n  ],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.trusted_time_evidence.v1\" },\n    \"kind\": { \"const\": \"transparency\" },\n    \"leaf\": { \"$ref\": \"#/$defs/leaf\" },\n    \"leaf_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"integrated_time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n    \"signed_entry_timestamp\": { \"$ref\": \"#/$defs/signature\" },\n    \"checkpoint\": { \"$ref\": \"#/$defs/checkpoint\" },\n    \"leaf_index\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9007199254740990 },\n    \"inclusion_proof\": { \"$ref\": \"#/$defs/proof\" },\n    \"consistency_proof\": { \"$ref\": \"#/$defs/proof\" }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n    \"leaf\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"source_id\", \"channel\", \"nonce\", \"minimum_time\", \"claimed_time\", \"request_sha256\", \"log_id\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.trusted_time_leaf.v1\" },\n        \"source_id\": { \"$ref\": \"#/$defs/id\" },\n        \"channel\": { \"$ref\": \"#/$defs/id\" },\n        \"nonce\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9_-]{43}$\" },\n        \"minimum_time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n        \"claimed_time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n        \"request_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" }\n      }\n    },\n    \"signature\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9+/]{86}==$\" },\n    \"proof\": {\n      \"type\": \"array\",\n      \"maxItems\": 64,\n      \"items\": { \"$ref\": \"#/$defs/sha256\" }\n    },\n    \"checkpoint\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"schema_version\", \"log_id\", \"tree_size\", \"root_hash\", \"checkpoint_time\", \"key_id\", \"signature\"],\n      \"properties\": {\n        \"schema_version\": { \"const\": \"redevplugin.trusted_time_checkpoint.v1\" },\n        \"log_id\": { \"$ref\": \"#/$defs/id\" },\n        \"tree_size\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 9007199254740991 },\n        \"root_hash\": { \"$ref\": \"#/$defs/sha256\" },\n        \"checkpoint_time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n        \"key_id\": { \"$ref\": \"#/$defs/id\" },\n        \"signature\": { \"$ref\": \"#/$defs/signature\" }\n      }\n    }\n  }\n}\n".as_bytes();
195static CONTRACT_BODY_TRUSTED_TIME_LEAF_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/trusted-time-leaf-v1.schema.json\",\n  \"title\": \"ReDevPlugin trusted time leaf v1\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"schema_version\", \"source_id\", \"channel\", \"nonce\", \"minimum_time\", \"claimed_time\", \"request_sha256\", \"log_id\"],\n  \"properties\": {\n    \"schema_version\": { \"const\": \"redevplugin.trusted_time_leaf.v1\" },\n    \"source_id\": { \"$ref\": \"#/$defs/id\" },\n    \"channel\": { \"$ref\": \"#/$defs/id\" },\n    \"nonce\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9_-]{43}$\" },\n    \"minimum_time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n    \"claimed_time\": { \"type\": \"string\", \"format\": \"date-time\", \"maxLength\": 35 },\n    \"request_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"log_id\": { \"$ref\": \"#/$defs/id\" }\n  },\n  \"$defs\": {\n    \"id\": { \"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9._-]{0,127}$\" },\n    \"sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" }\n  }\n}\n".as_bytes();
196static CONTRACT_BODY_WASM_WORKER_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/wasm-worker-v2.schema.json\",\n  \"title\": \"ReDevPlugin WASM worker executable contract v2\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\"abi_version\", \"memory\", \"table\", \"exports\", \"imports\"],\n  \"properties\": {\n    \"abi_version\": { \"const\": \"redevplugin-wasm-worker-v2\" },\n    \"memory\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"count\", \"export\", \"memory64\", \"shared\", \"page_size_bytes\"],\n      \"properties\": {\n        \"count\": { \"const\": 1 },\n        \"export\": { \"const\": \"memory\" },\n        \"memory64\": { \"const\": false },\n        \"shared\": { \"const\": false },\n        \"page_size_bytes\": { \"const\": 65536 }\n      }\n    },\n    \"table\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"max_count\", \"max_elements\", \"table64\", \"shared\"],\n      \"properties\": {\n        \"max_count\": { \"const\": 1 },\n        \"max_elements\": { \"const\": 65536 },\n        \"table64\": { \"const\": false },\n        \"shared\": { \"const\": false }\n      }\n    },\n    \"exports\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"alloc\", \"dealloc\", \"invoke\"],\n      \"properties\": {\n        \"alloc\": {\n          \"$ref\": \"#/$defs/alloc_function\"\n        },\n        \"dealloc\": {\n          \"$ref\": \"#/$defs/dealloc_function\"\n        },\n        \"invoke\": {\n          \"$ref\": \"#/$defs/invoke_function\"\n        }\n      }\n    },\n    \"imports\": {\n      \"type\": \"array\",\n      \"uniqueItems\": true,\n      \"items\": { \"$ref\": \"#/$defs/hostcall_import\" }\n    }\n  },\n  \"$defs\": {\n    \"alloc_function\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"params\", \"results\"],\n      \"properties\": {\n        \"name\": { \"const\": \"redevplugin_worker_alloc\" },\n        \"params\": { \"const\": [\"i32\"] },\n        \"results\": { \"const\": [\"i32\"] }\n      }\n    },\n    \"dealloc_function\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"params\", \"results\"],\n      \"properties\": {\n        \"name\": { \"const\": \"redevplugin_worker_dealloc\" },\n        \"params\": { \"const\": [\"i32\", \"i32\"] },\n        \"results\": { \"const\": [] }\n      }\n    },\n    \"invoke_function\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"name\", \"params\", \"results\"],\n      \"properties\": {\n        \"name\": { \"const\": \"redevplugin_worker_invoke\" },\n        \"params\": { \"const\": [\"i32\", \"i32\"] },\n        \"results\": { \"const\": [\"i64\"] }\n      }\n    },\n    \"hostcall_import\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\"module\", \"name\", \"params\", \"results\"],\n      \"properties\": {\n        \"module\": { \"enum\": [\"redevplugin.storage\", \"redevplugin.network\"] },\n        \"name\": { \"enum\": [\"files\", \"kv\", \"sqlite\", \"execute\"] },\n        \"params\": { \"const\": [\"i32\", \"i32\", \"i32\", \"i32\"] },\n        \"results\": { \"const\": [\"i32\"] }\n      },\n      \"allOf\": [\n        {\n          \"if\": { \"properties\": { \"module\": { \"const\": \"redevplugin.storage\" } }, \"required\": [\"module\"] },\n          \"then\": { \"properties\": { \"name\": { \"enum\": [\"files\", \"kv\", \"sqlite\"] } } },\n          \"else\": { \"properties\": { \"name\": { \"const\": \"execute\" } } }\n        }\n      ]\n    }\n  }\n}\n".as_bytes();
197static CONTRACT_BODY_WORKER_INVOCATION_SCHEMA: &[u8] = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://schemas.redevplugin.dev/plugin/worker-invocation-v3.schema.json\",\n  \"title\": \"ReDevPlugin worker invocation payload v3\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"plugin_id\",\n    \"plugin_instance_id\",\n    \"active_fingerprint\",\n    \"runtime_instance_id\",\n    \"runtime_generation_id\",\n    \"package_hash\",\n    \"worker_id\",\n    \"worker_mode\",\n    \"worker_scope\",\n    \"artifact\",\n    \"artifact_sha256\",\n    \"abi\",\n    \"method\",\n    \"effect\",\n    \"execution\",\n    \"audit_correlation_id\",\n    \"owner_env_hash\",\n    \"broker_access\",\n    \"broker_access_sha256\",\n    \"params_sha256\",\n    \"params\"\n  ],\n  \"properties\": {\n    \"plugin_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"plugin_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"active_fingerprint\": { \"type\": \"string\", \"minLength\": 1 },\n    \"runtime_instance_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"runtime_generation_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"package_hash\": { \"$ref\": \"#/$defs/sha256\" },\n    \"worker_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"worker_mode\": { \"const\": \"job\" },\n    \"worker_scope\": { \"type\": \"string\", \"minLength\": 1 },\n    \"artifact\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"pattern\": \"^workers/[A-Za-z0-9._/-]+\\\\.wasm$\"\n    },\n    \"artifact_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"abi\": { \"const\": \"redevplugin-wasm-worker-v2\" },\n    \"method\": { \"type\": \"string\", \"minLength\": 1 },\n    \"effect\": { \"enum\": [\"read\", \"write\", \"execute\", \"delete\", \"admin\"] },\n    \"execution\": { \"enum\": [\"sync\", \"operation\", \"subscription\"] },\n    \"operation_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"stream_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"audit_correlation_id\": { \"type\": \"string\", \"minLength\": 1 },\n    \"params_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"surface_instance_id\": { \"type\": \"string\" },\n    \"owner_session_hash\": { \"type\": \"string\" },\n    \"owner_user_hash\": { \"type\": \"string\" },\n    \"owner_env_hash\": { \"type\": \"string\", \"minLength\": 1 },\n    \"session_channel_id_hash\": { \"type\": \"string\" },\n    \"bridge_channel_id\": { \"type\": \"string\" },\n    \"storage_handle_grants\": {\n      \"type\": \"object\",\n      \"propertyNames\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128 },\n      \"additionalProperties\": { \"type\": \"string\", \"minLength\": 1 }\n    },\n    \"broker_access\": { \"$ref\": \"#/$defs/broker_access\" },\n    \"broker_access_sha256\": { \"$ref\": \"#/$defs/sha256\" },\n    \"params\": {\n      \"type\": \"object\",\n      \"additionalProperties\": true\n    }\n  },\n  \"$defs\": {\n    \"broker_access\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"storage\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"store_id\", \"scope\", \"operations\"],\n            \"properties\": {\n              \"store_id\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128 },\n              \"scope\": { \"enum\": [\"user\", \"environment\"] },\n              \"operations\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"uniqueItems\": true,\n                \"items\": { \"enum\": [\"read\", \"write\", \"delete\", \"list\", \"get\", \"put\", \"query\", \"exec\"] }\n              }\n            }\n          }\n        },\n        \"network\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"connector_id\", \"transport\", \"scope\", \"operations\"],\n            \"properties\": {\n              \"connector_id\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128 },\n              \"transport\": { \"enum\": [\"http\", \"websocket\", \"tcp\", \"udp\"] },\n              \"scope\": { \"enum\": [\"user\", \"environment\"] },\n              \"operations\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"uniqueItems\": true,\n                \"items\": { \"enum\": [\"http\", \"http_stream\", \"websocket_round_trip\", \"tcp_round_trip\", \"udp_round_trip\"] }\n              },\n              \"http_methods\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"uniqueItems\": true,\n                \"items\": { \"enum\": [\"GET\", \"HEAD\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"OPTIONS\"] }\n              }\n            },\n            \"allOf\": [\n              {\n                \"if\": { \"properties\": { \"transport\": { \"const\": \"http\" } }, \"required\": [\"transport\"] },\n                \"then\": { \"required\": [\"http_methods\"] },\n                \"else\": { \"not\": { \"required\": [\"http_methods\"] } }\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"sha256\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sha256:[a-f0-9]{64}$\"\n    }\n  },\n  \"allOf\": [\n    {\n      \"if\": { \"properties\": { \"execution\": { \"const\": \"sync\" } }, \"required\": [\"execution\"] },\n      \"then\": { \"not\": { \"anyOf\": [{ \"required\": [\"operation_id\"] }, { \"required\": [\"stream_id\"] }] } }\n    },\n    {\n      \"if\": { \"properties\": { \"execution\": { \"const\": \"operation\" } }, \"required\": [\"execution\"] },\n      \"then\": { \"required\": [\"operation_id\"], \"not\": { \"required\": [\"stream_id\"] } }\n    },\n    {\n      \"if\": { \"properties\": { \"execution\": { \"const\": \"subscription\" } }, \"required\": [\"execution\"] },\n      \"then\": { \"required\": [\"operation_id\", \"stream_id\"] }\n    }\n  ]\n}\n".as_bytes();
198
199pub(crate) static ARTIFACTS: [Contract; 49] = [
200    Contract::new(
201        ContractId::COMPATIBILITY_MANIFEST_SCHEMA,
202        "compatibility-manifest-v8",
203        "a1831e0ae9a1b47d92e7ad9879b1ca4e3510ebc212b87360595b672e8b87bc79",
204        CONTRACT_BODY_COMPATIBILITY_MANIFEST_SCHEMA,
205    ),
206    Contract::new(
207        ContractId::CONTRACT_REGISTRY_SCHEMA,
208        "contract-registry-v2",
209        "d516b3565158ac1b0d5e9f86b91b13ac19321ab3ff54468be41951b68d7085ac",
210        CONTRACT_BODY_CONTRACT_REGISTRY_SCHEMA,
211    ),
212    Contract::new(
213        ContractId::ERROR_CODES_SCHEMA,
214        "error-codes-v6",
215        "094cb980156c17af4866942b51e6a1032ea7d1ae0675b329d59a765223ccda28",
216        CONTRACT_BODY_ERROR_CODES_SCHEMA,
217    ),
218    Contract::new(
219        ContractId::HOST_CAPABILITY_COMPATIBILITY_SCHEMA,
220        "host-capability-compatibility-v1",
221        "361ebbf7009aeb66c763ecde46427b17b6cf7d2307c01886c5987a1f4f1762de",
222        CONTRACT_BODY_HOST_CAPABILITY_COMPATIBILITY_SCHEMA,
223    ),
224    Contract::new(
225        ContractId::HOST_CAPABILITY_CONTRACT_SCHEMA,
226        "host-capability-contract-v1",
227        "0a653e36d44104f1d16b06ee424648086c146f23c907b176bdf470ae73025485",
228        CONTRACT_BODY_HOST_CAPABILITY_CONTRACT_SCHEMA,
229    ),
230    Contract::new(
231        ContractId::HOST_CAPABILITY_MANIFEST_SCHEMA,
232        "host-capability-manifest-v1",
233        "5f13a8e5f918378b9cba9fdc133a9a75ba3a8311c30cb6a02ca0aba09035110e",
234        CONTRACT_BODY_HOST_CAPABILITY_MANIFEST_SCHEMA,
235    ),
236    Contract::new(
237        ContractId::HOST_CAPABILITY_NOTICES_SCHEMA,
238        "host-capability-notices-v1",
239        "6affd5d0ae90239f6fd08cbeddae4eef393efa2838c9e4935874ba3dc0e05948",
240        CONTRACT_BODY_HOST_CAPABILITY_NOTICES_SCHEMA,
241    ),
242    Contract::new(
243        ContractId::HOST_CAPABILITY_PIN_SCHEMA,
244        "host-capability-pin-v1",
245        "20526a5934f0d85a3db7882492487266f09de5bcd176e2c7936f05d0b7fe0338",
246        CONTRACT_BODY_HOST_CAPABILITY_PIN_SCHEMA,
247    ),
248    Contract::new(
249        ContractId::HOST_CAPABILITY_SIGNATURE_SCHEMA,
250        "host-capability-signature-v1",
251        "88cbc1d63afb7e289ca4f8b7c76f702b8d20156f7722c1b71f3ab9138a240a5e",
252        CONTRACT_BODY_HOST_CAPABILITY_SIGNATURE_SCHEMA,
253    ),
254    Contract::new(
255        ContractId::IFRAME_BRIDGE_SCHEMA,
256        "bridge-v5",
257        "ad8ccc7e1900ecb871432f07296dd681ae6faea9377e52f5ddca90300c04f4da",
258        CONTRACT_BODY_IFRAME_BRIDGE_SCHEMA,
259    ),
260    Contract::new(
261        ContractId::MANIFEST_SCHEMA,
262        "manifest-v5",
263        "9695f6163aa539b9e3a933367c98850257c6d7bb8d61b36fd5f83b3ab61746f7",
264        CONTRACT_BODY_MANIFEST_SCHEMA,
265    ),
266    Contract::new(
267        ContractId::NETWORK_GRANT_SCHEMA,
268        "network-grant-v2",
269        "5fc1cfc3469a992e551fd392fab982abb6f95e456a1cb768ceca137f7c693abc",
270        CONTRACT_BODY_NETWORK_GRANT_SCHEMA,
271    ),
272    Contract::new(
273        ContractId::OPAQUE_SURFACE_DOCUMENT_SCHEMA,
274        "opaque-surface-document-v3",
275        "63419ff5b5a8890e14f97ca29aaae175b93daff61d4567c5bdff7f6e6a9e7450",
276        CONTRACT_BODY_OPAQUE_SURFACE_DOCUMENT_SCHEMA,
277    ),
278    Contract::new(
279        ContractId::OPAQUE_SURFACE_TRANSPORT_SCHEMA,
280        "opaque-surface-transport-v4",
281        "70a32dc8bf281cea2c92492c466fd477070c62156a3f593d45eb460cde62dca2",
282        CONTRACT_BODY_OPAQUE_SURFACE_TRANSPORT_SCHEMA,
283    ),
284    Contract::new(
285        ContractId::OWNER_SCOPE_INVENTORY_REGISTRY,
286        "owner-scope-inventory-registry-v1",
287        "92a2d6ed3a9038e95285faa108e2186cf9d0df343854741c551f8c4039f91217",
288        CONTRACT_BODY_OWNER_SCOPE_INVENTORY_REGISTRY,
289    ),
290    Contract::new(
291        ContractId::OWNER_SCOPE_INVENTORY_SCHEMA,
292        "owner-scope-inventory-v1",
293        "972e4fe3cc74339c211ba8a50951ad0f4ae4265d3d34b20f03d0e4888638e254",
294        CONTRACT_BODY_OWNER_SCOPE_INVENTORY_SCHEMA,
295    ),
296    Contract::new(
297        ContractId::OWNER_SCOPE_MIGRATION_SCHEMA,
298        "owner-scope-migration-v1",
299        "e73443813e19e4cfb05748eb75d5cf04f43db3bed9d2be0c893c13bda88a5993",
300        CONTRACT_BODY_OWNER_SCOPE_MIGRATION_SCHEMA,
301    ),
302    Contract::new(
303        ContractId::PACKAGE_SIGNATURE_SCHEMA,
304        "package-signature-v1",
305        "13951c0f6831ba28647774368c76a817868aeb7984628e2cf3dc4ad1b54f8284",
306        CONTRACT_BODY_PACKAGE_SIGNATURE_SCHEMA,
307    ),
308    Contract::new(
309        ContractId::PERFORMANCE_CONTRACT,
310        "performance-contract-v3",
311        "a4e1a099dc16f2b0a4d6bdc5fdf8f6ce622948ffec40f70bfc2743286a2b816b",
312        CONTRACT_BODY_PERFORMANCE_CONTRACT,
313    ),
314    Contract::new(
315        ContractId::PERFORMANCE_EVIDENCE_SCHEMA,
316        "performance-evidence-v3",
317        "a2f5e94071bb09a9327fc55ad3f6c39052b01c3e54cceb8b974dc244667a0326",
318        CONTRACT_BODY_PERFORMANCE_EVIDENCE_SCHEMA,
319    ),
320    Contract::new(
321        ContractId::PLATFORM_PACKAGE_PUBLICATION_SCHEMA,
322        "platform-package-publication-v1",
323        "20450b516c34d5a122020f4064ddfa03ffcb97ffea661e0868cd09760b3f08b0",
324        CONTRACT_BODY_PLATFORM_PACKAGE_PUBLICATION_SCHEMA,
325    ),
326    Contract::new(
327        ContractId::PLATFORM_PACKAGE_SET_SCHEMA,
328        "platform-package-set-v1",
329        "4d9979f5205ec047895b64c995312c588d998bb1c1448f6c9c559f1b7ab0d796",
330        CONTRACT_BODY_PLATFORM_PACKAGE_SET_SCHEMA,
331    ),
332    Contract::new(
333        ContractId::PLUGIN_PLATFORM_OPENAPI,
334        "plugin-platform-v8",
335        "290883ff79b74badbf9f6feddb4dfbef820a4ef4622a7e3fca815e3abb2c4eac",
336        CONTRACT_BODY_PLUGIN_PLATFORM_OPENAPI,
337    ),
338    Contract::new(
339        ContractId::PROCESS_CONTAINMENT_SCHEMA,
340        "process-containment-v1",
341        "930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc",
342        CONTRACT_BODY_PROCESS_CONTAINMENT_SCHEMA,
343    ),
344    Contract::new(
345        ContractId::QUARANTINE_CLEANUP_SCHEMA,
346        "quarantine-cleanup-v1",
347        "0aced01a8d409953d5075a799ac273cae79e285ac82debe93ac4d8b706571ad1",
348        CONTRACT_BODY_QUARANTINE_CLEANUP_SCHEMA,
349    ),
350    Contract::new(
351        ContractId::RELEASE_METADATA_SCHEMA,
352        "release-metadata-v5",
353        "255ef3deb7d2758a43e69e533a08aa28106f8edc2e7385ab0aec0d50c1ef3d7a",
354        CONTRACT_BODY_RELEASE_METADATA_SCHEMA,
355    ),
356    Contract::new(
357        ContractId::RELEASE_REVOCATION_POINTER_SCHEMA,
358        "release-revocation-pointer-v1",
359        "a9b7b64cb2dbf89500f0d191a6b2b9ab42eb806a452eb8338895a48ec7d7551e",
360        CONTRACT_BODY_RELEASE_REVOCATION_POINTER_SCHEMA,
361    ),
362    Contract::new(
363        ContractId::RELEASE_REVOCATION_SCHEMA,
364        "release-revocation-v2",
365        "c3b40c05bc0dea422a272ee62ca45d0efb6456278b0707c5a12f39b004b84cb4",
366        CONTRACT_BODY_RELEASE_REVOCATION_SCHEMA,
367    ),
368    Contract::new(
369        ContractId::RELEASE_ROOT_DELEGATION_SCHEMA,
370        "release-root-delegation-v1",
371        "c1adbb13eaeeca145d5ee787ff43777e60a5f329e460d20b8db358e4f5fc4825",
372        CONTRACT_BODY_RELEASE_ROOT_DELEGATION_SCHEMA,
373    ),
374    Contract::new(
375        ContractId::RELEASE_SIGNATURE_ENVELOPE_SCHEMA,
376        "release-signature-envelope-v1",
377        "7df9afd22bfdebfa89dc3bdb46ecdbe22a91ecce35fa46c492dd9795c66fae29",
378        CONTRACT_BODY_RELEASE_SIGNATURE_ENVELOPE_SCHEMA,
379    ),
380    Contract::new(
381        ContractId::RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA,
382        "release-signing-ledger-evidence-v1",
383        "9ab8b7f65dedcd119d578debb4f6ff97fc35f4c7ac95c0e5435f8b0959bc1a5c",
384        CONTRACT_BODY_RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA,
385    ),
386    Contract::new(
387        ContractId::RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA,
388        "release-signing-ledger-receipt-v1",
389        "29210cfefd967017c5c74bcf8489bd50511c5c9f36d17b0200056ccb90c30561",
390        CONTRACT_BODY_RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA,
391    ),
392    Contract::new(
393        ContractId::RELEASE_SIGNING_LEDGER_SCHEMA,
394        "release-signing-ledger-v1",
395        "0c72b30bfd6b857b9809e48e1b7eaaeb7134d5afd6a935aa8373465054403765",
396        CONTRACT_BODY_RELEASE_SIGNING_LEDGER_SCHEMA,
397    ),
398    Contract::new(
399        ContractId::RELEASE_SIGNING_SUBJECT_SCHEMA,
400        "release-signing-subject-v1",
401        "876b1459824f90042bd141e96bfea4633333bdf2a227e15b6e25c72db1179c8e",
402        CONTRACT_BODY_RELEASE_SIGNING_SUBJECT_SCHEMA,
403    ),
404    Contract::new(
405        ContractId::RELEASE_SOURCE_POLICY_POINTER_SCHEMA,
406        "release-source-policy-pointer-v1",
407        "1a78cc3897ffbcdb605d2e9265d765207a4647d3f53fa5736aec65bf5f54e81c",
408        CONTRACT_BODY_RELEASE_SOURCE_POLICY_POINTER_SCHEMA,
409    ),
410    Contract::new(
411        ContractId::RELEASE_SOURCE_POLICY_SCHEMA,
412        "release-source-policy-v2",
413        "6a5a5eab317a86beea925a611ca8a7a2d937547c039ce147b5993f69a5611237",
414        CONTRACT_BODY_RELEASE_SOURCE_POLICY_SCHEMA,
415    ),
416    Contract::new(
417        ContractId::RELEASE_TRUST_STATE_SCHEMA,
418        "release-trust-state-v1",
419        "19ffa182932a22401a33ee4c9921e957c67895c2d8b041c9a27ee3530bdfb2d2",
420        CONTRACT_BODY_RELEASE_TRUST_STATE_SCHEMA,
421    ),
422    Contract::new(
423        ContractId::RESOURCE_SCOPE_SCHEMA,
424        "resource-scope-v1",
425        "e6021bd576c7220ad5536645a7ad8e57ee7aeb9901c31a89444fa6b695d8dc6f",
426        CONTRACT_BODY_RESOURCE_SCOPE_SCHEMA,
427    ),
428    Contract::new(
429        ContractId::RUNTIME_ADMISSION_SCHEMA,
430        "runtime-admission-v1",
431        "bee7b149876447d663a4099dbd71e71fa97f8ff80ddf4e12cbfba951a47c4beb",
432        CONTRACT_BODY_RUNTIME_ADMISSION_SCHEMA,
433    ),
434    Contract::new(
435        ContractId::RUNTIME_DESCRIPTOR_SCHEMA,
436        "runtime-descriptor-v2",
437        "2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351",
438        CONTRACT_BODY_RUNTIME_DESCRIPTOR_SCHEMA,
439    ),
440    Contract::new(
441        ContractId::RUNTIME_EXEC_JOURNAL_SCHEMA,
442        "runtime-exec-journal-v1",
443        "2bddbba383843b8ebc1554009909f0bb25e98616be763826a697cb0f408870d2",
444        CONTRACT_BODY_RUNTIME_EXEC_JOURNAL_SCHEMA,
445    ),
446    Contract::new(
447        ContractId::RUST_IPC_SCHEMA,
448        "rust-ipc-v6",
449        "9814ca091ac2e4e8435c1ab553e248e9d2e792de93ce9fd27bd030486774837f",
450        CONTRACT_BODY_RUST_IPC_SCHEMA,
451    ),
452    Contract::new(
453        ContractId::SESSION_SCOPE_SCHEMA,
454        "session-scope-v1",
455        "3df0084264f0aff9fe2261c237cea439adb5cdc2534bfaaa0488d5992d4a7d2e",
456        CONTRACT_BODY_SESSION_SCOPE_SCHEMA,
457    ),
458    Contract::new(
459        ContractId::TARGET_CLASSIFIER_FIXTURE,
460        "target-classifier-v2",
461        "ae7336cce77a2e820f96f1cc309b93f8442c932dcebec25e3890d31cd098e2d1",
462        CONTRACT_BODY_TARGET_CLASSIFIER_FIXTURE,
463    ),
464    Contract::new(
465        ContractId::TOKEN_TICKET_SCHEMA,
466        "token-ticket-v4",
467        "5cf365b5b52a331ac0d3ad35a98be3c2ce668804ae88fdeaf9679a44db14feb1",
468        CONTRACT_BODY_TOKEN_TICKET_SCHEMA,
469    ),
470    Contract::new(
471        ContractId::TRUSTED_TIME_EVIDENCE_SCHEMA,
472        "trusted-time-evidence-v1",
473        "4398cbd2a3eea42a85008ee16a69d7adb265673e6749b1f13a4f1610f36e5e38",
474        CONTRACT_BODY_TRUSTED_TIME_EVIDENCE_SCHEMA,
475    ),
476    Contract::new(
477        ContractId::TRUSTED_TIME_LEAF_SCHEMA,
478        "trusted-time-leaf-v1",
479        "1c25eb0040800eef145aa2bb4c0e1ae197ae584d365e9595ab89037e26fe5ddb",
480        CONTRACT_BODY_TRUSTED_TIME_LEAF_SCHEMA,
481    ),
482    Contract::new(
483        ContractId::WASM_WORKER_SCHEMA,
484        "redevplugin-wasm-worker-v2",
485        "00bf123f3a9ed932de4b71c180e2a5c34af0f82050defb271fedec42cf217902",
486        CONTRACT_BODY_WASM_WORKER_SCHEMA,
487    ),
488    Contract::new(
489        ContractId::WORKER_INVOCATION_SCHEMA,
490        "worker-invocation-v3",
491        "f08af491cbf5e7b71d1aeafbeac9ae581ee5fc3bcb76184daec369f94bab3927",
492        CONTRACT_BODY_WORKER_INVOCATION_SCHEMA,
493    ),
494];
495
496pub(crate) static ALL: [Contract; 50] = [
497    Contract::new(
498        ContractId::COMPATIBILITY_MANIFEST_SCHEMA,
499        "compatibility-manifest-v8",
500        "a1831e0ae9a1b47d92e7ad9879b1ca4e3510ebc212b87360595b672e8b87bc79",
501        CONTRACT_BODY_COMPATIBILITY_MANIFEST_SCHEMA,
502    ),
503    Contract::new(
504        ContractId::CONTRACT_REGISTRY,
505        "contract-registry-v2",
506        "00428101616f3e13a4e4b99f7197dff5660fa41f78a6a4dc9f942caef11b979a",
507        CONTRACT_BODY_CONTRACT_REGISTRY,
508    ),
509    Contract::new(
510        ContractId::CONTRACT_REGISTRY_SCHEMA,
511        "contract-registry-v2",
512        "d516b3565158ac1b0d5e9f86b91b13ac19321ab3ff54468be41951b68d7085ac",
513        CONTRACT_BODY_CONTRACT_REGISTRY_SCHEMA,
514    ),
515    Contract::new(
516        ContractId::ERROR_CODES_SCHEMA,
517        "error-codes-v6",
518        "094cb980156c17af4866942b51e6a1032ea7d1ae0675b329d59a765223ccda28",
519        CONTRACT_BODY_ERROR_CODES_SCHEMA,
520    ),
521    Contract::new(
522        ContractId::HOST_CAPABILITY_COMPATIBILITY_SCHEMA,
523        "host-capability-compatibility-v1",
524        "361ebbf7009aeb66c763ecde46427b17b6cf7d2307c01886c5987a1f4f1762de",
525        CONTRACT_BODY_HOST_CAPABILITY_COMPATIBILITY_SCHEMA,
526    ),
527    Contract::new(
528        ContractId::HOST_CAPABILITY_CONTRACT_SCHEMA,
529        "host-capability-contract-v1",
530        "0a653e36d44104f1d16b06ee424648086c146f23c907b176bdf470ae73025485",
531        CONTRACT_BODY_HOST_CAPABILITY_CONTRACT_SCHEMA,
532    ),
533    Contract::new(
534        ContractId::HOST_CAPABILITY_MANIFEST_SCHEMA,
535        "host-capability-manifest-v1",
536        "5f13a8e5f918378b9cba9fdc133a9a75ba3a8311c30cb6a02ca0aba09035110e",
537        CONTRACT_BODY_HOST_CAPABILITY_MANIFEST_SCHEMA,
538    ),
539    Contract::new(
540        ContractId::HOST_CAPABILITY_NOTICES_SCHEMA,
541        "host-capability-notices-v1",
542        "6affd5d0ae90239f6fd08cbeddae4eef393efa2838c9e4935874ba3dc0e05948",
543        CONTRACT_BODY_HOST_CAPABILITY_NOTICES_SCHEMA,
544    ),
545    Contract::new(
546        ContractId::HOST_CAPABILITY_PIN_SCHEMA,
547        "host-capability-pin-v1",
548        "20526a5934f0d85a3db7882492487266f09de5bcd176e2c7936f05d0b7fe0338",
549        CONTRACT_BODY_HOST_CAPABILITY_PIN_SCHEMA,
550    ),
551    Contract::new(
552        ContractId::HOST_CAPABILITY_SIGNATURE_SCHEMA,
553        "host-capability-signature-v1",
554        "88cbc1d63afb7e289ca4f8b7c76f702b8d20156f7722c1b71f3ab9138a240a5e",
555        CONTRACT_BODY_HOST_CAPABILITY_SIGNATURE_SCHEMA,
556    ),
557    Contract::new(
558        ContractId::IFRAME_BRIDGE_SCHEMA,
559        "bridge-v5",
560        "ad8ccc7e1900ecb871432f07296dd681ae6faea9377e52f5ddca90300c04f4da",
561        CONTRACT_BODY_IFRAME_BRIDGE_SCHEMA,
562    ),
563    Contract::new(
564        ContractId::MANIFEST_SCHEMA,
565        "manifest-v5",
566        "9695f6163aa539b9e3a933367c98850257c6d7bb8d61b36fd5f83b3ab61746f7",
567        CONTRACT_BODY_MANIFEST_SCHEMA,
568    ),
569    Contract::new(
570        ContractId::NETWORK_GRANT_SCHEMA,
571        "network-grant-v2",
572        "5fc1cfc3469a992e551fd392fab982abb6f95e456a1cb768ceca137f7c693abc",
573        CONTRACT_BODY_NETWORK_GRANT_SCHEMA,
574    ),
575    Contract::new(
576        ContractId::OPAQUE_SURFACE_DOCUMENT_SCHEMA,
577        "opaque-surface-document-v3",
578        "63419ff5b5a8890e14f97ca29aaae175b93daff61d4567c5bdff7f6e6a9e7450",
579        CONTRACT_BODY_OPAQUE_SURFACE_DOCUMENT_SCHEMA,
580    ),
581    Contract::new(
582        ContractId::OPAQUE_SURFACE_TRANSPORT_SCHEMA,
583        "opaque-surface-transport-v4",
584        "70a32dc8bf281cea2c92492c466fd477070c62156a3f593d45eb460cde62dca2",
585        CONTRACT_BODY_OPAQUE_SURFACE_TRANSPORT_SCHEMA,
586    ),
587    Contract::new(
588        ContractId::OWNER_SCOPE_INVENTORY_REGISTRY,
589        "owner-scope-inventory-registry-v1",
590        "92a2d6ed3a9038e95285faa108e2186cf9d0df343854741c551f8c4039f91217",
591        CONTRACT_BODY_OWNER_SCOPE_INVENTORY_REGISTRY,
592    ),
593    Contract::new(
594        ContractId::OWNER_SCOPE_INVENTORY_SCHEMA,
595        "owner-scope-inventory-v1",
596        "972e4fe3cc74339c211ba8a50951ad0f4ae4265d3d34b20f03d0e4888638e254",
597        CONTRACT_BODY_OWNER_SCOPE_INVENTORY_SCHEMA,
598    ),
599    Contract::new(
600        ContractId::OWNER_SCOPE_MIGRATION_SCHEMA,
601        "owner-scope-migration-v1",
602        "e73443813e19e4cfb05748eb75d5cf04f43db3bed9d2be0c893c13bda88a5993",
603        CONTRACT_BODY_OWNER_SCOPE_MIGRATION_SCHEMA,
604    ),
605    Contract::new(
606        ContractId::PACKAGE_SIGNATURE_SCHEMA,
607        "package-signature-v1",
608        "13951c0f6831ba28647774368c76a817868aeb7984628e2cf3dc4ad1b54f8284",
609        CONTRACT_BODY_PACKAGE_SIGNATURE_SCHEMA,
610    ),
611    Contract::new(
612        ContractId::PERFORMANCE_CONTRACT,
613        "performance-contract-v3",
614        "a4e1a099dc16f2b0a4d6bdc5fdf8f6ce622948ffec40f70bfc2743286a2b816b",
615        CONTRACT_BODY_PERFORMANCE_CONTRACT,
616    ),
617    Contract::new(
618        ContractId::PERFORMANCE_EVIDENCE_SCHEMA,
619        "performance-evidence-v3",
620        "a2f5e94071bb09a9327fc55ad3f6c39052b01c3e54cceb8b974dc244667a0326",
621        CONTRACT_BODY_PERFORMANCE_EVIDENCE_SCHEMA,
622    ),
623    Contract::new(
624        ContractId::PLATFORM_PACKAGE_PUBLICATION_SCHEMA,
625        "platform-package-publication-v1",
626        "20450b516c34d5a122020f4064ddfa03ffcb97ffea661e0868cd09760b3f08b0",
627        CONTRACT_BODY_PLATFORM_PACKAGE_PUBLICATION_SCHEMA,
628    ),
629    Contract::new(
630        ContractId::PLATFORM_PACKAGE_SET_SCHEMA,
631        "platform-package-set-v1",
632        "4d9979f5205ec047895b64c995312c588d998bb1c1448f6c9c559f1b7ab0d796",
633        CONTRACT_BODY_PLATFORM_PACKAGE_SET_SCHEMA,
634    ),
635    Contract::new(
636        ContractId::PLUGIN_PLATFORM_OPENAPI,
637        "plugin-platform-v8",
638        "290883ff79b74badbf9f6feddb4dfbef820a4ef4622a7e3fca815e3abb2c4eac",
639        CONTRACT_BODY_PLUGIN_PLATFORM_OPENAPI,
640    ),
641    Contract::new(
642        ContractId::PROCESS_CONTAINMENT_SCHEMA,
643        "process-containment-v1",
644        "930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc",
645        CONTRACT_BODY_PROCESS_CONTAINMENT_SCHEMA,
646    ),
647    Contract::new(
648        ContractId::QUARANTINE_CLEANUP_SCHEMA,
649        "quarantine-cleanup-v1",
650        "0aced01a8d409953d5075a799ac273cae79e285ac82debe93ac4d8b706571ad1",
651        CONTRACT_BODY_QUARANTINE_CLEANUP_SCHEMA,
652    ),
653    Contract::new(
654        ContractId::RELEASE_METADATA_SCHEMA,
655        "release-metadata-v5",
656        "255ef3deb7d2758a43e69e533a08aa28106f8edc2e7385ab0aec0d50c1ef3d7a",
657        CONTRACT_BODY_RELEASE_METADATA_SCHEMA,
658    ),
659    Contract::new(
660        ContractId::RELEASE_REVOCATION_POINTER_SCHEMA,
661        "release-revocation-pointer-v1",
662        "a9b7b64cb2dbf89500f0d191a6b2b9ab42eb806a452eb8338895a48ec7d7551e",
663        CONTRACT_BODY_RELEASE_REVOCATION_POINTER_SCHEMA,
664    ),
665    Contract::new(
666        ContractId::RELEASE_REVOCATION_SCHEMA,
667        "release-revocation-v2",
668        "c3b40c05bc0dea422a272ee62ca45d0efb6456278b0707c5a12f39b004b84cb4",
669        CONTRACT_BODY_RELEASE_REVOCATION_SCHEMA,
670    ),
671    Contract::new(
672        ContractId::RELEASE_ROOT_DELEGATION_SCHEMA,
673        "release-root-delegation-v1",
674        "c1adbb13eaeeca145d5ee787ff43777e60a5f329e460d20b8db358e4f5fc4825",
675        CONTRACT_BODY_RELEASE_ROOT_DELEGATION_SCHEMA,
676    ),
677    Contract::new(
678        ContractId::RELEASE_SIGNATURE_ENVELOPE_SCHEMA,
679        "release-signature-envelope-v1",
680        "7df9afd22bfdebfa89dc3bdb46ecdbe22a91ecce35fa46c492dd9795c66fae29",
681        CONTRACT_BODY_RELEASE_SIGNATURE_ENVELOPE_SCHEMA,
682    ),
683    Contract::new(
684        ContractId::RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA,
685        "release-signing-ledger-evidence-v1",
686        "9ab8b7f65dedcd119d578debb4f6ff97fc35f4c7ac95c0e5435f8b0959bc1a5c",
687        CONTRACT_BODY_RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA,
688    ),
689    Contract::new(
690        ContractId::RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA,
691        "release-signing-ledger-receipt-v1",
692        "29210cfefd967017c5c74bcf8489bd50511c5c9f36d17b0200056ccb90c30561",
693        CONTRACT_BODY_RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA,
694    ),
695    Contract::new(
696        ContractId::RELEASE_SIGNING_LEDGER_SCHEMA,
697        "release-signing-ledger-v1",
698        "0c72b30bfd6b857b9809e48e1b7eaaeb7134d5afd6a935aa8373465054403765",
699        CONTRACT_BODY_RELEASE_SIGNING_LEDGER_SCHEMA,
700    ),
701    Contract::new(
702        ContractId::RELEASE_SIGNING_SUBJECT_SCHEMA,
703        "release-signing-subject-v1",
704        "876b1459824f90042bd141e96bfea4633333bdf2a227e15b6e25c72db1179c8e",
705        CONTRACT_BODY_RELEASE_SIGNING_SUBJECT_SCHEMA,
706    ),
707    Contract::new(
708        ContractId::RELEASE_SOURCE_POLICY_POINTER_SCHEMA,
709        "release-source-policy-pointer-v1",
710        "1a78cc3897ffbcdb605d2e9265d765207a4647d3f53fa5736aec65bf5f54e81c",
711        CONTRACT_BODY_RELEASE_SOURCE_POLICY_POINTER_SCHEMA,
712    ),
713    Contract::new(
714        ContractId::RELEASE_SOURCE_POLICY_SCHEMA,
715        "release-source-policy-v2",
716        "6a5a5eab317a86beea925a611ca8a7a2d937547c039ce147b5993f69a5611237",
717        CONTRACT_BODY_RELEASE_SOURCE_POLICY_SCHEMA,
718    ),
719    Contract::new(
720        ContractId::RELEASE_TRUST_STATE_SCHEMA,
721        "release-trust-state-v1",
722        "19ffa182932a22401a33ee4c9921e957c67895c2d8b041c9a27ee3530bdfb2d2",
723        CONTRACT_BODY_RELEASE_TRUST_STATE_SCHEMA,
724    ),
725    Contract::new(
726        ContractId::RESOURCE_SCOPE_SCHEMA,
727        "resource-scope-v1",
728        "e6021bd576c7220ad5536645a7ad8e57ee7aeb9901c31a89444fa6b695d8dc6f",
729        CONTRACT_BODY_RESOURCE_SCOPE_SCHEMA,
730    ),
731    Contract::new(
732        ContractId::RUNTIME_ADMISSION_SCHEMA,
733        "runtime-admission-v1",
734        "bee7b149876447d663a4099dbd71e71fa97f8ff80ddf4e12cbfba951a47c4beb",
735        CONTRACT_BODY_RUNTIME_ADMISSION_SCHEMA,
736    ),
737    Contract::new(
738        ContractId::RUNTIME_DESCRIPTOR_SCHEMA,
739        "runtime-descriptor-v2",
740        "2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351",
741        CONTRACT_BODY_RUNTIME_DESCRIPTOR_SCHEMA,
742    ),
743    Contract::new(
744        ContractId::RUNTIME_EXEC_JOURNAL_SCHEMA,
745        "runtime-exec-journal-v1",
746        "2bddbba383843b8ebc1554009909f0bb25e98616be763826a697cb0f408870d2",
747        CONTRACT_BODY_RUNTIME_EXEC_JOURNAL_SCHEMA,
748    ),
749    Contract::new(
750        ContractId::RUST_IPC_SCHEMA,
751        "rust-ipc-v6",
752        "9814ca091ac2e4e8435c1ab553e248e9d2e792de93ce9fd27bd030486774837f",
753        CONTRACT_BODY_RUST_IPC_SCHEMA,
754    ),
755    Contract::new(
756        ContractId::SESSION_SCOPE_SCHEMA,
757        "session-scope-v1",
758        "3df0084264f0aff9fe2261c237cea439adb5cdc2534bfaaa0488d5992d4a7d2e",
759        CONTRACT_BODY_SESSION_SCOPE_SCHEMA,
760    ),
761    Contract::new(
762        ContractId::TARGET_CLASSIFIER_FIXTURE,
763        "target-classifier-v2",
764        "ae7336cce77a2e820f96f1cc309b93f8442c932dcebec25e3890d31cd098e2d1",
765        CONTRACT_BODY_TARGET_CLASSIFIER_FIXTURE,
766    ),
767    Contract::new(
768        ContractId::TOKEN_TICKET_SCHEMA,
769        "token-ticket-v4",
770        "5cf365b5b52a331ac0d3ad35a98be3c2ce668804ae88fdeaf9679a44db14feb1",
771        CONTRACT_BODY_TOKEN_TICKET_SCHEMA,
772    ),
773    Contract::new(
774        ContractId::TRUSTED_TIME_EVIDENCE_SCHEMA,
775        "trusted-time-evidence-v1",
776        "4398cbd2a3eea42a85008ee16a69d7adb265673e6749b1f13a4f1610f36e5e38",
777        CONTRACT_BODY_TRUSTED_TIME_EVIDENCE_SCHEMA,
778    ),
779    Contract::new(
780        ContractId::TRUSTED_TIME_LEAF_SCHEMA,
781        "trusted-time-leaf-v1",
782        "1c25eb0040800eef145aa2bb4c0e1ae197ae584d365e9595ab89037e26fe5ddb",
783        CONTRACT_BODY_TRUSTED_TIME_LEAF_SCHEMA,
784    ),
785    Contract::new(
786        ContractId::WASM_WORKER_SCHEMA,
787        "redevplugin-wasm-worker-v2",
788        "00bf123f3a9ed932de4b71c180e2a5c34af0f82050defb271fedec42cf217902",
789        CONTRACT_BODY_WASM_WORKER_SCHEMA,
790    ),
791    Contract::new(
792        ContractId::WORKER_INVOCATION_SCHEMA,
793        "worker-invocation-v3",
794        "f08af491cbf5e7b71d1aeafbeac9ae581ee5fc3bcb76184daec369f94bab3927",
795        CONTRACT_BODY_WORKER_INVOCATION_SCHEMA,
796    ),
797];
798
799pub(crate) const REGISTRY_CONTRACT_INDEX: usize = 1;
800
801pub(crate) fn get(id: ContractId) -> &'static Contract {
802    match id {
803        ContractId::COMPATIBILITY_MANIFEST_SCHEMA => &ALL[0],
804        ContractId::CONTRACT_REGISTRY => &ALL[1],
805        ContractId::CONTRACT_REGISTRY_SCHEMA => &ALL[2],
806        ContractId::ERROR_CODES_SCHEMA => &ALL[3],
807        ContractId::HOST_CAPABILITY_COMPATIBILITY_SCHEMA => &ALL[4],
808        ContractId::HOST_CAPABILITY_CONTRACT_SCHEMA => &ALL[5],
809        ContractId::HOST_CAPABILITY_MANIFEST_SCHEMA => &ALL[6],
810        ContractId::HOST_CAPABILITY_NOTICES_SCHEMA => &ALL[7],
811        ContractId::HOST_CAPABILITY_PIN_SCHEMA => &ALL[8],
812        ContractId::HOST_CAPABILITY_SIGNATURE_SCHEMA => &ALL[9],
813        ContractId::IFRAME_BRIDGE_SCHEMA => &ALL[10],
814        ContractId::MANIFEST_SCHEMA => &ALL[11],
815        ContractId::NETWORK_GRANT_SCHEMA => &ALL[12],
816        ContractId::OPAQUE_SURFACE_DOCUMENT_SCHEMA => &ALL[13],
817        ContractId::OPAQUE_SURFACE_TRANSPORT_SCHEMA => &ALL[14],
818        ContractId::OWNER_SCOPE_INVENTORY_REGISTRY => &ALL[15],
819        ContractId::OWNER_SCOPE_INVENTORY_SCHEMA => &ALL[16],
820        ContractId::OWNER_SCOPE_MIGRATION_SCHEMA => &ALL[17],
821        ContractId::PACKAGE_SIGNATURE_SCHEMA => &ALL[18],
822        ContractId::PERFORMANCE_CONTRACT => &ALL[19],
823        ContractId::PERFORMANCE_EVIDENCE_SCHEMA => &ALL[20],
824        ContractId::PLATFORM_PACKAGE_PUBLICATION_SCHEMA => &ALL[21],
825        ContractId::PLATFORM_PACKAGE_SET_SCHEMA => &ALL[22],
826        ContractId::PLUGIN_PLATFORM_OPENAPI => &ALL[23],
827        ContractId::PROCESS_CONTAINMENT_SCHEMA => &ALL[24],
828        ContractId::QUARANTINE_CLEANUP_SCHEMA => &ALL[25],
829        ContractId::RELEASE_METADATA_SCHEMA => &ALL[26],
830        ContractId::RELEASE_REVOCATION_POINTER_SCHEMA => &ALL[27],
831        ContractId::RELEASE_REVOCATION_SCHEMA => &ALL[28],
832        ContractId::RELEASE_ROOT_DELEGATION_SCHEMA => &ALL[29],
833        ContractId::RELEASE_SIGNATURE_ENVELOPE_SCHEMA => &ALL[30],
834        ContractId::RELEASE_SIGNING_LEDGER_EVIDENCE_SCHEMA => &ALL[31],
835        ContractId::RELEASE_SIGNING_LEDGER_RECEIPT_SCHEMA => &ALL[32],
836        ContractId::RELEASE_SIGNING_LEDGER_SCHEMA => &ALL[33],
837        ContractId::RELEASE_SIGNING_SUBJECT_SCHEMA => &ALL[34],
838        ContractId::RELEASE_SOURCE_POLICY_POINTER_SCHEMA => &ALL[35],
839        ContractId::RELEASE_SOURCE_POLICY_SCHEMA => &ALL[36],
840        ContractId::RELEASE_TRUST_STATE_SCHEMA => &ALL[37],
841        ContractId::RESOURCE_SCOPE_SCHEMA => &ALL[38],
842        ContractId::RUNTIME_ADMISSION_SCHEMA => &ALL[39],
843        ContractId::RUNTIME_DESCRIPTOR_SCHEMA => &ALL[40],
844        ContractId::RUNTIME_EXEC_JOURNAL_SCHEMA => &ALL[41],
845        ContractId::RUST_IPC_SCHEMA => &ALL[42],
846        ContractId::SESSION_SCOPE_SCHEMA => &ALL[43],
847        ContractId::TARGET_CLASSIFIER_FIXTURE => &ALL[44],
848        ContractId::TOKEN_TICKET_SCHEMA => &ALL[45],
849        ContractId::TRUSTED_TIME_EVIDENCE_SCHEMA => &ALL[46],
850        ContractId::TRUSTED_TIME_LEAF_SCHEMA => &ALL[47],
851        ContractId::WASM_WORKER_SCHEMA => &ALL[48],
852        ContractId::WORKER_INVOCATION_SCHEMA => &ALL[49],
853        _ => unreachable!("ContractId can only contain generated values"),
854    }
855}
856
857static NPM_PACKAGES: [NpmPackageCoordinate; 2] = [
858    NpmPackageCoordinate {
859        name: "@floegence/redevplugin-contracts",
860        version: "0.6.5",
861    },
862    NpmPackageCoordinate {
863        name: "@floegence/redevplugin-ui",
864        version: "0.6.5",
865    },
866];
867
868static RUST_CRATES: [RustCrateCoordinate; 6] = [
869    RustCrateCoordinate {
870        name: "redevplugin-contracts",
871        version: "0.6.5",
872        role: "contracts",
873    },
874    RustCrateCoordinate {
875        name: "redevplugin-ipc",
876        version: "0.6.5",
877        role: "ipc",
878    },
879    RustCrateCoordinate {
880        name: "redevplugin-wasm-abi",
881        version: "0.6.5",
882        role: "wasm_abi",
883    },
884    RustCrateCoordinate {
885        name: "redevplugin-target-classifier",
886        version: "0.6.5",
887        role: "target_classifier",
888    },
889    RustCrateCoordinate {
890        name: "redevplugin-worker-sdk",
891        version: "0.6.5",
892        role: "worker_sdk",
893    },
894    RustCrateCoordinate {
895        name: "redevplugin-runtime",
896        version: "0.6.5",
897        role: "runtime",
898    },
899];
900
901pub(crate) static PACKAGE_SET: PackageSet = PackageSet {
902    schema_version: "redevplugin.platform_package_set.v1",
903    platform_version: "0.6.5",
904    go_module: GoModuleCoordinate {
905        module: "github.com/floegence/redevplugin",
906        version: "v0.6.5",
907    },
908    npm_packages: &NPM_PACKAGES,
909    rust_crates: &RUST_CRATES,
910    contract_registry_version: "contract-registry-v2",
911    contract_set_sha256: "42768632672d3beef6410f0b87f53c8b124f1e56746bcc78beba52b6fd7da737",
912};