Route-Feasibility Evidence Inventory

S0 per-target feasibility: scope, identity class, evidence channel, fan-out and probe budget

Route-Feasibility Evidence Inventory (S0, B-OG-27)

Bounded feasibility evidence for every provider target in the capability matrix and provider registry. Issue roctinam/aiwg#2877; proposal `11-delivery-plan-and-issue-backlog.md` §B-OG-27, `03-software-architecture.md` §10 (scope authority), `07-stewards-and-catalog-freshness.md` and `08-security-and-threat-model.md` (Revision 2 Tier 0).

Method (2026-10-07, host titan): free local discovery only — `--version`, `codex debug models`, Muse model-catalog JSON, checked-in Ralph adapters (`tools/ralph-external/lib/`), model discovery (`src/models/`) and executor registration (`tools/ralph-external/lib/provider-adapter.mjs`). No model calls were made; authorizing a probe budget does not run a probe.

Evidence grades: H = help/version inspected on this host (syntax only); R = checked-in adapter/contract evidence; D = official documentation/source, needs live qualification. No row claims inference, auth, sandbox, tool-list or model qualification from help alone.

Standing rules: help text, flag acceptance and worker echoes do not qualify. Unknown hidden fan-out or data path blocks strict use. No named target is silently dropped. Final qualification stays with B-OG-07/08/09/28 (plus B-OG-36–48 per §10). No target is backend-attested in this pass; every IN row is runtime-configured-only or unavailable, pending S1 qualification.

Alias normalization and non-provider names

Matrix `claude-code` normalizes to registry `claude`; aliases never add providers. `openai` in `src/models/types.ts` is an inference provider, not another harness — it resolves to the `codex` harness target. Bare `grok` names the xAI model/API category, not a provider. `generic` is a registry-only deployment fallback ( nineteenth entry), not an executable provider and not a matrix row. Devin CLI is a nondeployable future surface of `windsurf`, not an alias. Gemini is not a provider and was not added.

Alias / related nameCanonical targetKind
`claude-code`, `claude``claude`alias → provider
`openai``codex` (harness); `openai` (inference)alias → provider; separate inference name
`agy``antigravity`alias → provider
`dsh``deepseek-harness`alias → provider
`oh-my-pi``omp`alias → provider
`pi-coding-agent``pi`alias → provider
`devin`, `devin-desktop`, `devin-local`, `cascade``windsurf`alias → provider
`devin-cli`—future-provider surface, not an alias
`tinyhumansai``openhuman`alias → provider
`github-copilot``copilot`alias → provider
`factory-ai``factory`alias → provider
bare `grok`, `muse-spark`, `spark`, `meta`—not providers
`generic`—registry-only fallback, no matrix row
`openai` (models `Provider`)—inference provider, not a harness

Per-target feasibility

Scope IN/OUT follows 03 §10, as amended by the B-OG-47 recheck below. Every `Budget` except the promoted `openhuman` row is authorized by the operator on 2026-10-07 for titan and noodle, exactly as proposed, as a synthetic probe ceiling (calls / tokens); OUT rechecks retain 1 call / 0 tokens (help/version only, no inference), and generic retains 0 / 0. The `openhuman` live budget is only proposed and needs operator authorization before any probe. No probes were run. Authorization does not establish live qualification, which stays with B-OG-07/08/09/28 (plus B-OG-36–48 per §10). `Owner` is the final-qualification issue.

