Skip to content

ADR-0011: Runtime, deployment, configuration, and telemetry are separate dimensions ​

Context ​

Runtime placement, physical packaging, invocation transport, deployment platform, wire encoding, configuration lifetime, and observability are related but not interchangeable.

Decision ​

Runtime layout is logical placement; build topology is physical JAR/module/container arrangement; transport is LOCAL, REST, or GRPC; platform and wire/envelope protocol are separate dimensions. Authors declare placement intent through the supported runtime mapping model; the compiler validates and emits authoritative placement/call metadata. Runtime mapping does not rewrite Maven topology or change canonical meaning.

Applications start with the simplest supported deployment unit and split only for a real scale, security, failure-isolation, ownership, or platform need. Portable semantics belong in pipeline.yaml; build-derived capability changes require regeneration; framework policy/providers belong in runtime/deployment configuration; changing business facts are typed input.

Telemetry boundary identity and available instrumentation are build-produced. Sampling, enablement, exporters, backends, and operational thresholds are runtime/deployment policy. This decision governs framework/deployment, runtime mapping, runtime configuration, telemetry in framework/runtime*, packaging, and docs/deploy.

Rationale ​

Separating these dimensions lets deployment evolve without rewriting business semantics.

Consequences ​

  • A layout flag alone does not create or merge deployable artifacts.
  • Prefer global defaults and exact generated-boundary overrides for real exceptions.
  • Release identity and generated semantic contracts pin execution interpretation.