Decision memo — OpenBao positioning: test-only vs. supported bundled backend

The body below is the original decision-support text, kept as the record of the choice as presented. Option A was chosen and applied.

The inconsistency to resolve

Every committed artifact today presents OpenBao (MPL-2.0, Linux Foundation fork of HashiCorp Vault) as an OPTIONAL bundled runtime broker:

ArtifactCurrent wording
ADR-031 D5“The OPTIONAL bundled broker is OpenBao … bundling … MPL-2.0 is compatible.”
NOTICE.md“OPTIONAL secret broker, enabled via the opt-in openbao compose profile.”
docs/legal/THIRD-PARTY-DEPENDENCIES.mdDedicated row: OpenBao 2.4.1, “Optional bundled runtime image only”.
third-party-licenses/OpenBao-MPL-2.0.txtFull MPL-2.0 text present (see hygiene note below).
devops/compose/docker-compose.openbao.yml“OPTIONAL BUNDLED OPENBAO SECRET BROKER”.

But the operator has stated OpenBao is test-only, and the live-proof note in the multi-provider runbook already records that: “In that proof, OpenBao was a TEST-ONLY backend (ephemeral container via the opt-in profile), not a shipped default.” (secret-provider-multi-provider.md).

So “bundled optional broker” (the artifacts) and “test-only” (the operator) are in tension. This needs one authoritative answer because the licensing and supply-chain obligations differ between the two.

Note (unchanged either way): the product default secret backend stays builtin. This decision is only about how OpenBao is positioned, supported, and licensed — not about the default.

Option A — Test-only (dev/CI convenience, not shipped, not supported)

OpenBao is used only for local development and automated tests via the opt-in compose profile. It is not part of any released/supported bundle and is never pinned/shipped in a release. The only supported external secret backend is an operator-run HashiCorp Vault (or an operator-run OpenBao they stand up themselves).

Licensing consequence: Stella Ops does not distribute the OpenBao image as part of the product, so MPL-2.0 distribution obligations do not attach. OpenBao is classified as dev/test tooling (like the dev-only NuGet/npm dependencies), not a distributed runtime component. The third-party-licenses/ text becomes an optional courtesy rather than a distribution requirement.

To apply (if chosen — DO NOT do this yet):

Trade-off: smaller supported surface; operators wanting a turnkey Vault-shaped bundled broker have none — they must run their own Vault/OpenBao.

Option B — Supported bundled backend (the current ADR-031 D5 intent)

OpenBao is a supported, optional secret backend that Stella ships (image pinned by sha256 digest in the release bundle) and supports in production.

Licensing consequence: Stella distributes the OpenBao runtime image as part of the product, so MPL-2.0 obligations do attach — and are already met: NOTICE + THIRD-PARTY entries + license text under third-party-licenses/, runtime image only, no source vendoring. MPL-2.0 is file-level copyleft; Stella’s separate, unmodified runtime use triggers no source-disclosure obligation.

To keep it clean (if chosen — DO NOT do this yet):

Trade-off: larger supported surface + release/CVE responsibility, in exchange for a turnkey bundled broker.

Recommendation (for the operator to accept or override)

If the operator’s “test-only” statement is definitive, Option A is the cheapest reconciliation and removes the distribution/CVE burden — but it narrows the supported backends to builtin + operator-run Vault. If a turnkey bundled broker is genuinely wanted, Option B is already 90% in place; the only real work is digest-pinning discipline in the release bundle plus the license-text provenance fix.

Either way, the artifacts must stop saying two different things. The builtin default is unaffected. This memo does not change any file — the choice is the operator’s.