TargetScopeIdentityEvidence channel and exact limitsHidden fan-out / data pathBudgetOwner
`claude`INruntime-configured-onlyH: `claude -p --output-format stream-json --verbose`; terminal-result extraction; no sandbox flag inferred; `--max-budget-usd` is budget, not step capUnknown: Agent/Task tools, implicit fallback; Ralph adapter currently adds bypass by default so direct profile must differ; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-28
`codex`INruntime-configured-onlyH: `codex debug models` (observed 0.160.1: gpt-6.1-sol/astra/sol, gpt-5.6-sol/terra, 272k ctx, ultra = auto-delegation) + `exec --json -o F` thread/turn/item/error stream; native `mcp-server` not advertised by installed helpUnknown: `ultra` self-delegates outside conductor budget — deny ultra; subagents unqualified; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 50000B-OG-07
`muse`INruntime-configured-onlyH: catalog JSON (observed 1.4.3: muse-spark-1.3 minimal–max, 1M ctx; `-contributor` default is a policy hazard; image model hidden) + `exec --json` invocation-bound session logs; `muse serve` is MSP, not MCP; `--provider echo` is mechanics onlyUnknown: subagent/delegation surface unqualified; contributor default never silently selected; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-08
`hermes`INruntime-configured-onlyH: `hermes -z` plain final + `--usage-file` (observed 0.20.6); session-filtered log binding required, global log growth proves nothing; `-z` auto-bypasses approvals so external sandbox/tool restriction is requiredUnknown: native moa/fallback chains must be disabled/qualified; conversation tools are not worker calls; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-48
`copilot`INruntime-configured-onlyD: `copilot -p --output-format json`; scoped `--allow-tool`, never allow-all; effort via `effortLevel` settings needs isolated profile qualification; agent-definition model may override `--model`Unknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-36
`factory`INruntime-configured-onlyR: `droid exec --output-format stream-json`; existing adapter `--skip-permissions-unsafe` is prohibited in default profiles; effort/autonomy/step controls unqualifiedUnknown (Missions); restricted writing blocked until controls proven; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-37
`cursor`INruntime-configured-onlyD: `agent -p --output-format json` (+`--sandbox enabled`); do not infer `--force` is a sandbox; effort/step caps unknownUnknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-38
`opencode`INruntime-configured-onlyR: `opencode run --format json`; `--variant E` is provider-specific; permissions need a qualified profile, not `--auto`; `serve` is HTTP, not MCPUnknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-39
`warp`INruntime-configured-onlyD: `oz agent run --prompt/--model/--cwd/--profile`; effort/JSON/step caps not established; remote/cloud routes are separateUnknown; qualify Oz as the Warp interface, not a new provider; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-40
`grok-build`INruntime-configured-onlyR: `grok -p --output-format streaming-json`; headless options lack explicit model/effort — extend before enablement; ACP adapter is not MCPUnknown: `--no-subagents` is flag evidence only; version-scoped behavioral evidence with model/effort pinning must prove child control; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-41
`openclaw`INruntime-configured-onlyD: `openclaw agent exec --json`; workspace/settings mapping, effort/step controls need live qualification; never add `--fallback`; gateway path is distinctUnknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-42
`antigravity`INruntime-configured-onlyR: `agy -p` stream-json per provider-contract; fixture-qualified flags only; soft tool denials may coexist with exit zero; never add `--dangerously-skip-permissions`Unknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-43
`deepseek-harness`INruntime-configured-onlyR: `dsh --profile headless` + validated Cordis route patch (model/effort live in the patch, no guessed `--model` flag); `DSH_PERMISSION_MODE=workspace-write`, telemetry disabledUnknown: enforcement/child control and terminal parsing unqualified; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-44
`pi`INruntime-configured-onlyR: `pi --mode json --model/--thinking/--tools`; `--no-approve` is a safety hazard needing explicit semantics; no budget/max-turn controls; JSON mode has no stdin abortUnknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-45
`omp`INruntime-configured-onlyR: `omp --mode json --model/--thinking/--profile`; `--no-tools` for text-only; no max-turn flag assumed; do not assume Pi parser/flags are identicalUnknown; blocks strict useauthorized (operator, 2026-10-07; titan, noodle): 3 / 30000B-OG-45
`local` (ollama / llama-server / OpenAI-compatible)INunavailableH: ollama 0.33.3 and llama-server installed but not running — stopped endpoint excluded without startup; bounded HTTP (`/api/generate` or equivalent), exact model in request body, effort null when unsupported; required profile: text-only roles and no cloud transfer (unproven)Unknown fan-out and processing: endpoint ownership, upstream forwarding/redirects, cloud fallback, tools, telemetry and enforced egress controls unresolved; local-only whole path unproven; blocks strict use. Required: disable cloud inference/tools/telemetry and enforce egress; never start servers, download weights, or kill a shared server to cancel one request; health ≤60s old per 07authorized (operator, 2026-10-07; titan, noodle): 2 / 20000B-OG-09
`windsurf`OUTunavailableR: no verified headless Desktop worker command; IDE startup is not inference; MCP client config is not worker servingUnknown; recheck B-OG-47 before any scope changeauthorized (operator, 2026-10-07; titan, noodle): 1 / 0B-OG-47
`grokbot`OUTunavailableR: desktop CreateAgent/registered-machine capabilities establish no headless subprocess contract; connectors consume toolsUnknown; recheck B-OG-47authorized (operator, 2026-10-07; titan, noodle): 1 / 0B-OG-47
`openhuman`IN (promoted by B-OG-47, 2026-10-08)runtime-configured-onlyD: `openhuman-core --model M call --method openhuman.agent_chat --params-stdin` (in-process one-shot agent turn; conductor-framed params `message`, `model_override`, `cwd` on stdin until EOF; final JSON on stdout, no event stream); native `openhuman-core mcp` `agent.run_subagent` has no model/effort/workspace pin and is not a worker toolUnknown: the orchestrator may spawn subagents (depth-capped only); effort, step-cap and approval/sandbox mapping unknown; blocks strict useproposed (operator authorization required): 3 / 30000B-OG-47
`generic`OUTunavailableRegistry-only fallback, no binary or flags; custom adapters remain extensible through the existing factoryN/A — not an executable routeauthorized (operator, 2026-10-07; titan, noodle): 0 / 0—

