> **Plain-language companion:** [v0.51.0.md](v0.51.0.md)

## v0.51.0 — Citus Chaos Resilience & Documentation Truth

**Status: Released.**

> **Release Theme**
> Prove that the Citus distributed integration survives real failure scenarios;
> remove the deprecated `event_driven_wake` dead weight; bring every piece of
> documentation into full alignment with the implemented code.

---

### Implementation Status

| ID | Title | Status |
|----|-------|--------|
| FEAT-10-01 | Citus Chaos Test Rig (3 scenarios) | ✅ Done |
| CQ-10-02 | Remove Deprecated `event_driven_wake` GUC | ✅ Done |
| DOC-10-01 | ARCHITECTURE.md pg_tide Boundary Section | ✅ Done |
| DOC-10-02 | Configuration Deprecation and Removal Banners | ✅ Done |
| DOC-10-03 | Recursive CTE Strategy Selection Heuristic | ✅ Done |
| COR-10-02 | Document CDC-Fires-When-Disabled Behavior | ✅ Done |

---

### Correctness

#### COR-10-02 — Document CDC-Fires-When-Disabled Behavior

`pg_trickle.enabled = false` stops the scheduler from dispatching refreshes
but CDC triggers continue to fire and write to change buffers. This is by
design (keeps buffers ready for immediate use when re-enabled) but is
undocumented and surprises operators who expect `enabled = false` to be a
complete quiet mode.

Add to `docs/CONFIGURATION.md` under `pg_trickle.enabled`:

> **Note on CDC triggers**: Setting `enabled = false` stops the scheduler from
> refreshing stream tables but does **not** disable CDC trigger execution.
> Change buffers continue to accumulate. This is intentional: when the extension
> is re-enabled, stream tables can refresh immediately from the buffered changes
> rather than performing a full table scan.
>
> To fully quiesce CDC overhead during extended maintenance, use
> `pgtrickle.drain()` before disabling, then `DROP TRIGGER` the CDC triggers
> manually and recreate them via `pgtrickle.repair_stream_table()` when
> re-enabling.

---

### Code Quality

#### CQ-10-02 — Remove Deprecated event_driven_wake GUC

The `pg_trickle.event_driven_wake` GUC has been non-functional since
PostgreSQL background workers cannot use `LISTEN`/`NOTIFY`. It has been
deprecated with default `false` since v0.39.0. It still emits a runtime
WARNING when set to `true` and adds dead code paths.

Remove entirely:
- GUC registration in `src/config.rs`
- Runtime warning emission and `event_driven = false` stub in
  `src/scheduler/scheduler_loop.rs`
- `docs/CONFIGURATION.md` entry (replace with a migration note)
- `docs/FAQ.md` and `docs/TROUBLESHOOTING.md` entries
- Update `tests/e2e_wake_tests.rs` to remove tests for the removed GUC

Add to `CHANGELOG.md` under a **Breaking Changes** heading for v0.51.0:
> `pg_trickle.event_driven_wake` has been removed. This GUC had no effect
> since v0.39.0. Remove it from `postgresql.conf` to avoid an unknown GUC
> warning on upgrade.

---

### Features

#### FEAT-10-01 — Citus Chaos Test Rig

Three chaos scenarios for Citus distributed topology, added to
`tests/e2e_citus_chaos_tests.rs` and registered in `stability-tests.yml`.

**Scenario 1: Coordinator restart during active refresh** (CHAOS-5)
**Scenario 2: Worker node kill with shard redistribution** (CHAOS-6)
**Scenario 3: Network partition simulation** (CHAOS-7)

All marked `#[ignore]` and run only in the stability-tests workflow.

---

### Documentation

#### DOC-10-01 — ARCHITECTURE.md pg_tide Boundary

Add a new **§ pg_tide Integration** section explaining the v0.46.0
extraction boundary: what stays in pg_trickle vs what lives in pg_tide.

#### DOC-10-02 — Configuration Deprecation and Removal Banners

After removing `event_driven_wake`, audit all remaining deprecated GUC entries
and add consistent `⚠️ Deprecated` callout blocks.

#### DOC-10-03 — Recursive CTE Strategy Selection Heuristic

Document the tier selection criteria (Tier 1–3c) and the
`explain_stream_table()` observability field in `docs/ARCHITECTURE.md`.

---

### Exit Criteria

- [ ] `just fmt` passes
- [ ] `just lint` passes with zero warnings
- [ ] `just test-unit` passes
- [ ] `just test-integration` passes
- [ ] `just test-light-e2e` passes
- [ ] `event_driven_wake` GUC fully removed (no references in src/)
- [ ] Chaos tests CHAOS-5, CHAOS-6, CHAOS-7 present and `#[ignore]` annotated
- [ ] ARCHITECTURE.md has pg_tide boundary section
- [ ] CONFIGURATION.md has CDC-enabled-flag note and deprecation banners
- [ ] Version bumped to 0.51.0
- [ ] CHANGELOG.md entry written
- [ ] ROADMAP.md status updated to ✅ Released
