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

## v0.79.0 — Code Quality, API Ergonomics & Security

**Status: In progress.**

> **Release Theme**
> Sweep of maintainability debt between hardening arcs: unused-import
> suppressions removed, internal API implementations converted to typed
> parameter structs, the global dead-code allow replaced with per-module
> allowances, a deprecated function cleaned up, user-facing convenience
> helpers added, security enforcement tightened, a cleanup chaos test
> added, and the dbt adapter compatibility matrix extended.

---

### Code Quality

| ID | Title | Effort | Priority |
|----|-------|--------|----------|
| Q-1 | Remove `#[allow(unused_imports)]` from `codegen.rs` and `merge/mod.rs` | S | P1 |
| Q-2 | Convert `alter_stream_table_impl` to `AlterStreamTableOptions` struct | M | P1 |
| Q-3 | Replace `#![allow(dead_code)]` with per-module allowances | M | P1 |
| Q-4 | Mark `consume_slot_changes()` `#[deprecated]` | S | P1 |

### API Ergonomics

| ID | Title | Effort | Priority |
|----|-------|--------|----------|
| A-1 | Add `create_stream_table_fast_append_only` / `set_stream_table_refresh_policy` / `set_stream_table_storage_policy` | M | P1 |
| A-2 | Add `pause_stream_table` wrapper | S | P1 |

### Security

| ID | Title | Effort | Priority |
|----|-------|--------|----------|
| S-1 | Strengthen semgrep rules for dynamic SQL identifier/literal/OID | S | P1 |
| S-2 | Emit WARNING when source has RLS at create_stream_table time | S | P1 |
| S-3 | CI test for SECURITY DEFINER trigger functions with SET search_path | S | P1 |

### Reliability & Test Coverage

| ID | Title | Effort | Priority |
|----|-------|--------|----------|
| D-3 | Cleanup chaos test: three consecutive DELETE failures | M | P1 |
| T-5 | dbt adapter compatibility matrix (alter/drop/rebuild + version matrix) | M | P1 |

---

### Recommended Implementation Order

**Phase 1: Code quality** (Q-1 → Q-2 → Q-3 → Q-4)  
**Phase 2: API ergonomics** (A-1 → A-2) with SQL migration  
**Phase 3: Security** (S-1 → S-2 → S-3)  
**Phase 4: Tests** (D-3 → T-5)

---

### Implementation Status

| ID | Title | Status |
|----|-------|--------|
| Q-1 | Remove unused-import suppressions codegen.rs / merge/mod.rs | ✅ Done |
| Q-2 | AlterStreamTableOptions typed struct | ✅ Done |
| Q-3 | Replace global allow(dead_code) | ✅ Done |
| Q-4 | Deprecate consume_slot_changes() | ✅ Done |
| A-1 | create_stream_table_fast_append_only / set_*_policy helpers | ✅ Done |
| A-2 | pause_stream_table wrapper | ✅ Done |
| S-1 | Semgrep rules for dynamic SQL identifier/literal/OID | ✅ Done |
| S-2 | RLS WARNING at create_stream_table time | ✅ Done |
| S-3 | CI test for SECURITY DEFINER trigger search_path | ✅ Done |
| D-3 | Cleanup chaos test | ✅ Done |
| T-5 | dbt adapter compatibility matrix | ✅ Done |

---

### Exit Criteria

- [x] All P0/P1 items ✅ Done
- [x] `just test-all` passes
- [x] `just check-version-sync` exits 0
- [x] CHANGELOG.md entry written
- [x] ROADMAP.md v0.79.0 row marked ✅ Released
