# Milestone 0 · Phase 1 — Embeddable Runtime Skeleton

**Objective:** ship an ergonomic, zero-config builder so engineers can spin up a tidalDB instance inside tests or services without touching the signal stack yet.

**Success criteria**
- `TidalDb::builder()` exposes `ephemeral()` and `single_process(data_dir)` shortcuts with sensible defaults.
- `Config` validates eagerly (missing dirs, bad permissions) so failures happen before WAL threads spin up.
- Builder registers shutdown hooks (`Drop` + explicit `close()`), returning errors if background workers fail to drain.
- Temp-directory helper guarantees deterministic cleanup (used by doctests + integration tests).

**Dependencies:** none — runs before any signal-specific work.

**Blocked by:** n/a

**Unblocks:** M0 Phase 2 (CLI needs stable layout), all later milestones (test harnesses use the builder).
