docs: design note — harness fuel as an axis distinct from substrate - #2147
Open
mellanon wants to merge 1 commit into
Open
docs: design note — harness fuel as an axis distinct from substrate#2147mellanon wants to merge 1 commit into
mellanon wants to merge 1 commit into
Conversation
Captures the analysis that inferenceProfile is scoped to one substrate, so cortex cannot express "full harness + cheaper fuel" — the combination that reaches the expensive (coding-agent) workload. Verified against Claude Code docs: base-URL override, auth precedence, model selection and cloud backends are all documented and separable. Two findings narrow the idea: subscription OAuth cannot target a non-Anthropic endpoint, and subscription plans appear to bar unattended automation (LOW confidence sourcing — flagged for confirmation, not asserted). Surfaces a pre-existing compliance question independent of epic #2055. Refs #2055
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #2055. Design note — proposal, not implementation. No code changes.
Captures architectural analysis from the Phase 0/1 retrospective that would otherwise have stayed in a chat log.
The argument
Cortex models three axes (execution / substrate / inference profile), but
inferenceProfileis scoped to exactly one substrate — only theapi-agentbranch ofHarnessResolverconsumes it. That welds together two independent things: harness capability and fuel.Consequence: you can express "bare harness + metered API". You cannot express "full harness + cheaper fuel."
That matters because
ApiAgentHarnessis text-only with no tools by design (D5) — so it structurally cannot serve the expensive workload. Token spend lives in coding agents (long tool loops, big contexts). We built cost/sovereignty control for the cheap tail and cannot reach the costly one. The lever that would matter is the full Claude Code harness on cheaper fuel.What was verified (and what it killed)
Checked against Claude Code docs rather than recollection. Confirmed: base-URL override (
ANTHROPIC_BASE_URL+ custom headers), a documented auth precedence chain, model selection, and Bedrock/Vertex/Foundry as first-class backends — harness and fuel are separable.Killed half the idea:
Cortex's dispatch path is an unattended fleet — so "subscription vs on-demand" isn't a dispatch-path choice at all. The note reframes the axis around attended vs unattended paths.
Also surfaces a pre-existing compliance question (not introduced by #2055)
ClaudeCodeHarnessspawnsclaude --printunattended. If those subprocesses inherit a machine's interactive OAuth subscription, that is the pattern the terms appear to bar — today, independent of this epic. Tracked separately.Proposal
Fuel as a property any harness declares support for; next increment =
claude-codeconsumes aninferenceProfile, translating a resolved profile → subprocess env.ClaudeCodeHarnessalready ownsDispatchRequest→CCSessionOpts, so this is in its remit.The Phase 0 work is the prerequisite, not a detour:
inference.profilesalready describes fuel for any harness; the registry already resolves profile → concrete thing (aModelProviderfor api-agent; env vars for claude-code);HarnessResolveris the injection point.Risks recorded honestly: non-Anthropic tool-use fidelity behind a translating proxy is undocumented and may degrade silently (cheap fuel is not free — needs per-model evidence); fuel is a lattice with holes, not a clean product.
Decisions F1–F5 recorded, plus 5 open questions.
🤖 Generated with Claude Code