Release v3.0.0
Summary
Chronicle's kernel replaced its hand-written gRPC services with Arc-generated ones (wire-protocol migration to Chronicle 17.x/18.x). This updates the Elixir client to cratis_chronicle_contracts 18.0.0 and migrates every affected call site to the new shapes.
Changed
- Breaking: updated to
cratis_chronicle_contracts18.0.0 — most RPC methods were renamed, and command/query responses are now wrapped in an envelope (CorrelationId,IsAuthorized,ValidationResults,ExceptionMessages, plus the actual payload). This client had no envelope-awareness at all before; a newChronicle.WireResult.unwrap/1helper centralizes the check, and an unauthorized or excepted command now returns{:error, ...}instead of silently succeeding. - Breaking:
append_many_for_event_sources/2now calls a genuinely separateAppendManyForEventSourcesRPC instead of reusing the single-event-sourceAppendManyrequest. - Breaking:
Chronicle.Jobs.get/2— the kernel removed its single-job query entirely; it now fetches the full job list and finds by id client-side. - Breaking:
Chronicle.ReadModels.get_snapshots_by_id/3now queries the dedicatedReadModelExplorerservice instead ofReadModels. - Webhook registration no longer sends an
Ownerfield (removed from the wire contract);Chronicle.WebHooks.all/1reconstructs webhook definitions from the kernel's flattened read shape.
Fixed
Chronicle.Registration.Coordinator's namespace-ensure call was sending the namespace under the wrong field name (Nameinstead ofNamespace), so it silently registered an empty namespace against the kernel.