Architecture orientation

Status: living reference, replacing the dated snapshot formerly inlined as AGENTS.md §2 (“current as of 2026-04-27”). The rules that were mixed into it — deployment-contract discipline, migration safety, script conventions — stay in §2. Everything here is a fact about the current stack and is expected to drift: verify against source before relying on it. Relocated by BI-0020D511 Phase 1.

Which overview wins (BI-79BCE3F2). This page is the entry point — a one-screen index of facts and pointers. platform-overview.md is canonical for depth: runtime topology (the full compose service set and profiles), the two deployment models, the sandbox/build workflow, data architecture, and hardware guidance. Where the two disagree, platform-overview wins; fix the drift here rather than forking the story. Volatile counts (models, migrations, enums, principles, routes) are generated — cite architecture-counts.generated.md, never a hand-typed number.

Subsystem map

The subsystems the platform runs that this page previously omitted entirely (pass 2026-08-16 §3.5). One pointer each — the linked page is the canonical home:

Channel adapter capabilities

When an operation is contractually defined on a channel adapter interface but operationally unsupported by a specific provider, the adapter must explicitly signal support status using capability flags rather than silent failure. Unimplemented methods must throw a typed error or return a structured unsupported response (e.g., throwing an IntegrationApiError with status code UNSUPPORTED_OPERATION or returning a supported: false status) to allow the caller to degrade gracefully. For example, a marketing channel adapter that contractually implements engagement tracking but lacks underlying API support on a specific provider must advertise this via its capability registration. (BI-IMP-27126FA9)