Immutable runtime limits used by deterministic Raft apply code.
The context is captured before a command reaches apply and stored with the replicated state-machine state. It contains only versioned, serializable values so snapshots and replay never depend on node-local application or process configuration.
Summary
Types
@type encoded() :: tuple()
@type t() :: %Ferricstore.Raft.ApplyContext{ batch_command_apply_budget: pos_integer(), compound_member_apply_budget: pos_integer(), flow_default_history_hot_max_events: non_neg_integer(), flow_default_history_max_events: pos_integer(), flow_default_retention_ttl_ms: pos_integer(), flow_hibernation_enabled: boolean(), flow_hibernation_hot_window_ms: non_neg_integer(), flow_hibernation_late_promote_window_ms: non_neg_integer(), flow_hibernation_promote_window_ms: non_neg_integer(), flow_hibernation_safety_margin_ms: non_neg_integer(), flow_lmdb_history_cleanup_scan_limit: pos_integer(), flow_lmdb_value_cleanup_scan_limit: pos_integer(), flow_max_batch_items: pos_integer(), flow_max_history_hot_max_events: pos_integer(), flow_max_history_max_events: pos_integer(), flow_metadata_fields: %{optional(non_neg_integer()) => map()}, flow_metadata_generation: non_neg_integer(), flow_metadata_mode: :dedicated | :shared, flow_metadata_schema_digest: <<_::256>>, flow_retention_cleanup_byte_budget: pos_integer(), flow_retention_cleanup_key_budget: pos_integer(), max_value_size: pos_integer(), promotion_threshold: non_neg_integer(), transaction_command_budget: pos_integer(), transaction_key_apply_budget: pos_integer(), transaction_result_byte_budget: pos_integer(), version: pos_integer() }