ADR 0003 — Pinned compatibility contract for coupled agent stacks

Status

Historical design decision retained as a compatibility lesson, not a current runtime/version claim.

Context

An agent runtime is rarely one component. A typical stack couples a sandbox runtime, an agent framework, and an orchestrator — often several still on pre-1.0 (0.0.x) versions, where minor releases change interfaces without warning. Building such a stack by "take the latest of each" is how you ship a runtime that starts healthy but is quietly broken: a gateway that reports ready while the agent's brain cannot complete a single request, because one layer baked an inference mode the upstream path can't satisfy.

Two failure shapes recur: - Silent drift. A convenience shortcut (an unpinned tarball, a floating latest base image) pulls a different version than intended, reverting a fix or changing a default. The build succeeds; the behavior regresses. - Coupled defaults. A setting chosen by one layer's auto-selection (e.g. an inference API mode probed at onboard time) is incompatible with another layer's runtime, and the mismatch only surfaces at first real use.

Decision

Treat the stack as a pinned compatibility contract, not a set of independently-latest parts:

Consequences