# Teams and Strategies compile to bounded DSH primitive IR - Status: Accepted - Date: 2026-08-15 Config v2 adds ordered Catalog Layers, TeamSpec Member Slots, and a closed declarative Strategy stage vocabulary. `compileOrchestrationCatalog()` validates profile references, member cardinality, artifact contract/cardinality/availability, limits, completion, and runtime profile activity; `compileStrategy()` binds an objective and only narrower invocation limits. Successful output is detached, deeply frozen IR composed only of executable `dsh-delegate` and `dsh-subagent-fanout` primitives plus a StrategyPlanDigest—not an Agent, Session, workflow run, scheduler, or callback. Layers extend by new names, replace complete same-name entries, and disable with tombstones; later definitions may revive a name. The exported `DEFAULT_CATALOG_LAYER`, shipped preset, and third-party/user layers use exactly this public data contract. There are no strategy-name branches or hidden default privileges. TypeScript helpers check prior-artifact contract/cardinality and Team member names at authoring time, while the same external data receives strict runtime validation. The shipped preset keeps the three curated Strategies absent from the model tool; deployments may explicitly opt in under ADR 0012. A thin public `executeStrategyPlan()` adapter consumes an atomic `StrategyExecutionSnapshot`, rejects plan/catalog generation drift before admission, and executes static `dsh-delegate` and `dsh-subagent-fanout` plans through real one-shot DSH subagents while preserving complete Profile policy; it returns explicit completed/degraded/cancelled/failed outcomes and owns every published run through quiescent, failed, or explicitly pending cleanup. DSH Goals are deliberately excluded: they are one persistent objective owned by a live Agent session, conflict with an existing parent goal, and external/continuable children do not expose an awaitable artifact result. Encoding that lifecycle as a member stage would create an illegal, non-portable state. Workflow likewise cannot deliver full Profile persona/tool/depth/resource policy, so Legion will not silently drop policy or construct a second runtime. Aggregate token/cost enforcement remains gated on ADR 0013's upstream DSH budget seam. Current hard limits cover members, per-Team-Run concurrency, deadline, and accepted output bytes; concurrent Team Runs are independent.