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

ADR-0111: Test runs never create containers; container creation is exercised only by explicit rehearsals

field value
Status Accepted — Accepted (ruling, Mohamed, 2026-10-19, verbatim: "do not test container creation in test runds")
Date 2026-10-19
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0111-test-runs-never-create-containers-container-creation-is-exercised-only-by-explicit-rehearsals.md — permalink at 80c7135f0 (unchanged on master since that commit)
Wiki register entry ADR-0111 (wiki status: Accepted)

← ADR-0110 · ADR-0112 →

The record

Status: Accepted (ruling, Mohamed, 2026-10-19, verbatim: "do not test container creation in test runds") · Date: 2026-10-19

Context

On 2026-10-19 the tests that create containers were the largest source of instability on this host.

The leak fix (codetools abd91125) made teardown reliable. It does not remove the churn, the pool-wide stalls or the minutes of I/O per run.

Decision (Mohamed, verbatim: "do not test container creation in test runds")

No test run creates a container or VM. A test run is any test-runner invocation over a project's test tree: a developer run, pytest-live, scripts/run_tests.py, a ship gate, pre-commit, or CI. In such a run, no test may create, copy, launch or init an instance, whether through the incus CLI, the Incus REST API (POST /1.0/instances), a client wrapper (create_instance, ensure_instance, copy_instance, launch) or terraform. Tests may read and exec into the standing fleet containers that already exist.

Code whose job is creating containers is exercised by explicit rehearsals instead:

Each repository's test run carries a policy gate that fails when a module under its test tree calls an instance-creating API. Prevention is static, so it does not depend on remembering the rule.

Alternatives rejected

Consequences

Provenance

No other ADR is named in this record.

Rulings cited

Specs cited