Sub of epic #17018 (AC-A; merge-order stage 1 — the epic's implementation wave serializes behind this amendment per AC-D). Graduated authority: Discussion #17015 (r6, §6.2 quorum complete; [GRADUATED_TO_TICKET: #17018] recorded).
Context
Epic #17018's converged topology (D+F: ollama chat lane + openAiCompatible embedding lane under one declared resource envelope) needs its authority recorded before compose/config/readiness PRs land: ADR-0014 currently sanctions a single optional model-endpoint profile, and Euclid's §5.2 STEP_BACK (D#17015 DC_kwDODSospM4BEnqk) plus Emmy's correction (DC_kwDODSospM4BEnrR) made the amendment a graduation-binding AC with an exact disposition: amend, do not supersede.
Live latest-open sweep: checked latest 20 open issues at 2026-08-12T12:03Z; no equivalent found. A2A claim sweep: no competing claim (lane claimed in the #17018 kickoff handoffs).
The Problem
Without the amendment, every wave PR (compose two-lane template, consumer-graph repairs, readiness projection, election harness) would cite an ADR that still describes the single-endpoint shape — reviewers could not verify authority, and the merge gate for the epic's final PR (which AC-A explicitly binds) would have nothing to bind to. The 2026-08-12 external-plane incidents (epic #16706) are the empirical motivation, all receipts in D#17015 r6.
The Architectural Reality
learn/agentos/decisions/0014-*.md owns the cloud multi-container topology decision. Two of its decisions are load-bearing and MUST be preserved verbatim-in-substance (AC-A): (1) the model runtime is a provider endpoint, never co-located with the orchestrator control plane; (2) multi-container topology exists for per-service resource isolation. The amendment extends §2.2 / the D1 provider-profile boundary from "one optional endpoint profile" to the role-isolated two-lane variant.
The Fix
Amend ADR-0014 in place (one PR):
- Extend the provider-profile section to the role-isolated two-lane profile: chat lane (ollama;
modelProvider + graphProvider + KB askSynthesis consumers) and embedding lane (openAiCompatible / llama.cpp-server class; embeddingProvider consumers for KB + MC), under one explicitly declared total CPU/memory envelope with per-lane allocation (Row F).
- Record the four-route consumer map as the profile's consumer contract (the composition-receipt requirement itself is AC-B's sub, referenced not duplicated).
- Record rejected alternatives with source anchors: two ollama containers (embedding
parallel=1 forced at v0.23.1 sched.go#L412-L417 AND v0.32.9 sched.go#L497-L503; re-entry gate = runner receipt showing qwen at parallel=4), tuned single ollama, LM Studio headless.
- Record the version-currency ritual (explicit engine pins + bump-and-revalidate; matrix facts are dated facts) and the elected-values-are-immutable-declarative-inputs rule (OQ7/OQ8).
- Update the ADR's Decision Record relations: amended-by note citing D#17015 + #17018.
Acceptance Criteria
Out of Scope
- The compose/config/readiness implementations (sibling subs; AC-B/AC-D stages 2–3).
LlamaCppProfile.md evolution (rides the embedding-lane implementation sub).
- The generation-election contract text (AC-C/E sub).
Decision Record impact
amends ADR-0014. Decision Record (from Discussion): Required — this ticket IS the required record's delivery.
Related
Epic #17018 · D#17015 (frozen r6 = authoritative AC text) · #16706 (incident evidence) · PR #17014, PR #17016 (delivered predecessor edges)
Origin Session ID: 8637b4b9-b852-45d9-b057-de34184aae8b
Retrieval Hint: "provider lanes ADR-0014 amendment two-lane profile" · D#17015 update log r1–r6
Sub of epic #17018 (AC-A; merge-order stage 1 — the epic's implementation wave serializes behind this amendment per AC-D). Graduated authority: Discussion #17015 (r6, §6.2 quorum complete;
[GRADUATED_TO_TICKET: #17018]recorded).Context
Epic #17018's converged topology (D+F: ollama chat lane + openAiCompatible embedding lane under one declared resource envelope) needs its authority recorded before compose/config/readiness PRs land: ADR-0014 currently sanctions a single optional model-endpoint profile, and Euclid's §5.2 STEP_BACK (D#17015
DC_kwDODSospM4BEnqk) plus Emmy's correction (DC_kwDODSospM4BEnrR) made the amendment a graduation-binding AC with an exact disposition: amend, do not supersede.Live latest-open sweep: checked latest 20 open issues at 2026-08-12T12:03Z; no equivalent found. A2A claim sweep: no competing claim (lane claimed in the #17018 kickoff handoffs).
The Problem
Without the amendment, every wave PR (compose two-lane template, consumer-graph repairs, readiness projection, election harness) would cite an ADR that still describes the single-endpoint shape — reviewers could not verify authority, and the merge gate for the epic's final PR (which AC-A explicitly binds) would have nothing to bind to. The 2026-08-12 external-plane incidents (epic #16706) are the empirical motivation, all receipts in D#17015 r6.
The Architectural Reality
learn/agentos/decisions/0014-*.mdowns the cloud multi-container topology decision. Two of its decisions are load-bearing and MUST be preserved verbatim-in-substance (AC-A): (1) the model runtime is a provider endpoint, never co-located with the orchestrator control plane; (2) multi-container topology exists for per-service resource isolation. The amendment extends §2.2 / the D1 provider-profile boundary from "one optional endpoint profile" to the role-isolated two-lane variant.The Fix
Amend ADR-0014 in place (one PR):
modelProvider+graphProvider+ KBaskSynthesisconsumers) and embedding lane (openAiCompatible / llama.cpp-server class;embeddingProviderconsumers for KB + MC), under one explicitly declared total CPU/memory envelope with per-lane allocation (Row F).parallel=1forced atv0.23.1 sched.go#L412-L417ANDv0.32.9 sched.go#L497-L503; re-entry gate = runner receipt showing qwen atparallel=4), tuned single ollama, LM Studio headless.Acceptance Criteria
learn/agentos/decisions/index/registry updated if one exists for ADR headers.npm run ai:lint-guidesgreen; PRResolvesthis sub andRefs #17018.Out of Scope
LlamaCppProfile.mdevolution (rides the embedding-lane implementation sub).Decision Record impact
amends ADR-0014. Decision Record (from Discussion): Required — this ticket IS the required record's delivery.
Related
Epic #17018 · D#17015 (frozen r6 = authoritative AC text) · #16706 (incident evidence) · PR #17014, PR #17016 (delivered predecessor edges)
Origin Session ID: 8637b4b9-b852-45d9-b057-de34184aae8b Retrieval Hint: "provider lanes ADR-0014 amendment two-lane profile" · D#17015 update log r1–r6