Changelog
Unreleased
1.5.3 - 2026-07-26
Fixed
- Add the actual Publish chart step to helm.yml github actions workflow
1.5.2 - 2026-07-26
Changed
- Document the roadmap for publishing Mammoth-owned, versioned JSON Schema artifacts for canonical webhook event and transaction payloads.
Fixed
- Correct the Mammoth Helm chart's default image tag to
1.5.2, matching the published container image tag convention.
1.5.1 - 2026-07-25
Changed
- Adopt Mammoth as the ecosystem brand, identify this open-source project as Mammoth Data Plane, and align documentation, published gem metadata, configuration descriptions, and branding assets with the new hierarchy.
1.5.0 - 2026-07-24
Changed
- Default the unauthenticated observability HTTP server to the loopback interface and document the network controls required for non-loopback bindings.
- Implement
logging.levelwith container-friendly JSON stdout logs for application and replication lifecycle, delivery outcomes, retries, dead letters, checkpoints, and debug-level work progress. - Require a patched
jsongem and remove the vulnerable bundled default-gem specification from the runtime image to address CVE-2026-33210.
Quality
- Run the container quickstart smoke test on pull requests and whenever Docker, application, configuration, or dependency inputs change.
- Added Dependabot updates, Ruby dependency auditing, dependency review, CodeQL analysis, and high- and critical-severity container vulnerability scanning.
- Pin the Ruby container base image to an immutable digest and publish release images with SBOM and maximum provenance attestations.
- Published a full reference benchmark snapshot with machine-readable results, raw output, and documented interpretation across projection, delivery, fanout, SQLite operational state, observability, and dead-letter replay.
1.4.0 - 2026-07-19
Added
- Declared PostgreSQL 14 through PostgreSQL 18, inclusive, as Mammoth's supported server range.
- Replaced the PostgreSQL 17-only CI gate with real logical-replication E2E coverage across PostgreSQL 14, 15, 16, 17, and 18.
- Documented the maintained-version support policy, version-dependent
pg_replication_slotsfields, and PostgreSQL 18-onlyidle_replication_slot_timeout.
Fixed
- Query
pg_replication_slots.invalidation_reasonin the E2E helper only on PostgreSQL 17 and newer; PostgreSQL 16 does not expose that field.
1.3.0 - 2026-07-19
Added
- Added opt-in, destination-scoped payload policies that remove or mask selected columns across event data, identity, and changes before webhook delivery.
- Added deterministic policy fingerprints and exact prepared-payload handling across signing, retries, dead-letter persistence, and replay.
- Added a payload-policy projection benchmark and updated the dead-letter replay benchmark to measure exact prepared-payload replay without CDC reconstruction or policy reapplication.
- Updated
webhooks-quickstartto maskorders.customer_emailby default and highlight the applied policy and fingerprint in the Event Console and smoke test.
1.2.0 - 2026-07-19
Added
- Added an opt-in monitoring profile to
webhooks-quickstartwith provisioned Prometheus and Grafana services, meaningful seeded traffic, a Mammoth operations dashboard, curated Prometheus queries, recording rules, and example Prometheus and Grafana alerting rules.
1.1.0 - 2026-07-19
Added
- Added a serializer benchmark comparing explicit and deterministic fallback event IDs for event and transaction payload projection.
- Added
webhooks-quickstart, a one-command PostgreSQL-to-Mammoth demo with an order application; inspectable signed webhook deliveries and retries;INSERT,UPDATE, andDELETEevents; multi-event payment and reversal transactions; adaptation guidance; WAL-retention safeguards; and end-to-end verification.
Fixed
- Generate deterministic fallback event and transaction-envelope IDs so retries and post-crash redelivery preserve destination idempotency when upstream metadata does not provide an event ID.
- Serialize
CDC::Core::ChangeEventcolumn differences when complete old and new rows are available, while avoiding false differences from key-only old rows. - Require pgoutput-source-adapter 0.3.1 and use its stable transaction-local event sequence to prevent deterministic ID collisions between otherwise identical changes while preserving replay stability.
1.0.0 - 2026-07-17
Added
- Added PostgreSQL slot readiness diagnostics and Prometheus gauges for inspection availability, presence, activity, retained WAL bytes, safe WAL size, WAL status, invalidation, inactivity time, and restart/flush LSNs.
/readyznow fails closed when the configured slot is missing, inactive, invalidated, conflicting, WAL-lost, or cannot be inspected.- Added startup validation for every configured publication table that publishes
UPDATEorDELETE, accepting a usable primary key, selected replica-identity index, orREPLICA IDENTITY FULLand reporting all invalid tables together. - Added catalog-derived, ordered replica-identity mappings for relation OIDs and schema-qualified tables.
- Added a self-verifying live PostgreSQL example for composite, non-
idreplica identities acrossINSERT,UPDATE, andDELETE. - Added a live PostgreSQL example that shows fail-closed restart after slot invalidation and the explicit operator reconciliation required to resume.
- Added a PostgreSQL observability example correlating Mammoth readiness and Prometheus slot gauges with native replication and publication catalogs.
- Added a live additive schema-evolution example demonstrating consumer-first compatibility, relation-metadata refresh, and the non-delivery of DDL.
- Added a destination idempotency example proving atomic receiver-side duplicate suppression across isolated Mammoth delivery ledgers.
Fixed
- Added PostgreSQL slot preflight before streaming and fail-closed handling for missing, active, lost, invalidated, incompatible, and checkpoint-unreachable slots.
- Disabled automatic slot recreation whenever a configured or persisted resume LSN requires WAL continuity.
- Rejected temporary-slot recovery from durable checkpoints.
- Preserved pgoutput-client's acknowledgement-compatible transport LSN
separately from normalized CDC-core
commit_lsnpayload context. - Checkpoints and PostgreSQL feedback now use the source-owned transport
watermark, preventing decimal transaction commit values from reaching
runner.ack. - Event-mode delivery resolves an envelope's transport position for each exact child event without mutating or rebuilding CDC-core work.
- Wired publication identity mappings into
Pgoutput::SourceAdapter::ReplicaIdentityResolverso composite and non-idkeys are normalized without partial identity data.
Quality
- Upgraded pgoutput-client to 0.4.0 and covered slot identity, health, retained-WAL reporting, continuity boundaries, and safe first-time creation.
- Upgraded pgoutput-source-adapter to 0.3.0 and covered catalog-to-resolver composition for composite replica identities.
- Upgraded pgoutput-decoder to 0.2.0 so key-only old tuples preserve their exact decoded columns instead of synthesizing absent non-key values.
- Added end-to-end source/coordinator coverage proving that a transaction with
decimal
commit_lsncheckpoints and acknowledges its formatted transport LSN. - Added opt-in PostgreSQL 17 integration coverage for transactional
INSERT,UPDATE, andDELETEwith composite identity, replication reconnects, concurrent out-of-order completion, contiguous slot acknowledgement, and fail-closed slot invalidation; CI and release gates run the suite against a logical-replication service. - Strengthened boundary coverage for source-owned position resolution and publication-catalog inspection, and synchronized PostgreSQL, runtime, operational-state, configuration, and transaction-example documentation.
- Documented PostgreSQL WAL guardrails, slot/catalog monitoring, DDL and sequence limitations, destination conflict ownership, upgrade recovery, troubleshooting, example caveats, and Kubernetes deployment policy.
0.9.0
Changed
- Refactored observability, status, bootstrap, and dead-letter command
composition to consume
OperationalState::Adapterinstead of opening SQLite or constructing concrete stores. - Added adapter-owned
bootstrap!,ready?, and configured registry composition for backend-neutral operational tooling. - Inject the configured operational-state delivered-envelope store into every delivery worker instead of deriving a SQLite ledger from the checkpoint store.
- Made
Mammoth::DeliveryProcessorimplementCDC::Core::Processorand returnCDC::Core::ProcessorResultfor successful, skipped, and failed deliveries. - Wired
CDC::Core::Observernotifications through inline and concurrent runtimes and translated canonical dispatch metrics into Mammoth Prometheus counters. - Replaced duck-typed CDC lookalikes with exact
CDC::Core::ChangeEventandCDC::Core::TransactionEnvelopeobjects. - Enforced the PostgreSQL source output contract by rejecting non-core work yielded by injected source adapters.
- Added an explicit persisted-payload deserialization boundary for sample JSON and dead-letter replay.
- Moved configured batch accumulation and final partial-batch submission out of
Mammoth::Applicationand into the delivery runtime layer.
Quality
- Added processor contract, observer, runtime notification, dispatch counter, and Prometheus exposition coverage.
- Added exact core-type and persisted-payload round-trip coverage.
- Strengthened architecture boundary coverage with executable pgoutput adapter output checks, downstream dependency guards, and an exact core-output RBS contract for the PostgreSQL source.
- Added runtime batching ownership coverage so application orchestration cannot reintroduce buffering or batch partitioning.
- Updated RBS signatures, YARD API documentation, examples, and benchmark descriptions for the corrected processor/observer boundary.
0.8.0
Changed
- Delegated incremental PostgreSQL transaction buffering and
CDC::Core::TransactionEnvelopeconstruction topgoutput-source-adapter. Mammoth::Sources::Postgresnow streams decoded events and transport WAL positions through the adapter'seach_normalizedAPI instead of maintaining private transaction state or envelope lookalikes.
Quality
- Added boundary and source integration coverage for streaming adapter delegation, exact core envelope preservation, and WAL position forwarding.
- Updated API signatures, examples, benchmark descriptions, and architecture documentation for the corrected source-adapter boundary.
0.7.2
Changed
- Elevated webrick to be a runtime dependency as the default observability http server
0.7.1
Added
- Added local lifecycle hooks for start, shutdown, and dead-letter replay extension points.
- Added file and hash configuration providers for CLI, tests, and future control-plane integration.
- Added reusable command objects for validate, bootstrap, start, sample delivery, and dead-letter commands.
Changed
- Bumped Mammoth version to
0.7.1.
0.7.0
Added
- Added explicit adapter registries for operational state, destinations, and delivery runtimes.
- Added the built-in SQLite operational state adapter.
- Added the built-in webhook destination adapter registration.
- Added inline and concurrent runtime adapter registration.
- Added optional node identity configuration for future control-plane integration.
- Added local capability reporting for state, destination, runtime, and relay features.
- Added a reusable status command object behind the CLI status command.
Changed
- Bumped Mammoth version to
0.7.0.
0.6.0
Added
- Added fanout route filters by schema, table, and operation for webhook destinations.
- Added destination
enabledcontrols for config-driven delivery cutovers. - Added per-destination retry policy overrides for
max_attemptsandschedule_seconds. - Added dead-letter replay filters by destination, status, and failed-at time window.
- Added destination-labeled Prometheus metrics for dead-letter and delivered-envelope counts.
Changed
- Bumped Mammoth version to
0.6.0.
0.5.1
Added
- Added benchmark scripts for webhook delivery, webhook fanout, SQLite operational state, observability snapshots, and dead-letter replay.
- Added shared benchmark helpers for synthetic CDC work items, local HTTP receivers, table output, JSON output, and environment-driven benchmark knobs.
- Added a benchmark snapshot runner that writes Markdown, JSON, and per-trial logs for publishable benchmark results.
Changed
- Aligned benchmark documentation across
README.md,docs/BENCHMARKS.md, andbenchmark/README.mdaround operator config tuning.
0.5.0
Added
- Added multi-destination webhook fanout through
destinations, with independent per-destination retry, delivered-ledger, and dead-letter state. - Added targeted fanout dead-letter replay so replay sends failed work back only to the original destination.
- Added Helm rendering for fanout destinations, including secret-backed environment variables for Authorization headers and HMAC signing secrets.
0.4.0
Added
- Added optional observability support with
/healthz,/readyz, and/metricsendpoints, plus CLI startup, configuration, and documentation coverage.
0.4.0
Added
- Added dead-letter inspection and replay commands for operational recovery.
- Added dead-letter support for list, show, and replay, with replay routing both event and transaction dead letters back through the existing delivery path and resolving successful rows
0.2.0
Added
- Added transaction-level delivery mode using
TransactionEnvelope. - Added transaction-aware buffering and aggregation of CDC events.
- Added transaction webhook example demonstrating end-to-end delivery from PostgreSQL logical replication to HTTP webhook.
- Added source position propagation for transaction deliveries.
- Added concurrent delivery runtime integration powered by
cdc-concurrent. - Added
DeliveryProcessorabstraction for runtime execution. - Added
TransactionEnvelopeSerializerfor transaction payload serialization. - Added rich self-documenting YAML configuration examples.
- Added configurable webhook HTTP headers through
webhook.headers. - Added environment-backed webhook headers through
webhook.header_envfor secrets such as bearer tokens. - Added optional HMAC-SHA256 webhook request signing through
webhook.signing. - Added E2E coverage for duplicate delivery suppression, transaction webhook payloads, dead-letter persistence, and signed/authenticated webhook requests.
- Added Helm chart rendering for delivery runtime, webhook auth headers, signing, and secret-backed webhook environment values.
Changed
- Transaction delivery now emits a single webhook payload per committed PostgreSQL transaction.
- CDC events belonging to the same database transaction are now grouped into a single
TransactionEnvelope. - Delivery pipeline now preserves transaction boundaries from ingestion through webhook delivery.
- Replication slot creation now correctly honors configured temporary/permanent slot settings.
- Concurrent runtime integration now complies with
cdc-concurrentprocessor safety requirements. - Webhook delivery now applies configured static headers, env-backed headers, and per-request signature headers before sending payloads.
Fixed
- Fixed transaction delivery incorrectly emitting one transaction payload per CDC event.
- Fixed missing source position metadata in transaction deliveries.
- Fixed replication slot option handling for boolean configuration values.
- Fixed transaction webhook example startup and producer execution flow.
- Fixed
cdc-concurrentruntime compatibility and processor validation failures. - Fixed quality gate drift by restoring passing coverage, RuboCop, Steep, and YARD validation.
Examples
-
Added
examples/transaction_webhookdemonstrating: -
PostgreSQL logical replication
-
TransactionEnvelope aggregation
-
Transaction-level webhook delivery
-
Source position propagation
-
Concurrent delivery runtime integration
Internal
- Established the foundation for transaction-aware checkpointing.
- Established the foundation for ordering policies based on transaction boundaries.
- Established the foundation for future multi-destination fanout delivery.
- Added real
cdc-concurrentruntime coverage outside the unit-test fake runtime.
[0.1.1] - 2026-06-17
Documentation and operational guidance release.
Added
- Documentation site structure under
docs/. - Quick Start guide.
- PostgreSQL setup guide.
- Configuration reference.
- CLI reference.
- Operational state guide.
- Examples guide.
- Helm deployment guide.
- Troubleshooting guide.
Improved
- GitHub Pages documentation experience.
- API documentation discoverability.
- Documentation navigation and onboarding flow.
- Cross-linking between guides and API reference.
Clarified
- PostgreSQL logical replication requirements.
- Publication and replication slot expectations.
- SQLite operational state responsibilities.
- Checkpoint persistence behavior.
- Dead-letter persistence behavior.
- Helm deployment assumptions.
- Kubernetes operational considerations.
Validation
Documentation was aligned with manually validated deployment scenarios:
- PostgreSQL logical replication.
- Live webhook delivery.
- Retry exhaustion and dead-letter persistence.
- SQLite operational state.
- Helm chart deployment.
- Kind-based Kubernetes deployment.
Notes
This release focuses on documentation, onboarding, and operational clarity. No runtime or configuration changes were introduced.
[0.1.0] - 2026-06-17
Initial public release of Mammoth.
Added
- PostgreSQL logical replication source integration via pgoutput.
- CDC event normalization through the CDC ecosystem.
- Webhook delivery destination.
- SQLite-backed operational state storage.
- Checkpoint persistence infrastructure.
- Dead-letter persistence infrastructure.
- Retry handling for failed webhook deliveries.
- Configuration validation command.
- Operational state bootstrap command.
- Operational status command.
- Sample event delivery command.
- Helm chart for Kubernetes deployments.
- Persistent volume support for SQLite operational state.
- Example configurations and runnable demonstrations.
Examples
-
examples/postgres_webhook -
Demonstrates webhook delivery using sample CDC-shaped events.
-
examples/live_postgres_webhook -
Demonstrates end-to-end PostgreSQL logical replication.
-
Demonstrates replication slot management.
-
Demonstrates webhook delivery from live database changes.
-
examples/operational_state -
Demonstrates operational state bootstrap.
-
Demonstrates checkpoint and dead-letter schema initialization.
-
examples/failing_webhook_retry -
Demonstrates retry exhaustion behavior.
-
Demonstrates durable dead-letter persistence.
-
examples/kubernetes_helm -
Demonstrates Helm-based deployment.
-
Demonstrates PVC-backed operational memory.
Validation
The 0.1.0 release was manually validated through:
- PostgreSQL logical replication slot creation and consumption.
- Idle replication connections exceeding one hour.
- Post-idle event delivery.
- Webhook delivery success path.
- Webhook failure and dead-letter path.
- SQLite checkpoint and dead-letter persistence.
- Helm chart rendering and installation.
- Kubernetes deployment on Kind.
- PVC-backed operational state storage.
Notes
Mammoth currently operates as a single active consumer per PostgreSQL logical replication slot. The default Helm deployment uses a single replica to align with PostgreSQL logical replication semantics.