Machine-readable scope/identity/channel/fan-out/budget rows for the 18 matrix providers live in `agentic/code/providers/capability-matrix.yaml` (`route_feasibility`, typed via `getRouteFeasibility` in `src/providers/capability-matrix.ts`). `generic` and `local` are registry/docs-only rows by design: `generic` has no matrix entry and local endpoints are ordinary members, not registry providers.

S1 coverage reconciliation (B-OG-47)

Issue roctinam/aiwg#2911. One normalized row per provider-registry entry (canonical ids only; aliases never add rows) plus the ordinary `local` member. `Profile issue` is the S1 qualification issue for IN rows. `Evidence date` is the date the row's cited sources were last checked; `Live` is authenticated, version/account/profile-scoped qualification, which no row has yet: help/version output, documentation and synthetic fixtures never set it. Doc-only (D) rows therefore stay unqualified. Machine-readable values live in `route_feasibility.coverage` of `agentic/code/providers/capability-matrix.yaml` and are checked by `test/conformance/orchestration-v1/provider-coverage.test.ts`.

Upstream recheck performed 2026-10-08 with web access and local `--version`/`--help` only (no prompts or model calls): Claude 2.1.295, Codex 0.161.0 (`codex mcp-server --help` still prints root help, so native MCP stays version-blocked) and Muse 1.4.4 on titan; the doc-only Copilot, Cursor, Warp/Oz and OpenClaw references still document the cited flags; the three excluded hosted rows were rechecked as recorded below.

TargetScopeProfile issueEvidence dateLiveSources and recheck result
`claude`INroctinam/aiwg#29002026-10-08noH: installed help 2.1.295; `claude-adapter.mjs`
`codex`INroctinam/aiwg#28972026-10-08noH: installed help 0.161.0; native `mcp-server` still not advertised
`copilot`INroctinam/aiwg#29012026-10-08noD: programmatic reference still documents `-p`, `--model`, `--no-ask-user`, `--output-format=json`, `--allow-tool`
`factory`INroctinam/aiwg#29022026-10-07noR: `factory-adapter.mjs`
`cursor`INroctinam/aiwg#29032026-10-08noD: CLI overview and output format document `-p`, `--model`, `--sandbox`, `json`/`stream-json`
`opencode`INroctinam/aiwg#29042026-10-07noR/D: `opencode-adapter.mjs`; OpenCode CLI
`warp`INroctinam/aiwg#29052026-10-08noD: Oz CLI documents `oz agent run --prompt`, `--model`, `-C/--cwd`, `--profile`
`grok-build`INroctinam/aiwg#29062026-10-07noR: `grok-build-headless.ts`
`hermes`INroctinam/aiwg#29122026-10-07noH: installed help 0.20.6 (not rechecked in this pass)
`muse`INroctinam/aiwg#28982026-10-08noH: installed help 1.4.4 (1.4.4-R5419.1); `muse-adapter.mjs`
`openclaw`INroctinam/aiwg#29072026-10-08noD: agent reference documents `agent exec`, `--model`, `--cwd`, `--json`; explicit `--fallback` remains prohibited
`antigravity`INroctinam/aiwg#29082026-10-07noR/D: `provider-contract.v1.json`; headless reference
`deepseek-harness`INroctinam/aiwg#29092026-10-07noR: `deepseek-harness-adapter.mjs`
`pi`INroctinam/aiwg#29102026-10-07noR: `pi-adapter.mjs`
`omp`INroctinam/aiwg#29102026-10-07noR: `omp-adapter.mjs`
`openhuman`INroctinam/aiwg#29112026-10-08noD: promoted. Source at 216ea32 and release v0.64.14 (standalone `openhuman-core` asset) evidence `--model` and `call --method openhuman.agent_chat --params`/`--params-stdin`; `agent` subcommands still only inspect prompts; native MCP `agent.run_subagent` has no model pin
`local`INroctinam/aiwg#28992026-10-07noH: ollama/llama-server installed, endpoint not started
`windsurf`OUT—2026-10-08noGap: Devin Desktop documents no headless worker command or worker-serving MCP tool. Recheck: unchanged; Devin CLI has `-p/--print`, `--model`, `--prompt-file` but stays a distinct future provider until registry support exists
`grokbot`OUT—2026-10-08noGap: Bots run on xAI-hosted computers from desktop/mobile chat, routines and connectors; no local CLI, headless subprocess or worker MCP tool. Recheck: unchanged per Grok Bot docs
`generic`OUT—2026-10-07noRegistry-only deployment fallback with no binary, flags or upstream interface to recheck

