Emit model-opaque logical lanes for harness adapters #767

Closed
opened 2026-07-28 01:46:06 +00:00 by coilyco-ops · 1 comment
Member

Outcome

AOS resolves a general seat plus an explicit intent into a harness and a stable logical backend lane. Harness adapters use that lane through their local profile or configuration surface, while AOS remains completely unaware of concrete models, runtimes, servers, and fallback order.

Blocked by:

Builds on the role-and-intent harness projection established by #650

Product contract

  • Seats remain general role contracts. A Community seat does not contain ornith, Ollama, LiteLLM, a server, or a fallback list.
  • Intent is an explicit control-plane input selected by the caller or workflow.
  • AOS derives the logical route key as <role>/<intent> from the same validated role and intent vocabulary used for harness projection.
  • AOS emits the selected harness slug and logical route key together so an adapter cannot accidentally combine a harness from one lane with a route from another.
  • Harness adapters store the route selection in the harness's local profile or local configuration surface. They do not mutate a shared fleet-wide provider configuration.
  • The logical route key may be sent as the OpenAI-compatible model value to Agent Proxy. It must not be inserted into system prompts, chat messages, personality text, or other model-visible context.

Interface

Keep the existing harness-default behavior for compatibility. Add one machine-readable lane projection, following repository CLI conventions, equivalent to:

aos --role <role> lane-default --intent <intent>

The output must include only model-opaque control data:

  • role
  • intent
  • harness
  • route

JSON should be the default or an explicit stable machine-output mode. If the repository has an established structured-output convention, use that convention and document the exact invocation.

Adapter behavior

  • A supported harness adapter consumes one lane projection atomically.
  • The adapter writes or selects a local profile that points at Agent Proxy and uses the logical route key.
  • Re-running the adapter is idempotent.
  • Existing user-owned profile content is preserved according to the repository's established merge or ownership rules.
  • Missing role, missing intent, unsupported intent, and missing harness mapping produce actionable errors.
  • A legacy caller that asks only for harness-default keeps its current behavior.

Acceptance criteria

  • Unit tests cover every declared role-and-intent lane and prove deterministic <role>/<intent> keys.
  • Tests prove community/knowledge-retrieval selects Rasa and community/conversation-management selects ElizaOS.
  • No AOS source, fixture, generated profile, or documentation introduced by this work contains ornith:35b or any other AOSH backend selection.
  • Adapter tests prove the logical route reaches the local profile's Agent Proxy request configuration without entering prompt content.
  • Compatibility tests preserve harness-default.
  • Documentation explains the general-seat contract, explicit intent selection, local-profile ownership, and model-opaque boundary.
  • docs/FEATURES.md changes only if the public feature boundary materially changes under the repository rule.
  • Repository validation passes and the change lands on canonical main.

Non-goals

  • Do not read AOSH at runtime or build time.
  • Do not choose a model, runtime, server, or fallback.
  • Do not add backend identities to seat definitions.
  • Do not deploy Agent Proxy, LiteLLM, Rasa, or ElizaOS.
  • Do not perform live verification in this issue.
