(* Event Log - Persistent event storage * * Provides append-only event log with replay capability. *) (* Event number (0-indexed) *) type event_num = int64 (* Event metadata *) type event_meta = { num: event_num; mug: int32; (* murmur3 hash *) size: int; (* size of jammed data *) } (* Event log handle *) type t (* Create event log at pier path * Creates .urb/log directory structure if needed * enabled=false disables actual file writes (useful for testing) *) val create : ?enabled:bool -> string -> t (* Append event to log, returns event number *) val append : ?verbose:bool -> t -> Noun.noun -> event_num (* Read single event from log *) val read_event : ?verbose:bool -> t -> event_num -> Noun.noun (* Replay all events sequentially, calling callback for each *) val replay : ?verbose:bool -> t -> (event_num -> Noun.noun -> unit) -> unit (* Get count of events in log *) val event_count : t -> int (* Get last event number (or -1 if empty) *) val last_event_num : t -> event_num (* Disable/enable logging *) val disable : t -> unit val enable : t -> unit