Promotion consequence: OpenHuman joins S1 under this issue with an inert, unqualified `workerHealthAdapter` pinned to 0.64.14 (degraded, process-only, final-JSON; every control `unqualified` with its evidenced mapping), the driver `tools/ralph-external/lib/openhuman-adapter.mjs` (installed-module shape, approved as `installed:openhuman` by the pinned digest in `test/fixtures/providers/openhuman/approved-module.json`), and a synthetic `openhuman-core` under `test/fixtures/providers/openhuman/` that `test/conformance/orchestration-v1/openhuman-direct.test.ts` loads through the production installed-module loader, renders through the real resolver/renderer and runs through the attached launcher (T-OG-15/20/21/23, fixture-only). The profile uses `--params-stdin`, which reads stdin to EOF (`crates/openhuman-core/src/core/cli.rs:445-468` at 216ea32); `stdin: brief-json` makes the conductor frame the params document from the brief (`src/serve/worker-stdin-frame.mjs`), so brief text never enters argv, unit properties or run metadata. Open S1 blocker: authorized live qualification; `openhuman-core` is not installed on titan or noodle and the probe budget stays proposed. Until then it cannot dispatch.

Source anchors used

Ralph adapters: `codex-adapter.mjs:74`, `muse-adapter.mjs:125`, `claude-adapter.mjs:50`, `factory-adapter.mjs:69`, `opencode-adapter.mjs:81`, `pi-adapter.mjs:45`, `omp-adapter.mjs:12`, `deepseek-harness-adapter.mjs:17`, factory `provider-adapter.mjs:95` (registration) and `:228` (local transport). Model discovery: `src/models/model-discovery.ts`, `src/models/provider-policy.ts:107` (`openai` excluded from harness policy), `src/cli/handlers/models.ts:37. Executor/control evidence: adapter `getCapabilities`/`buildSessionArgs` plus 03 §11.3 health extension columns.

Findings for the conductor

1. `src/cli/handlers/models.ts:37` omits `muse` from its provider set despite the registry entry — consumer mismatch already noted in 03 §10; fix belongs to S1 (B-OG-02/04), recorded here, not changed in this pass. 2. Codex `ultra` ("automatic task delegation") and Hermes native moa/fallback are evidenced hidden fan-out: deny or externally bound before any strict use. 3. Codex ships a stale-default hazard (hidden gpt-5.5 remains the config default) and Muse a contributor-default policy hazard: S1 profiles must pass model and effort explicitly, resolved from policy. 4. No backend-attested identity exists for any target in this pass; backend attestation, where possible, is S1 qualification work.

Open questions

  • Who records the version/account/profile scope of each paid probe during

S1 live qualification on the authorized hosts titan and noodle?

  • Should the OUT recheck budgets (1 call / 0 tokens, help/version only)

also cover a fake-MCP `tools/list` pin where a native server is claimed?