publication_outbox.v1.json (2928B)
1 { 2 "schema": "radroots.rhi.publication-outbox", 3 "schema_version": 1, 4 "contract_version": 1, 5 "state_schema_version": 7, 6 "publication_modes": ["required", "disabled"], 7 "authority": { 8 "source": "complete_validated_rhi_config_v1", 9 "required": { 10 "target_count": { "minimum": 1, "maximum": 32 }, 11 "target_order": "exact_configured_order", 12 "relay_authority": ["stable_id", "write_true", "required_boolean"], 13 "retry": ["maximum_attempts", "initial_backoff_ms", "maximum_backoff_ms", "attempt_deadline_ms"] 14 }, 15 "disabled": { 16 "targets": "absent", 17 "retry": "absent", 18 "network_work": false 19 }, 20 "target_set_digest": { 21 "algorithm": "sha256", 22 "domain": "radroots.rhi.publication_target_set.v1\\0", 23 "framing": ["target_count_u32_be", "ordinal_u32_be", "relay_id_length_u64_be", "relay_id_utf8", "required_u8"] 24 }, 25 "complete_digest": { 26 "algorithm": "sha256", 27 "domain": "radroots.rhi.publication_authority.v1\\0", 28 "framing": ["mode_u8", "target_count_u32_be", "target_set_sha256", "retry_presence_u8", "retry_fields_be_when_present", "queue_capacity_u32_be"] 29 } 30 }, 31 "schema_objects": { 32 "immutable": [ 33 "evidence_manifests", 34 "trade_projections", 35 "attestation_reports", 36 "signed_attestation_events", 37 "publication_attempts" 38 ], 39 "compare_and_swap": ["publication_outbox", "publication_targets"], 40 "outbox_states": ["pending", "leased", "complete", "blocked"], 41 "target_states": ["pending", "submitted", "accepted", "rejected", "rate_limited", "auth_required", "failed", "unknown"], 42 "attempt_outcomes": ["submitted", "accepted", "rejected", "rate_limited", "auth_required", "failed", "unknown"], 43 "retention": "no_delete", 44 "accepted_target_is_terminal": true 45 }, 46 "payload": { 47 "signed_bytes_maximum": 32768, 48 "stored_bytes": "exact_independently_verified_signed_event_json", 49 "stored_digest": "sha256_of_exact_signed_bytes", 50 "retry_source": "stored_bytes_only", 51 "target_set": "immutable_after_initial_commit" 52 }, 53 "effects": { 54 "config_read": true, 55 "sqlite_catalog_definition": true, 56 "sqlite_query_or_mutation": false, 57 "relay_or_network": false, 58 "task_spawn": false, 59 "ambient_clock": false, 60 "ambient_entropy": false 61 }, 62 "forbidden": [ 63 "implicit_publication_mode", 64 "disabled_mode_target_or_retry_state", 65 "caller_forged_target", 66 "non_write_relay_target", 67 "mutable_signed_payload", 68 "mutable_target_identity", 69 "raw_upstream_error_text", 70 "raw_sqlite_handle", 71 "relay_io", 72 "event_rebuild", 73 "event_reserialize", 74 "event_resign", 75 "unbounded_queue_or_target_inventory" 76 ], 77 "deferred": [ 78 "atomic_finalization_commit", 79 "publication_claim", 80 "relay_submission", 81 "target_outcome_transition", 82 "retry_and_recovery", 83 "runtime_worker", 84 "admin_routes" 85 ] 86 }