rhi

Coordinated trade for connected markets
git clone https://radroots.dev/git/rhi.git
Log | Files | Refs | README | LICENSE

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 }