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 }