rhi

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

publication_execution.v1.json (4082B)


      1 {
      2   "schema": "radroots.rhi.publication-execution",
      3   "schema_version": 1,
      4   "contract_version": 1,
      5   "storage_authority": "single_service_sqlite_host_sqlx_transactions",
      6   "claim": {
      7     "order": ["next_attempt_unix_ms", "created_at_unix_ms", "outbox_id"],
      8     "authority": "exact_current_required_authority_and_target_set",
      9     "owner_bytes": 16,
     10     "owner_all_zero": false,
     11     "lease_duration": "exact_attempt_deadline_ms",
     12     "compare_and_swap": ["outbox_id", "revision", "state", "schedule", "updated_at"]
     13   },
     14   "attempt": {
     15     "prepare_sequence": [
     16       "revalidate_exact_unexpired_lease",
     17       "validate_complete_immutable_target_inventory",
     18       "select_first_due_target_by_ordinal",
     19       "increment_attempt_and_persist_submitted",
     20       "read_and_verify_exact_committed_event_bytes",
     21       "return_sealed_exact_byte_capability"
     22     ],
     23     "remote_io_outside_transaction": true,
     24     "outcome_sequence": [
     25       "reconcile_exact_prior_success",
     26       "revalidate_lease_and_submitted_target",
     27       "append_immutable_attempt_evidence",
     28       "compare_and_swap_target_outcome_and_schedule",
     29       "derive_outbox_disposition_from_all_targets",
     30       "release_lease_in_same_commit"
     31     ],
     32     "attempt_identity": "step_201_domain_derived",
     33     "result_code": "exact_closed_outcome_code",
     34     "accepted_is_terminal": true
     35   },
     36   "exact_byte_sink": {
     37     "input": "borrowed_original_committed_signed_event_bytes",
     38     "parse": false,
     39     "rebuild": false,
     40     "reserialize": false,
     41     "resign": false,
     42     "raw_result_or_error": false,
     43     "closed_observation_only": true
     44   },
     45   "retry": {
     46     "retryable_outcomes": ["rate_limited", "failed", "unknown"],
     47     "terminal_outcomes": ["accepted", "rejected", "auth_required"],
     48     "algorithm": "full_jitter_exponential_cap",
     49     "upper_bound": "min(maximum_backoff_ms, initial_backoff_ms_times_two_to_attempt_minus_one)",
     50     "delay_source": "injected_entropy",
     51     "schedule_persisted_with_outcome": true,
     52     "maximum_attempts": 100
     53   },
     54   "cancellation_and_recovery": {
     55     "before_claim": "no_authoritative_effect",
     56     "after_claim_before_submitted": "expired_lease_releases_to_existing_schedule",
     57     "after_durable_submitted": "unknown_until_independent_evidence",
     58     "lost_acknowledgement": "unknown_until_independent_evidence",
     59     "expired_submitted": "append_unknown_then_schedule_exact_byte_retry_or_block",
     60     "restart": "recover_at_most_one_bounded_expired_lease_per_call",
     61     "commit_outcome_unknown": "reread_and_idempotently_reconcile_exact_attempt_identity"
     62   },
     63   "outbox_disposition": {
     64     "complete": "all_required_targets_accepted",
     65     "blocked": "any_required_target_terminal_nonaccepted_or_attempts_exhausted",
     66     "pending": "minimum_persisted_required_target_retry_time",
     67     "optional_targets_do_not_block_required_completion": true
     68   },
     69   "bounds": {
     70     "target_count_maximum": 32,
     71     "attempt_count_maximum": 100,
     72     "relay_id_bytes_maximum": 64,
     73     "signed_event_bytes_maximum": 32768,
     74     "unix_milliseconds_maximum": 9223372036854775807,
     75     "initial_backoff_ms_maximum": 60000,
     76     "maximum_backoff_ms_maximum": 3600000,
     77     "attempt_deadline_ms": { "minimum": 100, "maximum": 30000 }
     78   },
     79   "effects": {
     80     "sqlite": "short_bounded_sqlx_transactions",
     81     "remote_io": "only_after_durable_submitted",
     82     "sqlite_transaction_during_remote_io": false,
     83     "ambient_clock": false,
     84     "ambient_entropy": false,
     85     "detached_task": false
     86   },
     87   "deferred_to_step_203": [
     88     "publication_wave_failpoint_matrix",
     89     "concurrent_worker_qualification",
     90     "historical_nullable_reconciliation_job_guard",
     91     "wave_resource_qualification"
     92   ],
     93   "forbidden": [
     94     "generic_typed_event_sink_for_committed_retry",
     95     "event_parse_or_reconstruction",
     96     "event_reserialization",
     97     "event_resigning",
     98     "relay_io_before_submitted_commit",
     99     "write_transaction_during_relay_io",
    100     "raw_relay_error_persistence",
    101     "unbounded_inventory_read",
    102     "caller_supplied_attempt_identity",
    103     "blind_retry_after_unknown_commit",
    104     "second_sqlite_pool_or_connection_authority"
    105   ]
    106 }