ADR-A50: Role-Profiled Deployment

Status: Proposed Date: 2026-09-23 Related: Architecture Review §2.1 (G-23), ADR-A81, solution-design-specification.md §4.2 Drafted by: Agent, autonomous session (P0.1.10). Pending human ratification — see phase-0-status.md.

Context

Runtime ingestion traffic (thousands of payloads/minute, latency-sensitive) and authoring/review traffic (dozens of requests/minute, latency-tolerant) currently share the same deployment unit, thread pool, and deploy cadence. This prevents independent scaling and puts authoring changes on the same blast radius as ingestion load.

Decision

Single codebase, deployed as role-profiled processes selected by a LATTICE_ROLE environment setting:

Each role profile mounts only its own routes (asserted per role at startup). Identity, policy, and outbox wiring (solution-design-specification.md §4.2) remain a single composition root shared by every role, so there is no duplicated wiring — only independent scaling, independent deploy cadence, and blast-radius separation.

Consequences