Modules
Public entrypoint for notification triggering.
Behaviour contract for outbound delivery adapters.
Structured-log adapter that emits a tagged Logger.info line and always succeeds.
In-memory test adapter using process dictionary storage.
Context module for delivery planning, attempt recording, and status transitions.
Ecto schema for chimeway_deliveries — per-channel delivery record for a notification.
Ecto schema for chimeway_delivery_attempts — immutable append-only record of each provider call for a delivery. No updated_at — attempts are never mutated.
Shared fanout planner used by all dispatch strategies.
Public digest-rule persistence API for durable rule lookup and storage.
Transactional digest accumulation for held canonical delivery rows.
Durable digest bucket storage keyed by rule, recipient, channel, grouping value, and window.
Auditable membership row linking one canonical delivery into one digest bucket.
Durable digest rule storage for stable identity, grouping mode, and window semantics.
Transactional digest emission for due buckets with durable membership resolution.
Behaviour contract for the dispatcher seam.
Resolves per-channel adapter config without creating atoms from runtime channel data.
Oban worker that resumes a deferred delivery row and enqueues the canonical delivery performer in the same transaction.
Thin Oban worker that delegates due digest bucket execution to the emission service.
Shared adapter execution for sync and Oban worker dispatch paths.
Oban-backed dispatcher — satisfies Chimeway.Dispatch behaviour.
Oban worker that performs a single Chimeway delivery by delivery_id.
Oban worker that routes an incoming signal to all waiting workflow runs that are
suspended on the signal's event_name within the same tenant.
Synchronous dispatcher — runs the full delivery pipeline in the calling process.
Raised by Chimeway.Dispatch.ObanWorker when map_outcome_to_oban_return/4
encounters a (outcome, error_class, status) shape that none of the documented
clauses match AND the in-band convergence guard cannot legally fire (delivery
is not in :failed status, or this is not the final attempt). This is the
loud-failure branch of the BL-02 fix — see Plan 14-10.
Oban worker that wakes a due waiting workflow run by stable id.
Durable canonical event persisted before outbound side effects.
Inbox query and explicit lifecycle transition APIs.
Durable per-recipient in-app notification record.
Behaviour contract for notification definitions.
Pure time-window calculations for recipient-local orchestration decisions.
Dual-checkpoint policy engine for delivery suppression decisions.
Per-recipient policy settings for quiet hours and delivery caps.
Per-recipient policy settings for quiet hours and delivery caps.
Public context for notification preference management.
Per-recipient notification preference for a delivery category.
Per-channel notification preference for a recipient and notification key.
Normalizes notifier rendering declarations into one durable contract.
Behaviour contract for channel-specific render validation.
Validates the durable chat render contract.
Validates the durable email render contract.
Validates the durable in-app render contract.
Validates the durable push render contract.
Validates the durable SMS render contract.
Pure preview surface over the production rendering pipeline.
Host-facing API boundary for submitting workflow progression signals.
Durable host-submitted progression signal.
Instrumentation façade for Chimeway telemetry spans.
Public query context for operator trace surfaces.
Structured explanation of a single delivery — the primary operator debugging artifact.
Orchestrates notifier triggering with deterministic recipient normalization.
Pure function boundary for synchronously ingesting and verifying inbound webhooks.
Durable inbound webhook fact: a verified provider callback has been received,
normalized, and queued for async processing. One ingress row per accepted
callback; duplicate provider retries with the same (adapter_module, provider_event_id) collapse to the existing row via the partial unique index.
Oban worker that processes inbound webhook feedback from a durable ingress row.
Persistence helpers for durable workflow definitions and ordered step rows.
Durable workflow progression engine for Phase 25.
Pure mapper from canonical delivery facts to a curated workflow-facing outcome vocabulary used by Phase 25 progression rules.
Durable workflow definition storage keyed by stable workflow identity.
Durable workflow run aggregate row anchored to one notification.
Ordered durable workflow step row linked to one workflow definition.
Append-only workflow transition row capturing state changes and reasons.
Mix Tasks
Previews notification rendering through the production library pipeline.
Verifies that a specific chimeway version is published and accessible on hex.pm.