Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0113

ADR-0113: Integration L1 builds now, and the master push is recorded as backup-and-deploy, not cut-over

field value
Status Accepted — Accepted (ruling, Mohamed, 2026-10-19, verbatim: "all" — ratifying recommendation R3 option A and R4 option A of reports/project-analysis-2026-10-19.md)
Date 2026-10-19
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0113-integration-l1-builds-now-and-the-master-push-is-recorded-as-backup-and-deploy-not-cut-over.md — permalink at 80c7135f0 (unchanged on master since that commit)
Wiki register entry ADR-0113 (wiki status: Accepted)

← ADR-0112 · ADR-0114 →

The record

Status: Accepted (ruling, Mohamed, 2026-10-19, verbatim: "all" — ratifying recommendation R3 option A and R4 option A of reports/project-analysis-2026-10-19.md) · Date: 2026-10-19

Context

Eight component packages are lifted and, by their own commit messages, parity-tested in private venvs. The ninth, integration (orchestrata, the composed release), has a full phase-D design — packages/integration/design/design.md (2026-10-16): composition only, 15 modules / 7,127 LOC / 7 classes, the DI wiring, monolithic entry point, env profiles, service start/verify, fleet-tier suite, promotion dev → test → prod — and ZERO Python files (report finding F1, MEASURED by glob). Every injection seam the other packages built (volk roster, call_llm, session-controller factory, verification gate, AGENT_CLASS_MAP, gateway LlmProfilePort) is unwired until that composition root exists. Hard Rule 8: imported is not wired; built, tested, unreachable.

Separately (finding F2/F4): the cut-over the design defines is integration passing the fleet tier on components with every old src/orchestrata_ultimate/<pkg> removed, then one merge to master. What happened on 2026-10-19 instead: the branch, monolith included, was pushed to origin/master (components = origin/master = 0faca7a7) and prod deployed that commit (VERSION + promotion ledger agree). The old tree was not removed; integration was not built. The push and the cut-over are different events.

Decision (Mohamed, verbatim: "all" — R3 option A, R4 option A)

  1. Integration L1 builds now, in this order: the composition root, the five boot adapters, the env profiles, service start/verify, and a fleet-tier smoke that imports the clean packages (orchestrata_contracts, orchestrata_kernel, …) rather than orchestrata_ultimate. The design exists; L1 increments are dispatched briefs (sonnet under the RUL-037 M3 routing) that execute the design, merging one by one.
  2. Fence: integration may import only what already lands. It does not reopen lift residue inside the eight packages except where boot cannot proceed; residue stays a separate brief per package. Waiting for a perfect lift before any wiring repeats the failure mode Hard Rule 8 already names.
  3. The 0faca7a7 master push is recorded as a backup-and-deploy of the in-progress tree, not the cut-over. The record lives in the components design decision log and in LEVEL0 (regenerated, ADR — R7). origin/master stays where it is. The real cut-over remains the future merge condition: integration green on the fleet tier, old src/orchestrata_ultimate/* removed, one merge to master, /opt/orchestrata ships from that tree.

Alternatives rejected

Consequences

Integration is the next landed package, and the composition root is where ADR-0112's injected implementations are supplied at boot. The components design and LEVEL0 state the push/cut-over distinction, so the next session does not rediscover it by reading commit titles. Nothing is called a cut-over until the design's merge condition holds.

Provenance

Mohamed's in-session ruling 2026-10-19 ("all") on recommendations R3/R4 of reports/project-analysis-2026-10-19.md (findings F1, F2, F4, F8). Design authority: packages/integration/design/design.md + packages/integration/design/decisions.md.

Rulings cited

Specs cited

None (or no spec page exists for the ones named).