← ClaudeAtlas

mir-backend-beam-phoenixlisted

Make It Right (Phoenix module). Phoenix + LiveView + Ecto + Plug + PostgreSQL specific reliability augmentation. Chains: mir-backend (generic gates) -> mir-backend-beam (BEAM runtime) -> this (Phoenix/LiveView/Ecto/Plug library mechanics). Adds the mechanical footguns the framework-agnostic tiers omit: LiveView per-connection process memory, with streams vs temporary_assigns for large collections; the async-assign APIs (assign_async/4, start_async/4 + handle_async/3, cancel_async/3) and why a bare Task.async in a LiveView kills the LiveView on crash; handle_event as a public websocket endpoint that must re-authorize on every event; Phoenix 1.8 scopes threading %Scope{} through context functions; Ecto N+1 on unloaded associations; changeset cast/4 as the mass-assignment allow-list; and migration safety on populated tables (concurrently, disable_ddl_transaction, expand/contract, NOT VALID + VALIDATE). TRIGGER only when the BEAM backend stack is Phoenix - building, reviewing, or debugging a Phoenix controller, L
anantbhandarkar/make-it-right · ★ 15 · API & Backend · score 81
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