Skip to content

Render the inference document from the provider registry - #229

Merged
wseaton merged 1 commit into
openai-decisionfrom
inference-from-providers
Oct 7, 2026
Merged

wseaton merged 1 commit into
openai-decisionfrom
inference-from-providers

Conversation

@wseaton

@wseaton wseaton commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

The controller now hands the engine its models as the CRUCIBLE_INFERENCE document the engine already reads (C-INFERENCE), one binding per role, instead of projecting harness variables (OPENAI_API_KEY, OPENAI_BASE_URL, CRUCIBLE_INFERENCE_WIRE_API) onto the pod. This lets a deployed controller run model-decided routes; the old projection could not carry a decision key without colliding with an OpenAI agent's key or leaking into agent sandboxes. Decision in ADR-0065.

  • Dispatch defaults name a role, agent or decision (migration 0054). A decision default resolves per domain and class like an agent default, is refused on autoresearch (no route tasks there), and takes no launch pin.
  • A provider serves the roles its kind or protocol can: OpenAI both (Decisions API for decisions, gpt-6-luna unless the default names a model), Anthropic and Vertex agents only, custom whatever its protocol does; system_one and decisions join the custom protocols. Defaults, fallbacks and pins that name a provider that cannot serve the role are refused.
  • Every pod dispatch (playbook run, scope and rank turns, grounded rank) renders the document; each key rides the per-run Secret under CRUCIBLE_INFERENCE_KEY_AGENT / _DECISION, names no harness reads. A credentials map gives up its protocol's entry as the key; the agent keeps the other entries, a decision drops them. The local executor still passes its own CRUCIBLE_* through.
  • The providers UI shows what each provider serves and edits defaults per role; the launch picker offers only agent providers.

Stacked on #226. Pod specs no longer carry the harness variables from the registry, so dispatch images must run an engine at contract 1.15.0+. Tested with provider/resolution sqlx tests, pod-spec tests for run, turn and grounded-rank pods, a reconcile-driven playbook launch asserting both bindings and keys, API tests for role validation, and the UI unit tests; full controller suite green.

Changelog: Changed: the controller passes models to runs as the CRUCIBLE_INFERENCE document from its provider registry, with agent and decision defaults per scope

The controller projected a resolved provider as harness variables on
the pod (OPENAI_API_KEY, OPENAI_BASE_URL, CRUCIBLE_INFERENCE_WIRE_API),
while the engine already reads one typed document, CRUCIBLE_INFERENCE,
and nothing wrote it. Route tasks need a decision binding, so a
deployed controller could not run one; projecting a decision key the
old way collides with an OpenAI agent's key and lands in agent
sandboxes.

Dispatch defaults now name a role, agent or decision. A decision
default resolves per domain and class like an agent default, is
refused on the autoresearch class, and takes no launch pin. A provider
serves the roles its kind or protocol can: OpenAI serves both (the
Decisions API for decisions, gpt-6-luna by default), Anthropic and
Vertex agents only, and a custom provider whatever its protocol does;
system_one and decisions join the custom protocols.

Every pod dispatch (playbook run, scope and rank turn, grounded rank)
carries CRUCIBLE_INFERENCE with one binding per resolved role, and each
key as a secretKeyRef under CRUCIBLE_INFERENCE_KEY_AGENT or
CRUCIBLE_INFERENCE_KEY_DECISION, which no harness reads. A credentials
map gives up the entry its protocol's clients read as the key; an
agent keeps its other entries, a decision drops them. The local
executor reads no secrets and keeps passing CRUCIBLE_* through.

Migration 0054 adds the role column to dispatch_defaults. The UI shows
what each provider serves and edits defaults per role. ADR-0065.
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown

Docs preview for this PR is built and attached as the docs-preview artifact.

Download docs-preview, unzip, and open index.html in a browser.

Rebuilt for 67abc3b.

@wseaton
wseaton merged commit ac5cf31 into openai-decision Oct 7, 2026
4 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant