mir-backend-beam-phoenixlisted
Install: claude install-skill anantbhandarkar/make-it-right
# /mir-backend-beam-phoenix · Make It Right (Phoenix)
Bottom tier of the chain: `mir-backend` (generic gates) → `mir-backend-beam` (BEAM/Erlang VM process model) → **this** (Phoenix/LiveView/Ecto/Plug library mechanics). Run the gates first; load the BEAM runtime tier for supervision, mailbox, ETS and atom-exhaustion concerns; reach for *this* at Gate 5 (design mechanics), Gate 6 (implementation), and Gate 7 review. **Runtime-level concerns (supervision trees, unbounded mailboxes, GenServer bottlenecks, `:persistent_term`, distributed Erlang, `binary_to_term`, Hex supply chain) live in `mir-backend-beam` — not here.**
**Stack assumed:** Phoenix · LiveView · Ecto · Plug · Bandit · PostgreSQL · PubSub. Verified 13 Aug 2026 on hex.pm: **Phoenix 1.8.11** (12 Aug 2026, 1.9 is unreleased and in development), **phoenix_live_view 1.2.9** (10 Aug 2026, with 1.1.33 as a maintained line), **ecto 3.14.1** (9 Jul 2026), **ecto_sql 3.14.0**, **plug 1.20.3** (9 Jul 2026), **bandit 1.12.4** (27 Jul 2026), **postgrex 0.22.4** (7 Aug 2026), **phoenix_pubsub 2.2.0**. Bandit is the default adapter in generated Phoenix apps. Phoenix 1.8 requires OTP 25+. If the project uses an Ecto adapter other than Postgres, note the divergence before applying the migration-safety items — the `CONCURRENTLY` and `NOT VALID` patterns below are PostgreSQL-specific.
## The Phoenix footguns AI walks into most
### 1. LiveView state is per-connection — memory scales with concurrent users
Each connected LiveView c