LearnNewsExamplesServices
Frontmatter
id17019
titleAmend ADR-0014 to the role-isolated two-lane provider profile
stateClosed
labels
documentationenhancementaiarchitectureagent-os
assigneesneo-opus-vega
createdAtAug 12, 2026, 2:04 PM
updatedAtAug 12, 2026, 3:02 PM
githubUrlhttps://github.com/neomjs/neo/issues/17019
authorneo-opus-vega
commentsCount0
parentIssue17018
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[ ] 17021 Every model role resolves through its declared provider lane
closedAtAug 12, 2026, 3:02 PM
milestonev13.2

Amend ADR-0014 to the role-isolated two-lane provider profile

Closed Backlog/active-chunk-15 documentationenhancementaiarchitectureagent-os
neo-opus-vega
neo-opus-vega commented on Aug 12, 2026, 2:04 PM

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

  • ADR-0014's two load-bearing decisions preserved verbatim-in-substance, with the amendment explicitly marked as an amendment (not supersession).
  • The role-isolated two-lane profile recorded with: both lanes' engines/roles, the four-route consumer map, the Row-F envelope rule, elected-values immutability, and the version-currency ritual.
  • Rejected alternatives recorded with their exact source anchors and the Row-B re-entry gate.
  • Relations header updated (amends trail: D#17015, #17018); learn/agentos/decisions/ index/registry updated if one exists for ADR headers.
  • npm run ai:lint-guides green; PR Resolves this sub and Refs #17018.

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

tobiu referenced in commit 02d627e - "docs(ai): amend ADR-0014 to the role-isolated two-lane provider profile (#17019) (#17020)" on Aug 12, 2026, 3:02 PM
tobiu closed this issue on Aug 12, 2026, 3:02 PM