# atlas — Task Breakdown Source of truth: [docs/PLAN-atlas.md](../docs/PLAN-atlas.md), [docs/adr/ADR-0001-atlas-cluster-visualization.md](../docs/adr/ADR-0001-atlas-cluster-visualization.md) Supersedes: [PLAN.md](../PLAN.md), [IMPLEMENTATION.md](../IMPLEMENTATION.md) (Homarr + Terraform — abandoned) ## Status Not started. **5 decisions block Phase 1** — see [00-decisions.md](00-decisions.md). ## Phases | File | Phase | Est. | |---|---|---| | [00-decisions.md](00-decisions.md) | Blocking decisions (must answer before Phase 1) | — | | [01-phase0-unblock.md](01-phase0-unblock.md) | Phase 0 — unblock deployment | — | | [02-phase1-atlas-core.md](02-phase1-atlas-core.md) | Phase 1 — atlas core (RBAC, informers, redaction) | ~4d | | [03-phase2-topology.md](03-phase2-topology.md) | Phase 2 — Surface B: cluster topology | ~3d | | [04-phase3-delivery.md](04-phase3-delivery.md) | Phase 3 — Surface E: delivery tree | ~3d | | [05-phase4-terminal.md](05-phase4-terminal.md) | Phase 4 — Surface C: terminal | ~2d | | [06-phase5-chat.md](06-phase5-chat.md) | Phase 5 — Surface D: chat + rate limiter | ~5d | **Total: ~17 working days.** ## Rules carried from the ADR - I1: `riotpiao.com` is the only public hostname, ever - I2: browser never talks to an internal API directly — atlas is the only origin - I3: redaction is allowlist-only, enforced by DTO construction - I4: no free-form string reaches an internal system (closed enum, snapshot-membership validation) - I5: GPU chat concurrency capped at 6 of 8 sequence slots, disconnect cancels upstream immediately - TDD: RED (tests named before code) → GREEN (minimal code) → REFACTOR, per phase - Playwright e2e is a hard requirement for every UI-shipping phase (2, 3, 4, 5) — no surface merges without a passing spec