## Outcome AOS resolves a general seat plus an explicit intent into a harness and a stable logical backend lane. Harness adapters use that lane through their local profile or configuration surface, while AOS remains completely unaware of concrete models, runtimes, servers, and fallback order. Blocked by: * https://forgejo.coilysiren.me/coilyco-bridge/agentic-os-hardware/issues/79 * https://forgejo.coilysiren.me/coilyco-flight-deck/agent-proxy/issues/62 Builds on the role-and-intent harness projection established by https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/issues/650 ## Product contract * Seats remain general role contracts. A Community seat does not contain `ornith`, Ollama, LiteLLM, a server, or a fallback list. * Intent is an explicit control-plane input selected by the caller or workflow. * AOS derives the logical route key as `<role>/<intent>` from the same validated role and intent vocabulary used for harness projection. * AOS emits the selected harness slug and logical route key together so an adapter cannot accidentally combine a harness from one lane with a route from another. * Harness adapters store the route selection in the harness's local profile or local configuration surface. They do not mutate a shared fleet-wide provider configuration. * The logical route key may be sent as the OpenAI-compatible `model` value to Agent Proxy. It must not be inserted into system prompts, chat messages, personality text, or other model-visible context. ## Interface Keep the existing `harness-default` behavior for compatibility. Add one machine-readable lane projection, following repository CLI conventions, equivalent to: `aos --role <role> lane-default --intent <intent>` The output must include only model-opaque control data: * `role` * `intent` * `harness` * `route` JSON should be the default or an explicit stable machine-output mode. If the repository has an established structured-output convention, use that convention and document the exact invocation. ## Adapter behavior * A supported harness adapter consumes one lane projection atomically. * The adapter writes or selects a local profile that points at Agent Proxy and uses the logical route key. * Re-running the adapter is idempotent. * Existing user-owned profile content is preserved according to the repository's established merge or ownership rules. * Missing role, missing intent, unsupported intent, and missing harness mapping produce actionable errors. * A legacy caller that asks only for `harness-default` keeps its current behavior. ## Acceptance criteria * Unit tests cover every declared role-and-intent lane and prove deterministic `<role>/<intent>` keys. * Tests prove `community/knowledge-retrieval` selects Rasa and `community/conversation-management` selects ElizaOS. * No AOS source, fixture, generated profile, or documentation introduced by this work contains `ornith:35b` or any other AOSH backend selection. * Adapter tests prove the logical route reaches the local profile's Agent Proxy request configuration without entering prompt content. * Compatibility tests preserve `harness-default`. * Documentation explains the general-seat contract, explicit intent selection, local-profile ownership, and model-opaque boundary. * `docs/FEATURES.md` changes only if the public feature boundary materially changes under the repository rule. * Repository validation passes and the change lands on canonical `main`. ## Non-goals * Do not read AOSH at runtime or build time. * Do not choose a model, runtime, server, or fallback. * Do not add backend identities to seat definitions. * Do not deploy Agent Proxy, LiteLLM, Rasa, or ElizaOS. * Do not perform live verification in this issue.
Author
Member

Landed on canonical main in 7d439ee0f9644165e33fb45573cd2cc56a5d17b8.

Evidence:

  • aos --role ROLE lane-default --intent INTENT emits exactly role, intent, harness, and deterministic <role>/<intent> route JSON.
  • Unit coverage resolves all 19 embedded lanes and proves Community retrieval selects Rasa while Community conversation selects ElizaOS.
  • harness-default still resolves through the same board and preserves harness-only output.
  • Optional --profile PATH atomically merges an AOS-owned local profile with request.provider=agent-proxy and the logical route as request.model.
  • Profile tests prove byte-idempotency, user-field preservation, prompt isolation, and refusal to overwrite foreign files.
  • The diff contains none of the five AOSH backend identities.
  • ward exec aos-test, aos-lint, aos-build, and sync-harness-board -- --check pass.
  • All in-scope pre-commit hooks pass. Five unrelated Windows/generated-pointer hooks were skipped after independently reproducing their existing main-branch failures. The broad Python suite recorded 554 passes and 13 unrelated Windows shell or symlink failures.
Landed on canonical `main` in `7d439ee0f9644165e33fb45573cd2cc56a5d17b8`. Evidence: * `aos --role ROLE lane-default --intent INTENT` emits exactly `role`, `intent`, `harness`, and deterministic `<role>/<intent>` `route` JSON. * Unit coverage resolves all 19 embedded lanes and proves Community retrieval selects Rasa while Community conversation selects ElizaOS. * `harness-default` still resolves through the same board and preserves harness-only output. * Optional `--profile PATH` atomically merges an AOS-owned local profile with `request.provider=agent-proxy` and the logical route as `request.model`. * Profile tests prove byte-idempotency, user-field preservation, prompt isolation, and refusal to overwrite foreign files. * The diff contains none of the five AOSH backend identities. * `ward exec aos-test`, `aos-lint`, `aos-build`, and `sync-harness-board -- --check` pass. * All in-scope pre-commit hooks pass. Five unrelated Windows/generated-pointer hooks were skipped after independently reproducing their existing main-branch failures. The broad Python suite recorded 554 passes and 13 unrelated Windows shell or symlink failures.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#767
No description provided.