@aiwg/cli 2026.10.1 → 2026.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/agentic/code/providers/capability-matrix.yaml +270 -0
- package/agentic/code/providers/model-capabilities.v1.json +3183 -24
- package/bin/aiwg.mjs +135 -47
- package/dist/src/a2a/codecs.js +9 -0
- package/dist/src/agents/grounding/knowledge-base.js +54 -6
- package/dist/src/artifacts/browser-export.js +6 -0
- package/dist/src/artifacts/checksum-manifest.js +1 -0
- package/dist/src/artifacts/citation-parser.js +173 -92
- package/dist/src/artifacts/citation-table-schema.js +59 -0
- package/dist/src/artifacts/cli.js +57 -18
- package/dist/src/artifacts/corpus-tools/snapshot.js +1 -1
- package/dist/src/artifacts/corpus-tools/vision-extract.js +107 -15
- package/dist/src/artifacts/corpus-views/ref-parser.js +3 -1
- package/dist/src/artifacts/corpus-views/renderers.js +3 -3
- package/dist/src/artifacts/discovery-eval.js +6 -4
- package/dist/src/artifacts/fortemi-core-query-adapter.js +36 -3
- package/dist/src/artifacts/fortemi-core-sync.js +166 -40
- package/dist/src/artifacts/framework-capabilities.js +171 -0
- package/dist/src/artifacts/framework-index-paths.js +73 -0
- package/dist/src/artifacts/framework-source-digest.js +75 -0
- package/dist/src/artifacts/index-builder.js +285 -131
- package/dist/src/artifacts/index-files.js +132 -18
- package/dist/src/artifacts/index-preparation.js +65 -0
- package/dist/src/artifacts/index-refresh.js +576 -0
- package/dist/src/artifacts/index-worker.mjs +9 -0
- package/dist/src/artifacts/prebuilt-build-lock.js +47 -4
- package/dist/src/artifacts/prebuilt-deployment.js +46 -0
- package/dist/src/artifacts/prebuilt-relations.js +80 -0
- package/dist/src/artifacts/query-engine.js +410 -88
- package/dist/src/artifacts/relations-builder.js +168 -0
- package/dist/src/artifacts/relations.js +148 -0
- package/dist/src/artifacts/repair.js +9 -4
- package/dist/src/artifacts/stats.js +5 -2
- package/dist/src/artifacts/types.js +30 -10
- package/dist/src/artifacts/watcher.js +1 -1
- package/dist/src/auth/credential-store.js +2 -1
- package/dist/src/catalog/cli.d.mts +5 -0
- package/dist/src/channel/manager.d.mts +20 -0
- package/dist/src/channel/manager.mjs +78 -12
- package/dist/src/cli/child-process-result.js +40 -0
- package/dist/src/cli/command-log.js +2 -3
- package/dist/src/cli/env.js +38 -16
- package/dist/src/cli/flag-parsing.js +236 -0
- package/dist/src/cli/handlers/artifacts.js +3 -0
- package/dist/src/cli/handlers/auth.js +3 -0
- package/dist/src/cli/handlers/decision.js +218 -5
- package/dist/src/cli/handlers/diagnose.js +13 -5
- package/dist/src/cli/handlers/effect.js +4 -2
- package/dist/src/cli/handlers/evidence.js +3 -0
- package/dist/src/cli/handlers/feedback.js +14 -5
- package/dist/src/cli/handlers/help.js +1 -0
- package/dist/src/cli/handlers/index.js +3 -1
- package/dist/src/cli/handlers/init.js +248 -30
- package/dist/src/cli/handlers/lint.js +5 -0
- package/dist/src/cli/handlers/mc.js +23 -0
- package/dist/src/cli/handlers/models.js +169 -10
- package/dist/src/cli/handlers/ralph-launcher.js +2 -0
- package/dist/src/cli/handlers/ralph.js +3 -0
- package/dist/src/cli/handlers/refresh.js +28 -0
- package/dist/src/cli/handlers/regenerate.js +14 -0
- package/dist/src/cli/handlers/resource-versions.js +3 -0
- package/dist/src/cli/handlers/rules.js +195 -0
- package/dist/src/cli/handlers/run.js +4 -0
- package/dist/src/cli/handlers/runtime-info.js +25 -11
- package/dist/src/cli/handlers/script-runner.js +19 -8
- package/dist/src/cli/handlers/session.js +406 -62
- package/dist/src/cli/handlers/sessions.js +243 -76
- package/dist/src/cli/handlers/setup-manifest.js +474 -79
- package/dist/src/cli/handlers/setup.js +180 -39
- package/dist/src/cli/handlers/steward.js +11 -0
- package/dist/src/cli/handlers/subcommands.js +60 -3
- package/dist/src/cli/handlers/team.js +18 -8
- package/dist/src/cli/handlers/uhp.js +3 -0
- package/dist/src/cli/handlers/use.js +307 -55
- package/dist/src/cli/handlers/utilities.js +125 -26
- package/dist/src/cli/handlers/version.js +8 -0
- package/dist/src/cli/prompt-utils.js +72 -0
- package/dist/src/cli/provider-resolution.js +11 -0
- package/dist/src/cli/router.js +15 -1
- package/dist/src/cli/services/deployment-verification.js +19 -9
- package/dist/src/cli/services/provider-prepare-coordinator.js +24 -0
- package/dist/src/cli/skill-usage.js +2 -3
- package/dist/src/config/aiwg-config.js +349 -35
- package/dist/src/config/cli.js +256 -23
- package/dist/src/config/decision-config.js +106 -0
- package/dist/src/config/dispatch-thresholds-runtime.d.mts +8 -0
- package/dist/src/config/dispatch-thresholds-runtime.mjs +38 -0
- package/dist/src/config/gitignore.js +50 -0
- package/dist/src/config/index-graph-overrides.js +36 -0
- package/dist/src/config/project-artifacts-health.d.mts +37 -0
- package/dist/src/config/project-artifacts-health.mjs +14 -3
- package/dist/src/config/project-artifacts-runtime.d.mts +16 -0
- package/dist/src/config/user-config-dir.d.mts +9 -0
- package/dist/src/config/user-config.js +38 -11
- package/dist/src/config/user-registry.js +23 -15
- package/dist/src/config/user-state.js +7 -0
- package/dist/src/decision/adapters/jev.js +75 -27
- package/dist/src/decision/ask.js +203 -43
- package/dist/src/decision/context-live-qualification.js +2 -2
- package/dist/src/decision/driver.js +14 -7
- package/dist/src/decision/ensemble/aggregate.js +23 -10
- package/dist/src/decision/ensemble-study/multifact-study.js +6 -2
- package/dist/src/decision/entry.js +25 -6
- package/dist/src/decision/graph-live-qualification.js +1 -1
- package/dist/src/decision/graph-run.js +9 -0
- package/dist/src/decision/heldout/collector.js +15 -14
- package/dist/src/decision/heldout/contract.js +30 -7
- package/dist/src/decision/index.js +1 -0
- package/dist/src/decision/interop.js +60 -8
- package/dist/src/decision/jev-credentials.js +15 -1
- package/dist/src/decision/ledger.js +942 -0
- package/dist/src/decision/offload-activation.js +137 -0
- package/dist/src/decision/offload.js +550 -0
- package/dist/src/decision/qualification/load.js +4 -6
- package/dist/src/decision/savings.js +28 -0
- package/dist/src/decision/validate.js +6 -3
- package/dist/src/effects/dispatch-verifier.js +252 -0
- package/dist/src/effects/index.js +1 -0
- package/dist/src/effects/types.js +5 -1
- package/dist/src/effects/verifiers/git.js +2 -1
- package/dist/src/effects/verifiers/tracker.js +26 -14
- package/dist/src/extensions/commands/definitions.js +19 -0
- package/dist/src/extensions/project-local-remove.js +36 -1
- package/dist/src/features/installer.js +2 -2
- package/dist/src/flow/graph-metadata.js +5 -0
- package/dist/src/gates/providers/loader.js +64 -18
- package/dist/src/installation/manager-command.d.mts +18 -0
- package/dist/src/installation/manager-command.mjs +15 -3
- package/dist/src/installation/manager.d.mts +49 -0
- package/dist/src/installation/manager.mjs +95 -5
- package/dist/src/issues/cli.js +4 -4
- package/dist/src/issues/local.js +24 -5
- package/dist/src/jobs/runner.js +1 -1
- package/dist/src/lint/cli.js +27 -1
- package/dist/src/lint/loader.js +2 -1
- package/dist/src/lint/reporters.js +25 -1
- package/dist/src/lint/rule-activation.js +43 -0
- package/dist/src/lint/runner.js +137 -62
- package/dist/src/mcp/adapters/codex-runtime.js +366 -56
- package/dist/src/mcp/claude-install.d.mts +4 -0
- package/dist/src/mcp/claude-install.mjs +41 -0
- package/dist/src/mcp/cli.d.mts +1 -0
- package/dist/src/mcp/cli.mjs +620 -85
- package/dist/src/mcp/config-file.d.mts +28 -0
- package/dist/src/mcp/config-file.mjs +279 -0
- package/dist/src/mcp/config-layers.d.mts +36 -0
- package/dist/src/mcp/config-layers.mjs +348 -0
- package/dist/src/mcp/credentials.d.mts +51 -0
- package/dist/src/mcp/credentials.mjs +484 -0
- package/dist/src/mcp/grok-build-config.d.mts +6 -0
- package/dist/src/mcp/grok-build-config.mjs +17 -27
- package/dist/src/mcp/helpers.mjs +109 -4
- package/dist/src/mcp/muse-native-config.d.mts +13 -0
- package/dist/src/mcp/muse-native-config.mjs +1 -0
- package/dist/src/mcp/omp-config.d.mts +4 -0
- package/dist/src/mcp/omp-config.mjs +50 -29
- package/dist/src/mcp/profiles.js +97 -23
- package/dist/src/mcp/profiles.mjs +99 -27
- package/dist/src/mcp/registry.js +248 -131
- package/dist/src/mcp/registry.mjs +169 -100
- package/dist/src/mcp/server-config.d.mts +3 -0
- package/dist/src/mcp/server-config.mjs +89 -0
- package/dist/src/mcp/server.mjs +127 -82
- package/dist/src/mcp/test-simple.mjs +2 -1
- package/dist/src/mcp/toml-editor.d.mts +4 -0
- package/dist/src/mcp/toml-string.d.mts +1 -0
- package/dist/src/mcp/toml-string.mjs +9 -0
- package/dist/src/mcp/toml-strip-mcp.d.mts +1 -0
- package/dist/src/mcp/toml-strip-mcp.mjs +135 -0
- package/dist/src/mcp/tool-filters.d.mts +46 -0
- package/dist/src/mcp/tool-filters.mjs +357 -0
- package/dist/src/mcp/tools/agentic-sandbox.mjs +3 -1
- package/dist/src/mcp/tools/decision.mjs +22 -3
- package/dist/src/mcp/tools/discovery.mjs +62 -55
- package/dist/src/mcp/tools/orchestration.mjs +50 -2
- package/dist/src/mcp/tools/subsystems.mjs +39 -8
- package/dist/src/mcp/tools/worker-invoke.mjs +2856 -0
- package/dist/src/mcp/tools/worker-shell-control.mjs +289 -0
- package/dist/src/mcp/tools/worker-stdin-runtime.mjs +79 -0
- package/dist/src/memory/project-registry.js +2 -2
- package/dist/src/mission-protocol/codecs.js +647 -1
- package/dist/src/mission-protocol/types.js +110 -0
- package/dist/src/mission-protocol/worker-status.js +2 -0
- package/dist/src/models/config-loader.js +76 -14
- package/dist/src/models/grok-build-models.js +93 -41
- package/dist/src/models/model-capabilities.v1.json +3183 -24
- package/dist/src/models/model-discovery.js +931 -67
- package/dist/src/models/provider-policy.js +719 -11
- package/dist/src/models/qualification-digest.d.mts +2 -0
- package/dist/src/models/qualification-digest.mjs +17 -0
- package/dist/src/models/resolver.js +261 -0
- package/dist/src/models/worker-direct-readiness.js +550 -0
- package/dist/src/models/worker-dispatch-offer.js +169 -0
- package/dist/src/models/worker-health-readiness.js +144 -0
- package/dist/src/models/worker-installation.d.mts +39 -0
- package/dist/src/models/worker-installation.mjs +986 -0
- package/dist/src/models/wrapper-route.js +18 -0
- package/dist/src/ops/registry.js +9 -14
- package/dist/src/plugins/standalone-packager.js +4 -3
- package/dist/src/process/bounded-child-process.d.mts +84 -0
- package/dist/src/process/bounded-child-process.mjs +430 -0
- package/dist/src/process/cli-command.d.mts +16 -0
- package/dist/src/process/cli-command.mjs +75 -0
- package/dist/src/process/signal-child.d.mts +6 -0
- package/dist/src/process/signal-child.mjs +7 -0
- package/dist/src/providers/capability-matrix.js +8 -0
- package/dist/src/providers/capability-matrix.yaml +270 -0
- package/dist/src/providers/deployed-skill-roots.js +20 -0
- package/dist/src/providers/grok-build-acp.js +3 -2
- package/dist/src/providers/grok-build-headless.js +53 -23
- package/dist/src/providers/grok-build-inspect.js +1 -0
- package/dist/src/providers/omp-agent.d.mts +8 -0
- package/dist/src/providers/omp-diagnostics.d.mts +1 -0
- package/dist/src/providers/omp-paths.d.mts +13 -0
- package/dist/src/providers/provider-definitions.js +9 -1
- package/dist/src/providers/provider-definitions.mjs +9 -2
- package/dist/src/providers/skill-ownership.d.mts +9 -0
- package/dist/src/providers/skill-ownership.mjs +88 -0
- package/dist/src/rules/activation.d.mts +21 -0
- package/dist/src/rules/activation.mjs +62 -0
- package/dist/src/rules/inline-budget.d.mts +26 -0
- package/dist/src/rules/inline-budget.mjs +66 -0
- package/dist/src/rules/inventory.js +129 -0
- package/dist/src/rules/pin-state.js +73 -0
- package/dist/src/rules/pins.d.mts +14 -0
- package/dist/src/rules/pins.mjs +112 -0
- package/dist/src/rules/rule-frontmatter.schema.json +197 -0
- package/dist/src/serve/executor-registry.js +16 -24
- package/dist/src/serve/fleet-mission-conductor.js +9 -0
- package/dist/src/serve/mission-conductor.js +47 -12
- package/dist/src/serve/shared-host-scheduler.js +2 -0
- package/dist/src/serve/worker-invocation.js +558 -0
- package/dist/src/serve/worker-stdin-frame.d.mts +10 -0
- package/dist/src/serve/worker-stdin-frame.mjs +107 -0
- package/dist/src/sessions/adapter-registry.js +49 -0
- package/dist/src/sessions/adapters/claude.js +39 -54
- package/dist/src/sessions/adapters/codex.js +82 -67
- package/dist/src/sessions/adapters/copilot.js +4 -4
- package/dist/src/sessions/adapters/cursor.js +40 -57
- package/dist/src/sessions/adapters/deepseek-harness.js +15 -12
- package/dist/src/sessions/adapters/factory.js +31 -27
- package/dist/src/sessions/adapters/generic.js +43 -9
- package/dist/src/sessions/adapters/grok-build.js +11 -11
- package/dist/src/sessions/adapters/grokbot-locator.js +111 -0
- package/dist/src/sessions/adapters/grokbot.js +434 -24
- package/dist/src/sessions/adapters/hermes.js +27 -29
- package/dist/src/sessions/adapters/muse-workspace-scan.js +128 -0
- package/dist/src/sessions/adapters/muse.js +200 -104
- package/dist/src/sessions/adapters/omp.js +28 -14
- package/dist/src/sessions/adapters/openclaw.js +89 -79
- package/dist/src/sessions/adapters/opencode.js +27 -24
- package/dist/src/sessions/adapters/openhuman.js +18 -60
- package/dist/src/sessions/adapters/pi.js +30 -14
- package/dist/src/sessions/adapters/warp.js +3 -3
- package/dist/src/sessions/adapters/windsurf.js +19 -48
- package/dist/src/sessions/batch-contracts.js +25 -5
- package/dist/src/sessions/batch-import.js +72 -51
- package/dist/src/sessions/candidates.js +47 -11
- package/dist/src/sessions/contracts.js +75 -2
- package/dist/src/sessions/coverage-preflight.js +134 -0
- package/dist/src/sessions/discovery.js +3 -0
- package/dist/src/sessions/export-plan.js +4 -3
- package/dist/src/sessions/grok-build-cli.js +67 -5
- package/dist/src/sessions/import-exclusions.js +72 -0
- package/dist/src/sessions/import-lease.js +34 -18
- package/dist/src/sessions/import-limits.js +37 -0
- package/dist/src/sessions/importer.js +84 -46
- package/dist/src/sessions/index.js +2 -0
- package/dist/src/sessions/lifecycle.js +45 -0
- package/dist/src/sessions/policy.js +133 -25
- package/dist/src/sessions/readers.js +106 -53
- package/dist/src/sessions/refresh.js +106 -0
- package/dist/src/sessions/repository.js +199 -63
- package/dist/src/sessions/workspace-discovery.js +315 -88
- package/dist/src/sessions/workspace-matching.js +107 -0
- package/dist/src/skills/adapters/clawhub.js +10 -8
- package/dist/src/skills/adapters/openclaw.js +10 -7
- package/dist/src/skills/importer.js +1 -0
- package/dist/src/smiths/context-pipeline/aiwg-md.js +11 -0
- package/dist/src/smiths/context-pipeline/claude-hook.js +3 -26
- package/dist/src/smiths/context-pipeline/finalization.js +6 -5
- package/dist/src/smiths/context-pipeline/generator.js +21 -4
- package/dist/src/smiths/context-pipeline/parallelism-section.js +195 -14
- package/dist/src/smiths/context-pipeline/workspace-context.js +116 -9
- package/dist/src/smiths/hook-bridge/codex-translator.js +6 -5
- package/dist/src/smiths/mcpsmith/example.js +1 -1
- package/dist/src/smiths/mcpsmith/generator.js +1 -1
- package/dist/src/smiths/toolsmith/runtime-discovery.d.mts +10 -0
- package/dist/src/smiths/toolsmith/runtime-discovery.mjs +85 -31
- package/dist/src/storage/backends/fs.js +18 -76
- package/dist/src/storage/backends/logseq.js +68 -7
- package/dist/src/storage/backends/obsidian.js +1 -0
- package/dist/src/storage/fortemi-qualification-receipt.js +2 -2
- package/dist/src/testing/generators/test-code-generator.js +57 -30
- package/dist/src/tracker/forge-http.js +2 -1
- package/dist/src/uhp/client.js +11 -1
- package/dist/src/uhp/mission.js +5 -0
- package/dist/src/update/checker.d.mts +2 -0
- package/dist/src/update/checker.mjs +5 -5
- package/dist/src/update/notifier.mjs +54 -2
- package/dist/src/update/service.d.mts +22 -0
- package/dist/src/utils/contained-filesystem.d.mts +37 -0
- package/dist/src/utils/contained-filesystem.mjs +683 -0
- package/dist/src/utils/temporary-directory.js +36 -0
- package/dist/src/writing/example-generator.js +1 -1
- package/dist/src/writing/fidelity.js +18 -1
- package/package.json +32 -2
- package/schemas/mission-v1.schema.json +2429 -0
- package/schemas/models/model-catalog.v1.schema.json +301 -0
- package/schemas/models/model-config-compatibility.v1.schema.json +281 -0
- package/schemas/models/model-policy.v1.schema.json +14 -0
- package/schemas/models/provider-model-capabilities.v1.schema.json +1072 -0
- package/tools/_resolve-impl.mjs +39 -2
- package/tools/agents/deploy-agents.mjs +64 -23
- package/tools/agents/providers/base.mjs +153 -166
- package/tools/agents/providers/claude.mjs +8 -24
- package/tools/agents/providers/codex.mjs +18 -11
- package/tools/agents/providers/cursor.mjs +19 -18
- package/tools/agents/providers/grok-build.mjs +3 -1
- package/tools/agents/providers/grokbot.mjs +11 -12
- package/tools/agents/providers/hermes.mjs +62 -49
- package/tools/agents/providers/omp.mjs +5 -2
- package/tools/agents/providers/openclaw-translator.mjs +19 -5
- package/tools/agents/providers/openclaw.mjs +9 -4
- package/tools/agents/providers/pi.mjs +5 -0
- package/tools/agents/providers/provider-prepare-channel.mjs +5 -0
- package/tools/agents/providers/provider-prepare-coordinator.mjs +247 -0
- package/tools/agents/providers/provider-prepare-worker.mjs +84 -0
- package/tools/agents/providers/rule-delivery.mjs +1270 -0
- package/tools/agents/providers/warp.mjs +20 -26
- package/tools/cli/decision-offload-report.mjs +40 -0
- package/tools/cli/workspace-status.mjs +862 -0
- package/tools/plugin/package-plugins.mjs +186 -8
- package/tools/plugin/plugin-links.mjs +114 -0
- package/tools/providers/antigravity-transport.mjs +3 -1
- package/tools/providers/deepseek-harness-transport.mjs +360 -0
- package/tools/providers/omp-transport.mjs +194 -0
- package/tools/ralph-external/lib/claude-adapter.mjs +389 -0
- package/tools/ralph-external/lib/codex-adapter.mjs +432 -0
- package/tools/ralph-external/lib/consecutive-failure-circuit-breaker.mjs +1748 -0
- package/tools/ralph-external/lib/deepseek-harness-adapter.mjs +397 -0
- package/tools/ralph-external/lib/factory-adapter.mjs +503 -0
- package/tools/ralph-external/lib/launcher-recovery-evidence.mjs +55 -0
- package/tools/ralph-external/lib/muse-adapter.mjs +364 -0
- package/tools/ralph-external/lib/omp-adapter.mjs +315 -0
- package/tools/ralph-external/lib/opencode-adapter.mjs +575 -0
- package/tools/ralph-external/lib/openhuman-adapter.mjs +75 -0
- package/tools/ralph-external/lib/pi-adapter.mjs +329 -0
- package/tools/ralph-external/lib/provider-adapter.mjs +748 -0
- package/tools/ralph-external/lib/recovery-probe.mjs +72 -0
- package/tools/ralph-external/lib/session-environment.mjs +28 -0
- package/tools/ralph-external/lib/systemd-client.mjs +49 -0
- package/tools/ralph-external/lib/worker-health.mjs +439 -0
- package/tools/ralph-external/lib/worker-isolation.mjs +717 -0
- package/tools/ralph-external/lib/worker-overflow.mjs +50 -0
- package/tools/ralph-external/process-monitor.mjs +1017 -0
- package/tools/ralph-external/session-launcher.mjs +5057 -0
- package/tools/scripts/resource-preflight.mjs +541 -0
- package/tools/skills/deploy-skills-codex.mjs +2 -1
- package/vscode-extension/schemas/aiwg.config.v1.json +2916 -0
|
@@ -7,21 +7,229 @@
|
|
|
7
7
|
"agent": "native",
|
|
8
8
|
"skill": "native",
|
|
9
9
|
"globalChild": "inherited",
|
|
10
|
-
"identifierSyntax": "model identifier accepted by Antigravity CLI 1.
|
|
10
|
+
"identifierSyntax": "model identifier accepted by Antigravity CLI 1.3.3 --model",
|
|
11
11
|
"effortValues": [
|
|
12
12
|
"low",
|
|
13
13
|
"medium",
|
|
14
|
-
"high"
|
|
14
|
+
"high",
|
|
15
|
+
"xhigh",
|
|
16
|
+
"max"
|
|
15
17
|
],
|
|
16
18
|
"inheritance": "Omitted model and effort inherit the invoking Antigravity session",
|
|
17
19
|
"invalidPinFallback": "Provider validation/error; never assume fallback",
|
|
18
20
|
"configTarget": "agy launch arguments; custom-agent model tiers are not projected from generic AIWG model ids",
|
|
19
21
|
"artifactFormat": "YAML frontmatter plus Markdown; runtime --model and --effort flags",
|
|
20
|
-
"verification": "Pinned offline contract; authenticated model selection was not executed",
|
|
22
|
+
"verification": "Pinned offline contract (--help/--version only); authenticated model selection was not executed",
|
|
21
23
|
"sourceUrl": "https://antigravity.google/docs/cli/subagents/",
|
|
22
|
-
"verifiedAt": "2026-09-04"
|
|
24
|
+
"verifiedAt": "2026-09-04",
|
|
25
|
+
"workerHealthAdapter": {
|
|
26
|
+
"version": 1,
|
|
27
|
+
"id": "antigravity",
|
|
28
|
+
"provider": "antigravity",
|
|
29
|
+
"adapterVersion": "1",
|
|
30
|
+
"supportedVersions": "1.3.3",
|
|
31
|
+
"runtimeDriver": "installed:antigravity",
|
|
32
|
+
"catalogAdapter": {
|
|
33
|
+
"kind": "file",
|
|
34
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
35
|
+
"parser": "existing-provider-catalog"
|
|
36
|
+
},
|
|
37
|
+
"invocation": {
|
|
38
|
+
"kind": "process",
|
|
39
|
+
"executable": "agy",
|
|
40
|
+
"argv": [
|
|
41
|
+
"--input-format",
|
|
42
|
+
"stream-json",
|
|
43
|
+
"--output-format",
|
|
44
|
+
"stream-json",
|
|
45
|
+
"--model",
|
|
46
|
+
"${model}",
|
|
47
|
+
"--effort",
|
|
48
|
+
"${effort}",
|
|
49
|
+
"--sandbox",
|
|
50
|
+
"--disable-slash-commands"
|
|
51
|
+
],
|
|
52
|
+
"stdin": "adapter-frame",
|
|
53
|
+
"cwd": "${workspace}",
|
|
54
|
+
"envAllowlist": [
|
|
55
|
+
"GEMINI_API_KEY",
|
|
56
|
+
"HOME"
|
|
57
|
+
],
|
|
58
|
+
"versionArgv": [
|
|
59
|
+
"--version"
|
|
60
|
+
],
|
|
61
|
+
"maxOutputBytes": 10485760
|
|
62
|
+
},
|
|
63
|
+
"capabilities": {
|
|
64
|
+
"output": "validated-file",
|
|
65
|
+
"modelPin": "unsupported",
|
|
66
|
+
"effort": "unsupported",
|
|
67
|
+
"cancel": "none",
|
|
68
|
+
"resume": false,
|
|
69
|
+
"sandboxModes": [
|
|
70
|
+
"read-only"
|
|
71
|
+
],
|
|
72
|
+
"nestedAgentsControllable": false,
|
|
73
|
+
"nativeFallbackControllable": false,
|
|
74
|
+
"hardBudget": []
|
|
75
|
+
},
|
|
76
|
+
"qualification": {
|
|
77
|
+
"status": "unqualified"
|
|
78
|
+
},
|
|
79
|
+
"invocationProfiles": {
|
|
80
|
+
"direct-shell": {
|
|
81
|
+
"transport": "shell",
|
|
82
|
+
"supportedVersions": "1.3.3",
|
|
83
|
+
"controls": {
|
|
84
|
+
"model": {
|
|
85
|
+
"support": "unqualified",
|
|
86
|
+
"mapping": "[--model MODEL] exact observed model id, never 'auto'/'default' or a generic Ralph-loop alias",
|
|
87
|
+
"evidence": "H: agy 1.3.3 --help documents --model <MODEL> with no enum; unqualified until live model-pin evidence"
|
|
88
|
+
},
|
|
89
|
+
"effort": {
|
|
90
|
+
"support": "unqualified",
|
|
91
|
+
"mapping": "[--effort low|medium|high|xhigh|max], always explicit",
|
|
92
|
+
"evidence": "H: agy 1.3.3 --help documents --effort (low|medium|high|xhigh|max); D (strings): changelog fixes confirm both --model and --effort were previously silently ignored and now apply; unqualified until live evidence"
|
|
93
|
+
},
|
|
94
|
+
"sandbox": {
|
|
95
|
+
"support": "unqualified",
|
|
96
|
+
"mapping": "[--sandbox] always emitted (bare boolean, no mode argument documented); only the read-only contract is accepted — write is unavailable because no verified non-blanket write-approval flag is evidenced (--mode accept-edits scope is unconfirmed; --dangerously-skip-permissions is a blanket bypass and is never emitted)",
|
|
97
|
+
"evidence": "H: agy 1.3.3 --help documents --sandbox ('Run in a sandbox with terminal restrictions enabled'), --mode (accept-edits, plan) and --dangerously-skip-permissions ('Auto-approve all tool permission requests'); unqualified until live evidence"
|
|
98
|
+
},
|
|
99
|
+
"approval": {
|
|
100
|
+
"support": "unqualified",
|
|
101
|
+
"mapping": "unavailable as a non-bypass flag: a bare headless run (neither --mode nor --dangerously-skip-permissions) soft-denies a tool permission request and prints a stderr notice rather than hanging or silently approving",
|
|
102
|
+
"evidence": "D: strings-read changelog v1.1.3: \"Fixed headless (-p) runs hanging or silently auto-approving tools that require a permission confirmation, so the CLI now soft-denies such tools and prints a stderr notice naming the allow-rule needed to permit them.\"; this quote establishes NEITHER exit code 0 NOR a SUCCESS terminal by itself; exact notice text not evidenced, see pitfalls; unqualified until live evidence"
|
|
103
|
+
},
|
|
104
|
+
"workdir": {
|
|
105
|
+
"support": "unqualified",
|
|
106
|
+
"mapping": "no --cwd/--workspace flag is documented; the conductor process cwd is the implicit workspace (agy's own default), optionally extended by --add-dir (never emitted by this profile)",
|
|
107
|
+
"evidence": "H: agy 1.3.3 --help documents --add-dir ('Add a directory to the workspace (repeatable)') but no primary-workspace-path flag; unqualified until live evidence"
|
|
108
|
+
},
|
|
109
|
+
"finalOutput": {
|
|
110
|
+
"support": "unqualified",
|
|
111
|
+
"mapping": "unavailable as a file target: no output-file flag is documented; the final is the terminal event.result.response of the captured --output-format stream-json stdout stream",
|
|
112
|
+
"evidence": "H: agy 1.3.3 --help documents --output-format <text|json|stream-json> with no file-path argument; D (strings, changelog v1.1.8): \"typed init, step_update, and terminal result events\"; live fix-round-1 conductor probe C (2026-10-11): `echo probe | agy --print= --output-format stream-json` returned the stdout line `{\"event\":\"result\",\"result\":{\"conversation_id\":\"\",\"status\":\"ERROR\",\"response\":\"\",\"error\":\"Error: empty prompt. Usage: agy --print \\\"your prompt here\\\"\"}}`, confirming event/result.status/result.response/result.error field names on a real ERROR terminal (no model reached; proves grammar only, not a SUCCESS shape or exit code 0); SUCCESS/init/step_update field shapes remain carried forward from tools/providers/antigravity-transport.mjs and worker-health.mjs observeProviderHealthEvent('antigravity', ...), not independently re-confirmed against 1.3.3 by a live SUCCESS run; unqualified until live evidence"
|
|
113
|
+
},
|
|
114
|
+
"stdin": {
|
|
115
|
+
"support": "unqualified",
|
|
116
|
+
"mapping": "adapter-frame: the installed adapter supplies exact bounded stdin bytes: one NDJSON line {\"event\":\"user\",\"message\":<brief>} on stdin, then EOF; no --print flag and no prompt value are ever emitted (--print requires a value, swallows the next argv token when omitted, and still hard-errors on an explicit empty value)",
|
|
117
|
+
"evidence": "R: live, fix round 1, conductor probes A/B/C/D/E, 2026-10-11, no login reached. (A) `agy --print --output-format bogus-format </dev/null` -> \"Error: --print took \\\"--output-format\\\" as its prompt...\"; (B) `agy --output-format bogus-format --print </dev/null` -> \"flag needs an argument: -print\"; (C) `--print=` -> \"Error: empty prompt...\"; (D)/(E) `--input-format stream-json --output-format stream-json` with or without `--print` omitted entirely both pass argument validation and reach the same auth stop. D (strings, extraction: ssh noodle 'strings -n 8 ~/.local/bin/agy | grep -n \"stream input\"'): \"stream input message is missing the \\\"event\\\" field\", \"stream input message event %q is not supported yet\", \"stream input \\\"user\\\" message is missing the \\\"message\\\" field\" fix the NDJSON input envelope field names; unqualified until live evidence"
|
|
118
|
+
},
|
|
119
|
+
"structuredOutput": {
|
|
120
|
+
"support": "unqualified",
|
|
121
|
+
"mapping": "--json-schema exists but is never emitted by this profile (no fixed schema is defined for the direct worker contract)",
|
|
122
|
+
"evidence": "H: agy 1.3.3 --help documents --json-schema ('enforce structured output ... for stream-json, only applicable to the final result'); unqualified until live evidence"
|
|
123
|
+
},
|
|
124
|
+
"stepCap": {
|
|
125
|
+
"support": "unqualified",
|
|
126
|
+
"mapping": "unavailable: no step/turn cap flag is evidenced; --print-timeout bounds wall time only (always emitted as 0, i.e. wait for completion)",
|
|
127
|
+
"evidence": "H: agy 1.3.3 --help documents --print-timeout ('0 waits until the turn completes (default 0s)') and no step-cap flag; unknown controls block tasks requiring them"
|
|
128
|
+
},
|
|
129
|
+
"trust": {
|
|
130
|
+
"support": "unqualified",
|
|
131
|
+
"mapping": "unavailable: no workspace-trust flag is documented for this CLI",
|
|
132
|
+
"evidence": "H: agy 1.3.3 --help advertises no trust flag; unqualified until live evidence"
|
|
133
|
+
},
|
|
134
|
+
"children": {
|
|
135
|
+
"support": "unqualified",
|
|
136
|
+
"mapping": "unavailable: --agent (custom agent/subagent selection) is never emitted by this profile; no fan-out flag for --print is documented",
|
|
137
|
+
"evidence": "H: agy 1.3.3 --help documents --agent ('Agent for the current CLI session') but this profile never selects one; unqualified until live evidence"
|
|
138
|
+
},
|
|
139
|
+
"fallback": {
|
|
140
|
+
"support": "unqualified",
|
|
141
|
+
"mapping": "unavailable: no fallback-model flag is documented",
|
|
142
|
+
"evidence": "H: agy 1.3.3 --help advertises no fallback-model flag; unknown controls block tasks requiring them"
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"envAllowlist": [
|
|
146
|
+
"GEMINI_API_KEY",
|
|
147
|
+
"HOME"
|
|
148
|
+
],
|
|
149
|
+
"pitfalls": [
|
|
150
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
151
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
152
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
153
|
+
"--dangerously-skip-permissions and --remote-control are never part of the direct profile; neither was ever shipped as a new argv-prompt path.",
|
|
154
|
+
"A soft-denied tool permission request (exit 0, stderr notice naming the allow-rule needed) is NOT the same as success; its exact stderr wording is not evidenced from help or changelog, so this is an open, honestly-marked detection gap rather than an invented check (tools/ralph-external/lib/antigravity-adapter.mjs ANTIGRAVITY_SOFT_DENY_RISK_NOTE).",
|
|
155
|
+
"GEMINI_API_KEY in envAllowlist is a strings-sourced GUESS, not confirmed to authenticate this CLI. Live fix-round-1 probes (D/E, no login present) show a bare run stops at \"Error: authentication required. Run 'agy' to log in, then retry.\" — this is an interactive Google-account login, not a documented env-key or OpenRouter-style flag. The manual smoke run is BLOCKED until an operator completes an interactive `agy` login on the target host.",
|
|
156
|
+
"The 1.3.3 --effort enum (low|medium|high|xhigh|max) supersedes the stale 1.1.26-pinned three-value set in tools/providers/antigravity-transport.mjs (a separate, unedited legacy transport used by the MCP/doctor bridge, not this direct-shell profile).",
|
|
157
|
+
"Flag validation happens BEFORE auth: live probe F, `agy --print=x --input-format bogus --output-format stream-json`, returned \"Error: unknown --input-format \\\"bogus\\\" (want text or stream-json)\" without reaching the auth stop, confirming --input-format is validated against exactly {text, stream-json} independent of login state.",
|
|
158
|
+
"The brief reaches agy through adapter-frame: the installed buildWorkerStdinFrame hook supplies exactly one NDJSON user message and EOF. The stdin control stays unqualified pending one authenticated smoke run."
|
|
159
|
+
],
|
|
160
|
+
"health": {
|
|
161
|
+
"version": 1,
|
|
162
|
+
"handshake": "process-only",
|
|
163
|
+
"outputFraming": "jsonl",
|
|
164
|
+
"signalParser": "provider-antigravity-health-v1",
|
|
165
|
+
"sessionLogLocator": null,
|
|
166
|
+
"progressEvidence": [
|
|
167
|
+
"distinct step_update DONE"
|
|
168
|
+
],
|
|
169
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
170
|
+
"fixtureRef": "test/fixtures/providers/antigravity/health/manifest.json",
|
|
171
|
+
"qualifiedAt": null,
|
|
172
|
+
"statusOperation": null,
|
|
173
|
+
"cancelOperation": null,
|
|
174
|
+
"coverage": "degraded",
|
|
175
|
+
"qualificationTarget": "semantic",
|
|
176
|
+
"evidenceGrades": [
|
|
177
|
+
"R",
|
|
178
|
+
"D"
|
|
179
|
+
],
|
|
180
|
+
"provenance": [
|
|
181
|
+
{
|
|
182
|
+
"kind": "repository",
|
|
183
|
+
"ref": "agentic/code/providers/antigravity/provider-contract.v1.json",
|
|
184
|
+
"observedAt": "2026-10-07T00:00:00Z",
|
|
185
|
+
"cliVersion": null
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"kind": "documentation",
|
|
189
|
+
"ref": "03-software-architecture.md §10 antigravity",
|
|
190
|
+
"observedAt": "2026-10-07T00:00:00Z",
|
|
191
|
+
"cliVersion": null
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
"qualificationOwner": "B-OG-43",
|
|
195
|
+
"qualification": {
|
|
196
|
+
"status": "unqualified",
|
|
197
|
+
"scopeDigest": null,
|
|
198
|
+
"cliVersion": null,
|
|
199
|
+
"accountScope": null,
|
|
200
|
+
"profileRef": null,
|
|
201
|
+
"modelKey": null,
|
|
202
|
+
"effort": null,
|
|
203
|
+
"authorizedLive": false
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
23
209
|
},
|
|
24
210
|
"claude": {
|
|
211
|
+
"sessionEnvAllowlist": [
|
|
212
|
+
"ANTHROPIC_API_KEY",
|
|
213
|
+
"ANTHROPIC_AUTH_TOKEN",
|
|
214
|
+
"ANTHROPIC_BASE_URL",
|
|
215
|
+
"ANTHROPIC_MODEL",
|
|
216
|
+
"CLAUDE_CONFIG_DIR",
|
|
217
|
+
"CLAUDE_CODE_OAUTH_TOKEN",
|
|
218
|
+
"CLAUDE_CODE_DISABLE_1M_CONTEXT",
|
|
219
|
+
"CLAUDE_CODE_USE_BEDROCK",
|
|
220
|
+
"CLAUDE_CODE_USE_VERTEX",
|
|
221
|
+
"AWS_PROFILE",
|
|
222
|
+
"AWS_REGION",
|
|
223
|
+
"AWS_DEFAULT_REGION",
|
|
224
|
+
"AWS_ACCESS_KEY_ID",
|
|
225
|
+
"AWS_SECRET_ACCESS_KEY",
|
|
226
|
+
"AWS_SESSION_TOKEN",
|
|
227
|
+
"AWS_CONFIG_FILE",
|
|
228
|
+
"AWS_SHARED_CREDENTIALS_FILE",
|
|
229
|
+
"GOOGLE_APPLICATION_CREDENTIALS",
|
|
230
|
+
"ANTHROPIC_VERTEX_PROJECT_ID",
|
|
231
|
+
"CLOUD_ML_REGION"
|
|
232
|
+
],
|
|
25
233
|
"agent": "native",
|
|
26
234
|
"skill": "native",
|
|
27
235
|
"globalChild": "inherited",
|
|
@@ -37,9 +245,220 @@
|
|
|
37
245
|
"artifactFormat": "YAML frontmatter plus Markdown",
|
|
38
246
|
"verification": "Inspect deployed frontmatter and bounded invocation metadata",
|
|
39
247
|
"sourceUrl": "https://code.claude.com/docs/en/sub-agents",
|
|
40
|
-
"verifiedAt": "2026-07-20"
|
|
248
|
+
"verifiedAt": "2026-07-20",
|
|
249
|
+
"workerHealthAdapter": {
|
|
250
|
+
"version": 1,
|
|
251
|
+
"id": "claude-direct",
|
|
252
|
+
"provider": "claude",
|
|
253
|
+
"adapterVersion": "1",
|
|
254
|
+
"supportedVersions": "2.1.295",
|
|
255
|
+
"runtimeDriver": "installed:claude",
|
|
256
|
+
"catalogAdapter": {
|
|
257
|
+
"kind": "file",
|
|
258
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
259
|
+
"parser": "existing-provider-catalog"
|
|
260
|
+
},
|
|
261
|
+
"invocation": {
|
|
262
|
+
"kind": "process",
|
|
263
|
+
"executable": "claude",
|
|
264
|
+
"argv": [
|
|
265
|
+
"--print",
|
|
266
|
+
"--input-format",
|
|
267
|
+
"text",
|
|
268
|
+
"--output-format",
|
|
269
|
+
"stream-json",
|
|
270
|
+
"--verbose",
|
|
271
|
+
"--model",
|
|
272
|
+
"${model}",
|
|
273
|
+
"--effort",
|
|
274
|
+
"${effort}",
|
|
275
|
+
"--permission-mode",
|
|
276
|
+
"dontAsk",
|
|
277
|
+
"--permission-prompts",
|
|
278
|
+
"none",
|
|
279
|
+
"--restricted",
|
|
280
|
+
"--safe-mode",
|
|
281
|
+
"--strict-mcp-config",
|
|
282
|
+
"--mcp-config",
|
|
283
|
+
"{\"mcpServers\":{}}",
|
|
284
|
+
"--tools",
|
|
285
|
+
"Read,Glob,Grep,Edit,Write",
|
|
286
|
+
"--allowedTools",
|
|
287
|
+
"Read,Glob,Grep,Edit,Write",
|
|
288
|
+
"--disallowedTools",
|
|
289
|
+
"Agent,Task,Bash,PowerShell,REPL,WebFetch",
|
|
290
|
+
"--disable-slash-commands",
|
|
291
|
+
"--no-chrome",
|
|
292
|
+
"--no-session-persistence"
|
|
293
|
+
],
|
|
294
|
+
"stdin": "brief-text",
|
|
295
|
+
"cwd": "${workspace}",
|
|
296
|
+
"envAllowlist": [
|
|
297
|
+
"HOME",
|
|
298
|
+
"PATH",
|
|
299
|
+
"ANTHROPIC_API_KEY"
|
|
300
|
+
],
|
|
301
|
+
"versionPattern": "^([0-9A-Za-z.+-]{1,128}) \\(Claude Code\\)$",
|
|
302
|
+
"versionArgv": [
|
|
303
|
+
"--version"
|
|
304
|
+
],
|
|
305
|
+
"maxOutputBytes": 10485760
|
|
306
|
+
},
|
|
307
|
+
"capabilities": {
|
|
308
|
+
"output": "validated-file",
|
|
309
|
+
"modelPin": "requested",
|
|
310
|
+
"effort": "explicit",
|
|
311
|
+
"cancel": "process-group",
|
|
312
|
+
"resume": false,
|
|
313
|
+
"sandboxModes": [
|
|
314
|
+
"read-only",
|
|
315
|
+
"workspace-write"
|
|
316
|
+
],
|
|
317
|
+
"nestedAgentsControllable": true,
|
|
318
|
+
"nativeFallbackControllable": true,
|
|
319
|
+
"hardBudget": []
|
|
320
|
+
},
|
|
321
|
+
"qualification": {
|
|
322
|
+
"status": "unqualified"
|
|
323
|
+
},
|
|
324
|
+
"invocationProfiles": {
|
|
325
|
+
"direct-shell": {
|
|
326
|
+
"transport": "shell",
|
|
327
|
+
"supportedVersions": "2.1.295",
|
|
328
|
+
"controls": {
|
|
329
|
+
"model": {
|
|
330
|
+
"support": "unqualified",
|
|
331
|
+
"mapping": "--model ${model}; moving aliases denied",
|
|
332
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --model <model> Model for the current session. Provide; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
333
|
+
},
|
|
334
|
+
"effort": {
|
|
335
|
+
"support": "unqualified",
|
|
336
|
+
"mapping": "--effort ${effort}; explicit low/medium/high/xhigh/max",
|
|
337
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --effort <level> Effort level for the current session (low, medium, high, xhigh, max); full verbatim excerpts: docs/providers/claude-direct.md"
|
|
338
|
+
},
|
|
339
|
+
"sandbox": {
|
|
340
|
+
"support": "unqualified",
|
|
341
|
+
"mapping": "partial: --restricted confines whitelisted file tools, scoped by --tools/--allowedTools (workspace-write: Read,Glob,Grep,Edit,Write; read-only: Read,Glob,Grep); OS sandbox unavailable in CLI, external boundary required",
|
|
342
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --restricted Restricted mode: removes the built-in tools that run commands or code; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
343
|
+
},
|
|
344
|
+
"approval": {
|
|
345
|
+
"support": "unqualified",
|
|
346
|
+
"mapping": "--permission-mode dontAsk --permission-prompts none; prompting and bypass modes denied",
|
|
347
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --permission-prompts <target> Who answers permission prompts with --print: \"host\" (the SDK host or --permission-prompt-tool) or \"none\" (nobody: anything that would prompt is denied automatically; the permission mode still decides everything else); full verbatim excerpts: docs/providers/claude-direct.md"
|
|
348
|
+
},
|
|
349
|
+
"workdir": {
|
|
350
|
+
"support": "unqualified",
|
|
351
|
+
"mapping": "spawn cwd from conductor; no invented --cwd flag",
|
|
352
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); Usage: claude [options] [command] [prompt]; no workspace switch is emitted; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
353
|
+
},
|
|
354
|
+
"finalOutput": {
|
|
355
|
+
"support": "unqualified",
|
|
356
|
+
"mapping": "parse exactly one success result envelope from stdout; result JSON text or structured_output; exit-zero error fails",
|
|
357
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --output-format <format> Output format (only works with --print): \"text\" (default), \"json\" (single result), or \"stream-json\" (realtime streaming); full verbatim excerpts: docs/providers/claude-direct.md"
|
|
358
|
+
},
|
|
359
|
+
"stdin": {
|
|
360
|
+
"support": "unqualified",
|
|
361
|
+
"mapping": "--input-format text; brief-text on stdin through EOF; never prompt argv",
|
|
362
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --input-format <format> Input format (only works with --print): \"text\" (default), or \"stream-json\"; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
363
|
+
},
|
|
364
|
+
"structuredOutput": {
|
|
365
|
+
"support": "unqualified",
|
|
366
|
+
"mapping": "unavailable in current renderer: CLI --json-schema exists but schema input is not passed to this driver",
|
|
367
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --json-schema <schema> JSON Schema for structured output validation.; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
368
|
+
},
|
|
369
|
+
"stepCap": {
|
|
370
|
+
"support": "unqualified",
|
|
371
|
+
"mapping": "unavailable: --max-turns is not listed by installed help; never emitted",
|
|
372
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); No --max-turns line appears in claude 2.1.295 --help; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
373
|
+
},
|
|
374
|
+
"trust": {
|
|
375
|
+
"support": "unqualified",
|
|
376
|
+
"mapping": "--print --safe-mode --restricted --setting-sources \"\" --strict-mcp-config --mcp-config {\"mcpServers\":{}}; inherited customization disabled",
|
|
377
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --safe-mode Start with all customizations (CLAUDE.md, skills, installed plugins, hooks, MCP servers, custom commands and agents, output styles, workflows, custom themes, keybindings, and more) disabled; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
378
|
+
},
|
|
379
|
+
"children": {
|
|
380
|
+
"support": "unqualified",
|
|
381
|
+
"mapping": "--tools/--allowedTools Read,Glob,Grep,Edit,Write (workspace-write) or Read,Glob,Grep (read-only) --disallowedTools Agent,Task,Bash,PowerShell,REPL,WebFetch; no child/command tool or external MCP",
|
|
382
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --tools <tools...> Specify the list of available tools from the built-in set.; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
383
|
+
},
|
|
384
|
+
"fallback": {
|
|
385
|
+
"support": "unqualified",
|
|
386
|
+
"mapping": "exact model; --safe-mode; never emit --fallback-model; model substitutions do not qualify the profile",
|
|
387
|
+
"evidence": "H: claude 2.1.295 --help (2026-10-09); --fallback-model <model> Enable automatic fallback to specified model(s) when the default model is overloaded or not available.; full verbatim excerpts: docs/providers/claude-direct.md"
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
"envAllowlist": [
|
|
391
|
+
"HOME",
|
|
392
|
+
"PATH",
|
|
393
|
+
"ANTHROPIC_API_KEY"
|
|
394
|
+
],
|
|
395
|
+
"pitfalls": [
|
|
396
|
+
"Help syntax and fake mechanics are not live qualification; this registry entry stays unqualified.",
|
|
397
|
+
"CLI file-tool restrictions do not supply an OS sandbox. The current shared Claude policy requires an external enforcing boundary.",
|
|
398
|
+
"Final output is the captured .stdout JSONL stream, not a CLI-created finalPath file. Normalize with ClaudeAdapter.parseWorkerFinal before verification.",
|
|
399
|
+
"Unavailable: renderer schema input, help-evidenced turn cap, native MCP reasoning worker. claude mcp serve exposes only debug/help/verbose and is a code-tools server.",
|
|
400
|
+
"Commands, Agent/Task, inherited MCP, hooks, plugins and skills are disabled in this restricted file-tools profile.",
|
|
401
|
+
"Bare mode is not used: installed help states it changes auth to API-key-only. No account or credential files were inspected."
|
|
402
|
+
],
|
|
403
|
+
"health": {
|
|
404
|
+
"version": 1,
|
|
405
|
+
"handshake": "process-only",
|
|
406
|
+
"outputFraming": "jsonl",
|
|
407
|
+
"signalParser": "provider-claude-health-v1",
|
|
408
|
+
"sessionLogLocator": null,
|
|
409
|
+
"progressEvidence": [
|
|
410
|
+
"distinct completed tool_result"
|
|
411
|
+
],
|
|
412
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
413
|
+
"fixtureRef": "test/fixtures/providers/claude/health/manifest.json",
|
|
414
|
+
"qualifiedAt": null,
|
|
415
|
+
"statusOperation": null,
|
|
416
|
+
"cancelOperation": null,
|
|
417
|
+
"coverage": "degraded",
|
|
418
|
+
"qualificationTarget": "semantic",
|
|
419
|
+
"evidenceGrades": [
|
|
420
|
+
"H",
|
|
421
|
+
"R"
|
|
422
|
+
],
|
|
423
|
+
"provenance": [
|
|
424
|
+
{
|
|
425
|
+
"kind": "help",
|
|
426
|
+
"ref": "docs/providers/claude-direct.md",
|
|
427
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
428
|
+
"cliVersion": "2.1.295"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"kind": "repository",
|
|
432
|
+
"ref": "test/fixtures/providers/claude/health/manifest.json",
|
|
433
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
434
|
+
"cliVersion": null
|
|
435
|
+
}
|
|
436
|
+
],
|
|
437
|
+
"qualificationOwner": "B-OG-28",
|
|
438
|
+
"qualification": {
|
|
439
|
+
"status": "unqualified",
|
|
440
|
+
"scopeDigest": null,
|
|
441
|
+
"cliVersion": null,
|
|
442
|
+
"accountScope": null,
|
|
443
|
+
"profileRef": null,
|
|
444
|
+
"modelKey": null,
|
|
445
|
+
"effort": null,
|
|
446
|
+
"authorizedLive": false
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
41
452
|
},
|
|
42
453
|
"codex": {
|
|
454
|
+
"sessionEnvAllowlist": [
|
|
455
|
+
"OPENAI_API_KEY",
|
|
456
|
+
"CODEX_API_KEY",
|
|
457
|
+
"OPENAI_BASE_URL",
|
|
458
|
+
"OPENAI_ORG_ID",
|
|
459
|
+
"OPENAI_PROJECT_ID",
|
|
460
|
+
"CODEX_HOME"
|
|
461
|
+
],
|
|
43
462
|
"agent": "native",
|
|
44
463
|
"skill": "unsupported",
|
|
45
464
|
"globalChild": "inherited",
|
|
@@ -57,9 +476,206 @@
|
|
|
57
476
|
"artifactFormat": "Standalone TOML custom-agent configuration",
|
|
58
477
|
"verification": "Parse TOML and load in Codex custom-agent registry",
|
|
59
478
|
"sourceUrl": "https://learn.chatgpt.com/docs/agent-configuration/subagents",
|
|
60
|
-
"verifiedAt": "2026-07-20"
|
|
479
|
+
"verifiedAt": "2026-07-20",
|
|
480
|
+
"workerHealthAdapter": {
|
|
481
|
+
"version": 1,
|
|
482
|
+
"id": "codex",
|
|
483
|
+
"provider": "codex",
|
|
484
|
+
"adapterVersion": "1",
|
|
485
|
+
"supportedVersions": ">=0.161.0 <0.200.0",
|
|
486
|
+
"runtimeDriver": "installed:codex",
|
|
487
|
+
"catalogAdapter": {
|
|
488
|
+
"kind": "file",
|
|
489
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
490
|
+
"parser": "existing-provider-catalog"
|
|
491
|
+
},
|
|
492
|
+
"invocation": {
|
|
493
|
+
"kind": "process",
|
|
494
|
+
"executable": "codex",
|
|
495
|
+
"argv": [
|
|
496
|
+
"--no-daemon",
|
|
497
|
+
"exec",
|
|
498
|
+
"--ignore-user-config",
|
|
499
|
+
"-m",
|
|
500
|
+
"${model}",
|
|
501
|
+
"-c",
|
|
502
|
+
"model_reasoning_effort=\"${effort}\"",
|
|
503
|
+
"-s",
|
|
504
|
+
"${sandbox}",
|
|
505
|
+
"-C",
|
|
506
|
+
"${workspace}",
|
|
507
|
+
"-c",
|
|
508
|
+
"approval_policy=\"${approval}\"",
|
|
509
|
+
"--skip-git-repo-check",
|
|
510
|
+
"-o",
|
|
511
|
+
"${final}",
|
|
512
|
+
"--json",
|
|
513
|
+
"-"
|
|
514
|
+
],
|
|
515
|
+
"stdin": "brief-text",
|
|
516
|
+
"cwd": "${workspace}",
|
|
517
|
+
"envAllowlist": [
|
|
518
|
+
"CODEX_HOME",
|
|
519
|
+
"HOME"
|
|
520
|
+
],
|
|
521
|
+
"versionPattern": "^codex-cli ([0-9A-Za-z.+-]{1,128})$",
|
|
522
|
+
"versionArgv": [
|
|
523
|
+
"--version"
|
|
524
|
+
],
|
|
525
|
+
"maxOutputBytes": 10485760
|
|
526
|
+
},
|
|
527
|
+
"capabilities": {
|
|
528
|
+
"output": "validated-file",
|
|
529
|
+
"modelPin": "unsupported",
|
|
530
|
+
"effort": "unsupported",
|
|
531
|
+
"cancel": "none",
|
|
532
|
+
"resume": false,
|
|
533
|
+
"sandboxModes": [
|
|
534
|
+
"external"
|
|
535
|
+
],
|
|
536
|
+
"nestedAgentsControllable": false,
|
|
537
|
+
"nativeFallbackControllable": false,
|
|
538
|
+
"hardBudget": []
|
|
539
|
+
},
|
|
540
|
+
"qualification": {
|
|
541
|
+
"status": "unqualified"
|
|
542
|
+
},
|
|
543
|
+
"invocationProfiles": {
|
|
544
|
+
"direct-shell": {
|
|
545
|
+
"transport": "shell",
|
|
546
|
+
"supportedVersions": ">=0.161.0 <0.200.0",
|
|
547
|
+
"controls": {
|
|
548
|
+
"model": {
|
|
549
|
+
"support": "unqualified",
|
|
550
|
+
"mapping": "[-m/--model MODEL] global flag; exact observed API model, never an alias or CLI default",
|
|
551
|
+
"evidence": "H: codex-cli 0.161.0 exec --help documents -m/--model; unqualified until live model-pin evidence"
|
|
552
|
+
},
|
|
553
|
+
"effort": {
|
|
554
|
+
"support": "unqualified",
|
|
555
|
+
"mapping": "[-c model_reasoning_effort=\"E\"] config override with E in [minimal, low, medium, high, xhigh]; no --effort flag exists; one argv token, TOML \"E\" quoting, no shell layer",
|
|
556
|
+
"evidence": "H: codex-cli 0.161.0 exec --help has no effort flag; effort travels only as the model_reasoning_effort config override; unqualified until live evidence"
|
|
557
|
+
},
|
|
558
|
+
"sandbox": {
|
|
559
|
+
"support": "unqualified",
|
|
560
|
+
"mapping": "[-s/--sandbox read-only|workspace-write]; danger-full-access and bypass flags are never emitted by the direct profile",
|
|
561
|
+
"evidence": "H: codex-cli 0.161.0 --help documents -s/--sandbox read-only|workspace-write|danger-full-access; unqualified until live evidence"
|
|
562
|
+
},
|
|
563
|
+
"approval": {
|
|
564
|
+
"support": "unqualified",
|
|
565
|
+
"mapping": "[-c approval_policy=\"never\"]; on-request is refused: the direct profile never prompts, and -a/--ask-for-approval is root-only (absent from exec --help)",
|
|
566
|
+
"evidence": "H: codex-cli 0.161.0 exec --help carries no approval flag, so approval travels as the -c approval_policy override; unqualified until live evidence"
|
|
567
|
+
},
|
|
568
|
+
"workdir": {
|
|
569
|
+
"support": "unqualified",
|
|
570
|
+
"mapping": "[-C/--cd W] conductor working root, plus the conductor process cwd",
|
|
571
|
+
"evidence": "H: codex-cli 0.161.0 --help documents -C/--cd; unqualified until live evidence"
|
|
572
|
+
},
|
|
573
|
+
"finalOutput": {
|
|
574
|
+
"support": "unqualified",
|
|
575
|
+
"mapping": "[-o/--output-last-message F] last-message file; --json carries the JSONL thread/turn/item/error event stream on stdout",
|
|
576
|
+
"evidence": "H: codex-cli 0.161.0 exec --help documents -o/--output-last-message and --json; unqualified until live evidence"
|
|
577
|
+
},
|
|
578
|
+
"stdin": {
|
|
579
|
+
"support": "unqualified",
|
|
580
|
+
"mapping": "brief-text: '-' is the prompt argument and the brief is piped on stdin (< briefPath); brief text never enters argv, rendered commands or serialized plans",
|
|
581
|
+
"evidence": "H: codex-cli 0.161.0 exec --help (instructions are read from stdin when '-' is used or no prompt argument is given); unqualified until live evidence"
|
|
582
|
+
},
|
|
583
|
+
"structuredOutput": {
|
|
584
|
+
"support": "unqualified",
|
|
585
|
+
"mapping": "deferred: --output-schema exists on 0.161.0 exec --help, but WorkerCommandRequest/parseWorkerCommandArgs (src/serve/worker-invocation.ts) carries no schema path, so the shared renderer cannot supply one; no native schema output is claimed",
|
|
586
|
+
"evidence": "H: codex-cli 0.161.0 exec --help documents --output-schema; renderer input gap recorded, not implemented here; unqualified until live evidence"
|
|
587
|
+
},
|
|
588
|
+
"stepCap": {
|
|
589
|
+
"support": "unqualified",
|
|
590
|
+
"mapping": "unavailable: no step or turn cap flag is evidenced on 0.161.0; deadline and output-byte bounds come from the invoking shell",
|
|
591
|
+
"evidence": "H: codex-cli 0.161.0 exec --help advertises no step-cap flag; unknown controls block tasks requiring them"
|
|
592
|
+
},
|
|
593
|
+
"trust": {
|
|
594
|
+
"support": "unqualified",
|
|
595
|
+
"mapping": "unknown: workspace trust behaviour is not evidenced on 0.161.0; --ignore-user-config skips only $CODEX_HOME/config.toml while auth still resolves via CODEX_HOME, so user config is scoped out but trust is not established",
|
|
596
|
+
"evidence": "H: codex-cli 0.161.0 --help (--ignore-user-config skips config.toml; auth still uses CODEX_HOME; --ignore-rules exists but neither evidences trust); live qualification required"
|
|
597
|
+
},
|
|
598
|
+
"children": {
|
|
599
|
+
"support": "unqualified",
|
|
600
|
+
"mapping": "unavailable: no per-call subagent disable is evidenced on 0.161.0",
|
|
601
|
+
"evidence": "H: codex-cli 0.161.0 exec --help shows no subagent control; tasks requiring child limits are blocked"
|
|
602
|
+
},
|
|
603
|
+
"fallback": {
|
|
604
|
+
"support": "unqualified",
|
|
605
|
+
"mapping": "unknown: provider/model fallback behaviour is not evidenced",
|
|
606
|
+
"evidence": "H: codex-cli 0.161.0 --help; live qualification required"
|
|
607
|
+
}
|
|
608
|
+
},
|
|
609
|
+
"envAllowlist": [
|
|
610
|
+
"CODEX_HOME",
|
|
611
|
+
"HOME"
|
|
612
|
+
],
|
|
613
|
+
"pitfalls": [
|
|
614
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
615
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
616
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
617
|
+
"Effort travels only as -c model_reasoning_effort; no --effort flag exists on 0.161.0 and none is invented.",
|
|
618
|
+
"--dangerously-bypass-approvals-and-sandbox is Ralph-loop legacy and never part of the direct profile.",
|
|
619
|
+
"Native `mcp-server` is not advertised by installed 0.160.1/0.161.0 help (`codex mcp-server --help` prints root help); native MCP stays version-blocked.",
|
|
620
|
+
"Auth resolves via CODEX_HOME (or HOME for its default location): the env allowlist carries exactly those two names and nothing else."
|
|
621
|
+
],
|
|
622
|
+
"health": {
|
|
623
|
+
"version": 1,
|
|
624
|
+
"handshake": "process-only",
|
|
625
|
+
"outputFraming": "jsonl",
|
|
626
|
+
"signalParser": "provider-codex-health-v1",
|
|
627
|
+
"sessionLogLocator": null,
|
|
628
|
+
"progressEvidence": [
|
|
629
|
+
"distinct item.completed"
|
|
630
|
+
],
|
|
631
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
632
|
+
"fixtureRef": "test/fixtures/providers/codex/health/manifest.json",
|
|
633
|
+
"qualifiedAt": null,
|
|
634
|
+
"statusOperation": null,
|
|
635
|
+
"cancelOperation": null,
|
|
636
|
+
"coverage": "degraded",
|
|
637
|
+
"qualificationTarget": "semantic",
|
|
638
|
+
"evidenceGrades": [
|
|
639
|
+
"H",
|
|
640
|
+
"R"
|
|
641
|
+
],
|
|
642
|
+
"provenance": [
|
|
643
|
+
{
|
|
644
|
+
"kind": "help",
|
|
645
|
+
"ref": "tools/ralph-external/lib/codex-adapter.mjs",
|
|
646
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
647
|
+
"cliVersion": "0.161.0"
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
"kind": "repository",
|
|
651
|
+
"ref": "tools/ralph-external/lib/codex-adapter.mjs",
|
|
652
|
+
"observedAt": "2026-10-07T00:00:00Z",
|
|
653
|
+
"cliVersion": null
|
|
654
|
+
}
|
|
655
|
+
],
|
|
656
|
+
"qualificationOwner": "B-OG-07",
|
|
657
|
+
"qualification": {
|
|
658
|
+
"status": "unqualified",
|
|
659
|
+
"scopeDigest": null,
|
|
660
|
+
"cliVersion": null,
|
|
661
|
+
"accountScope": null,
|
|
662
|
+
"profileRef": null,
|
|
663
|
+
"modelKey": null,
|
|
664
|
+
"effort": null,
|
|
665
|
+
"authorizedLive": false
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
}
|
|
61
671
|
},
|
|
62
672
|
"copilot": {
|
|
673
|
+
"sessionEnvAllowlist": [
|
|
674
|
+
"COPILOT_GITHUB_TOKEN",
|
|
675
|
+
"GH_TOKEN",
|
|
676
|
+
"GITHUB_TOKEN",
|
|
677
|
+
"COPILOT_HOME"
|
|
678
|
+
],
|
|
63
679
|
"agent": "native",
|
|
64
680
|
"skill": "unsupported",
|
|
65
681
|
"globalChild": "inherited",
|
|
@@ -70,7 +686,179 @@
|
|
|
70
686
|
"artifactFormat": "YAML frontmatter plus Markdown",
|
|
71
687
|
"verification": "Schema fixture and entitled Copilot invocation",
|
|
72
688
|
"sourceUrl": "https://docs.github.com/en/copilot/reference/custom-agents-configuration",
|
|
73
|
-
"verifiedAt": "2026-07-20"
|
|
689
|
+
"verifiedAt": "2026-07-20",
|
|
690
|
+
"workerHealthAdapter": {
|
|
691
|
+
"version": 1,
|
|
692
|
+
"id": "copilot",
|
|
693
|
+
"provider": "copilot",
|
|
694
|
+
"adapterVersion": "1",
|
|
695
|
+
"supportedVersions": "1.0.95",
|
|
696
|
+
"runtimeDriver": "installed:copilot",
|
|
697
|
+
"catalogAdapter": {
|
|
698
|
+
"kind": "file",
|
|
699
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
700
|
+
"parser": "existing-provider-catalog"
|
|
701
|
+
},
|
|
702
|
+
"invocation": {
|
|
703
|
+
"kind": "process",
|
|
704
|
+
"executable": "copilot",
|
|
705
|
+
"argv": [
|
|
706
|
+
"-p",
|
|
707
|
+
"Follow the instructions in the attached file exactly.",
|
|
708
|
+
"--attachment",
|
|
709
|
+
"${brief}",
|
|
710
|
+
"--model",
|
|
711
|
+
"${model}",
|
|
712
|
+
"--reasoning-effort",
|
|
713
|
+
"${effort}",
|
|
714
|
+
"-C",
|
|
715
|
+
"${workspace}",
|
|
716
|
+
"--output-format",
|
|
717
|
+
"json",
|
|
718
|
+
"--no-ask-user",
|
|
719
|
+
"--no-custom-instructions",
|
|
720
|
+
"--disable-builtin-mcps"
|
|
721
|
+
],
|
|
722
|
+
"stdin": "closed",
|
|
723
|
+
"cwd": "${workspace}",
|
|
724
|
+
"envAllowlist": [],
|
|
725
|
+
"versionArgv": [
|
|
726
|
+
"--version"
|
|
727
|
+
],
|
|
728
|
+
"maxOutputBytes": 10485760
|
|
729
|
+
},
|
|
730
|
+
"capabilities": {
|
|
731
|
+
"output": "text",
|
|
732
|
+
"modelPin": "unsupported",
|
|
733
|
+
"effort": "unsupported",
|
|
734
|
+
"cancel": "none",
|
|
735
|
+
"resume": false,
|
|
736
|
+
"sandboxModes": [
|
|
737
|
+
"external"
|
|
738
|
+
],
|
|
739
|
+
"nestedAgentsControllable": false,
|
|
740
|
+
"nativeFallbackControllable": false,
|
|
741
|
+
"hardBudget": []
|
|
742
|
+
},
|
|
743
|
+
"qualification": {
|
|
744
|
+
"status": "unqualified"
|
|
745
|
+
},
|
|
746
|
+
"invocationProfiles": {
|
|
747
|
+
"direct-shell": {
|
|
748
|
+
"transport": "shell",
|
|
749
|
+
"supportedVersions": "1.0.95",
|
|
750
|
+
"controls": {
|
|
751
|
+
"model": {
|
|
752
|
+
"support": "unqualified",
|
|
753
|
+
"mapping": "--model <model> (exact model id only; 'auto' and generic Ralph-loop aliases are refused; captured help lists only the long flag, no '-m' alias)",
|
|
754
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--model <model> Set the AI model to use (use 'auto' to let Copilot pick automatically)')"
|
|
755
|
+
},
|
|
756
|
+
"effort": {
|
|
757
|
+
"support": "unqualified",
|
|
758
|
+
"mapping": "--reasoning-effort <level> (none|minimal|low|medium|high|xhigh|max), always explicit",
|
|
759
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--reasoning-effort <level> Set the reasoning effort level [possible values: none, minimal, low, medium, high, xhigh, max]')"
|
|
760
|
+
},
|
|
761
|
+
"sandbox": {
|
|
762
|
+
"support": "unqualified",
|
|
763
|
+
"mapping": "unavailable: no --sandbox flag is listed in the root --help Options (only documented in `copilot help sandbox` prose, gated on host MXC/bwrap/slirp4netns prerequisites not probed here); this profile relies on the CLI default path restriction (cwd + PATH dirs + temp dir + user profile) and never emits --allow-all-paths",
|
|
764
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) plus `copilot help sandbox`"
|
|
765
|
+
},
|
|
766
|
+
"approval": {
|
|
767
|
+
"support": "unqualified",
|
|
768
|
+
"mapping": "--no-ask-user (disables the ask_user tool) plus scoped --allow-tool/--deny-tool tokens from the resolved permission tuple; --allow-all-tools/--allow-all/--yolo are never emitted",
|
|
769
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--allow-all-tools ... required for non-interactive mode'; '--allow-tool [<tools>...] ... will not prompt for permission'; '--no-ask-user Disable the ask_user tool'); unqualified whether a tool outside the allow-tool scope fails closed or blocks without a live run"
|
|
770
|
+
},
|
|
771
|
+
"workdir": {
|
|
772
|
+
"support": "unqualified",
|
|
773
|
+
"mapping": "-C <directory> (change working directory before doing anything else)",
|
|
774
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('-C <directory> Change working directory before doing anything else')"
|
|
775
|
+
},
|
|
776
|
+
"finalOutput": {
|
|
777
|
+
"support": "unqualified",
|
|
778
|
+
"mapping": "stdout --output-format json (JSONL, one JSON object per line); no output-file flag carries the agent's final answer (--usage-output-file is usage statistics only and is not wired here)",
|
|
779
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--output-format <format> Output format: ... 'json' (JSONL, one JSON object per line)'; '--usage-output-file <file> Write final usage statistics as JSON')"
|
|
780
|
+
},
|
|
781
|
+
"stdin": {
|
|
782
|
+
"support": "unqualified",
|
|
783
|
+
"mapping": "unavailable for the brief: -p/--prompt <text> only accepts inline argv text; the brief instead rides on --attachment <path> as a file, with -p fixed to a content-free instruction",
|
|
784
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('-p, --prompt <text> Execute a prompt in non-interactive mode'; '--attachment <path> Attach a file (image or native document) to the initial prompt; only valid in non-interactive mode')"
|
|
785
|
+
},
|
|
786
|
+
"structuredOutput": {
|
|
787
|
+
"support": "unqualified",
|
|
788
|
+
"mapping": "unavailable: no output-schema flag is evidenced, and the --output-format json JSONL event vocabulary itself is not documented in --help; no event field name is invented",
|
|
789
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification)"
|
|
790
|
+
},
|
|
791
|
+
"stepCap": {
|
|
792
|
+
"support": "unqualified",
|
|
793
|
+
"mapping": "unavailable: no step/turn cap flag is evidenced; --max-autopilot-continues only bounds --autopilot mode, which this profile never enables",
|
|
794
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--max-autopilot-continues <count> Maximum number of continuation messages in autopilot mode [default: 5]')"
|
|
795
|
+
},
|
|
796
|
+
"trust": {
|
|
797
|
+
"support": "unqualified",
|
|
798
|
+
"mapping": "--no-custom-instructions (stops loading AGENTS.md/related files) and --disable-builtin-mcps (disables the built-in github-mcp-server/githubiq MCP servers); other untrusted-workspace surfaces (plugins, skills, extensions) stay unqualified",
|
|
799
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--no-custom-instructions Disable loading of custom instructions from AGENTS.md and related files'; '--disable-builtin-mcps Disable all built-in MCP servers (currently: github-mcp-server, githubiq)')"
|
|
800
|
+
},
|
|
801
|
+
"children": {
|
|
802
|
+
"support": "unqualified",
|
|
803
|
+
"mapping": "unavailable: --fleet enables parallel subagent orchestration and is never emitted by this profile; whether the agent can still spawn /tasks subagents with --fleet absent is not evidenced from --help",
|
|
804
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--fleet Run the prompt in fleet mode (parallel subagent orchestration)')"
|
|
805
|
+
},
|
|
806
|
+
"fallback": {
|
|
807
|
+
"support": "unqualified",
|
|
808
|
+
"mapping": "unavailable: --auto-tier only applies when the model is 'auto', which this profile never selects; no other fallback control is evidenced",
|
|
809
|
+
"evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--auto-tier <preference> Set the Auto routing profile')"
|
|
810
|
+
}
|
|
811
|
+
},
|
|
812
|
+
"envAllowlist": [],
|
|
813
|
+
"pitfalls": [
|
|
814
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
815
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
816
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
817
|
+
"The --output-format json JSONL event-type vocabulary is not documented in --help, and the installed binary is a compiled per-architecture native package with no readable bundled source (unlike e.g. Pi's JS bundle); no event-level health signal is evidenced, so observeHealthEvent always returns null and completion is exit-code gated only, EXCEPT one conservative guard: a line with a top-level 'type: \"error\"' or non-null 'error' field always fails the final, even at exit 0 (defensive synthetic-shape check, not an observed Copilot event).",
|
|
818
|
+
"--allow-all-tools/--allow-all/--yolo are never emitted; a tool outside the resolved --allow-tool scope may still require interactive confirmation a non-interactive run cannot answer, and whether that fails closed or hangs is unqualified without a live run.",
|
|
819
|
+
"--sandbox's OS-level command sandbox depends on host prerequisites (bwrap/slirp4netns/iptables on Linux) not probed here; this profile never emits it and relies on the CLI's default path restriction instead.",
|
|
820
|
+
"Live qualification is an open S1 blocker: this profile has been exercised only against --help/--version/subcommand --help; the smoke command in docs/providers/copilot-direct.md is the first live check. Live attempt evidence (host noodle, 2026-10-10): COPILOT_GITHUB_TOKEN set to a classic ghp_ PAT exits 1 with 'Classic Personal Access Tokens (ghp_) are not supported by Copilot' on stderr and EMPTY stdout; a fine-grained PAT or prior copilot/gh login is required and the smoke run remains blocked on that."
|
|
821
|
+
],
|
|
822
|
+
"health": {
|
|
823
|
+
"version": 1,
|
|
824
|
+
"handshake": "process-only",
|
|
825
|
+
"outputFraming": "jsonl",
|
|
826
|
+
"signalParser": "provider-copilot-health-v1",
|
|
827
|
+
"sessionLogLocator": null,
|
|
828
|
+
"progressEvidence": [],
|
|
829
|
+
"stopEvidence": "owned process identity and observed exit; the JSONL stream carries no evidenced error-event vocabulary, so completion is exit-code gated only, except a conservative guard that fails any line shaped 'type: \"error\"' or carrying a non-null top-level 'error' field even at exit 0",
|
|
830
|
+
"fixtureRef": "test/fixtures/providers/copilot/health/manifest.json",
|
|
831
|
+
"qualifiedAt": null,
|
|
832
|
+
"statusOperation": null,
|
|
833
|
+
"cancelOperation": null,
|
|
834
|
+
"coverage": "degraded",
|
|
835
|
+
"qualificationTarget": "process-only",
|
|
836
|
+
"evidenceGrades": [
|
|
837
|
+
"H"
|
|
838
|
+
],
|
|
839
|
+
"provenance": [
|
|
840
|
+
{
|
|
841
|
+
"kind": "help",
|
|
842
|
+
"ref": ".aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt",
|
|
843
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
844
|
+
"cliVersion": "1.0.95"
|
|
845
|
+
}
|
|
846
|
+
],
|
|
847
|
+
"qualificationOwner": "B-OG-36",
|
|
848
|
+
"qualification": {
|
|
849
|
+
"status": "unqualified",
|
|
850
|
+
"scopeDigest": null,
|
|
851
|
+
"cliVersion": null,
|
|
852
|
+
"accountScope": null,
|
|
853
|
+
"profileRef": null,
|
|
854
|
+
"modelKey": null,
|
|
855
|
+
"effort": null,
|
|
856
|
+
"authorizedLive": false
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
}
|
|
74
862
|
},
|
|
75
863
|
"cursor": {
|
|
76
864
|
"agent": "native",
|
|
@@ -83,9 +871,199 @@
|
|
|
83
871
|
"artifactFormat": "YAML frontmatter plus Markdown",
|
|
84
872
|
"verification": "Schema fixture and entitled Cursor invocation",
|
|
85
873
|
"sourceUrl": "https://cursor.com/docs/subagents",
|
|
86
|
-
"verifiedAt": "2026-07-20"
|
|
874
|
+
"verifiedAt": "2026-07-20",
|
|
875
|
+
"workerHealthAdapter": {
|
|
876
|
+
"version": 1,
|
|
877
|
+
"id": "cursor-direct",
|
|
878
|
+
"provider": "cursor",
|
|
879
|
+
"adapterVersion": "1",
|
|
880
|
+
"supportedVersions": "2026.10.1-e373342",
|
|
881
|
+
"runtimeDriver": "installed:cursor",
|
|
882
|
+
"catalogAdapter": {
|
|
883
|
+
"kind": "file",
|
|
884
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
885
|
+
"parser": "existing-provider-catalog"
|
|
886
|
+
},
|
|
887
|
+
"invocation": {
|
|
888
|
+
"kind": "process",
|
|
889
|
+
"executable": "cursor-agent",
|
|
890
|
+
"argv": [
|
|
891
|
+
"-p",
|
|
892
|
+
"--output-format",
|
|
893
|
+
"stream-json",
|
|
894
|
+
"--trust",
|
|
895
|
+
"--sandbox",
|
|
896
|
+
"enabled",
|
|
897
|
+
"${mode}",
|
|
898
|
+
"--workspace",
|
|
899
|
+
"${workspace}",
|
|
900
|
+
"--model",
|
|
901
|
+
"${model}"
|
|
902
|
+
],
|
|
903
|
+
"stdin": "brief-text",
|
|
904
|
+
"cwd": "${workspace}",
|
|
905
|
+
"envAllowlist": [
|
|
906
|
+
"CURSOR_API_KEY",
|
|
907
|
+
"HOME"
|
|
908
|
+
],
|
|
909
|
+
"versionPattern": "^([0-9A-Za-z.+-]{1,128})$",
|
|
910
|
+
"versionArgv": [
|
|
911
|
+
"--version"
|
|
912
|
+
],
|
|
913
|
+
"maxOutputBytes": 10485760
|
|
914
|
+
},
|
|
915
|
+
"capabilities": {
|
|
916
|
+
"output": "validated-file",
|
|
917
|
+
"modelPin": "unsupported",
|
|
918
|
+
"effort": "unsupported",
|
|
919
|
+
"cancel": "none",
|
|
920
|
+
"resume": false,
|
|
921
|
+
"sandboxModes": [
|
|
922
|
+
"external"
|
|
923
|
+
],
|
|
924
|
+
"nestedAgentsControllable": false,
|
|
925
|
+
"nativeFallbackControllable": false,
|
|
926
|
+
"hardBudget": []
|
|
927
|
+
},
|
|
928
|
+
"qualification": {
|
|
929
|
+
"status": "unqualified"
|
|
930
|
+
},
|
|
931
|
+
"invocationProfiles": {
|
|
932
|
+
"direct-shell": {
|
|
933
|
+
"transport": "shell",
|
|
934
|
+
"supportedVersions": "2026.10.1-e373342",
|
|
935
|
+
"controls": {
|
|
936
|
+
"model": {
|
|
937
|
+
"support": "unqualified",
|
|
938
|
+
"mapping": "[--model MODEL[effort=E]]; exact catalog model ID with the embedded bracket effort override, never a generic alias, never the CLI's own auto-selection ('auto'/'default'); the captured --help documents only --model, no -m short alias",
|
|
939
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents --model <model> (no -m alias) and its bracket-override syntax; unqualified until live model-pin evidence"
|
|
940
|
+
},
|
|
941
|
+
"effort": {
|
|
942
|
+
"support": "unqualified",
|
|
943
|
+
"mapping": "embedded in --model as MODEL[effort=E]; valid levels are account/backend-scoped (parameterizedModels is fetched from the Cursor backend), never a CLI default",
|
|
944
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents the bracket-override example 'claude-opus-4-8[context=1m,effort=high,fast=false]'; D: installed-module bundle read on noodle (~/.local/share/cursor-agent/versions/2026.10.01-e373342/7000.index.js), never executed shows parameterizedModels is fetched remotely; unqualified until live evidence"
|
|
945
|
+
},
|
|
946
|
+
"sandbox": {
|
|
947
|
+
"support": "unqualified",
|
|
948
|
+
"mapping": "both contracts emit [--sandbox enabled] (never --sandbox disabled); read-only additionally emits [--mode ask] (the CLI's own documented read-only mode) on top of --sandbox enabled; -f/--force, --yolo, --auto-review and --approve-mcps are out of this contract's scope and are never emitted (--approve-mcps is a bypass, not a non-approval convenience; see pitfalls)",
|
|
949
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents --sandbox <enabled|disabled>, --mode <plan|ask> ('ask: ... (read-only)') and -f/--force/--yolo/--auto-review/--approve-mcps; D: installed-module bundle read on noodle (~/.local/share/cursor-agent/versions/2026.10.01-e373342/7000.index.js and 8192.index.js), never executed, shows sandboxMode:\"enabled\" pairs with approvalMode:\"allowlist\" and --approve-mcps sets ignoreApprovals:true on the MCP approval source; unqualified until live evidence"
|
|
950
|
+
},
|
|
951
|
+
"approval": {
|
|
952
|
+
"support": "unqualified",
|
|
953
|
+
"mapping": "unavailable as a separate flag: --sandbox/--mode are the only non-bypass permission gates; the direct profile never emits -f/--force, --yolo, --auto-review or --approve-mcps",
|
|
954
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents no non-bypass approval-policy flag; unqualified until live evidence"
|
|
955
|
+
},
|
|
956
|
+
"workdir": {
|
|
957
|
+
"support": "unqualified",
|
|
958
|
+
"mapping": "[--workspace W] conductor working root, plus the conductor process cwd",
|
|
959
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents --workspace <path-or-name>; unqualified until live evidence"
|
|
960
|
+
},
|
|
961
|
+
"finalOutput": {
|
|
962
|
+
"support": "unqualified",
|
|
963
|
+
"mapping": "unavailable as a file target: no output-file flag is documented; the final is the last type:\"result\" line of the captured --output-format stream-json stdout stream",
|
|
964
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents --output-format <text|json|stream-json> with no file-path argument; D: installed-module bundle read on noodle (~/.local/share/cursor-agent/versions/2026.10.01-e373342/7000.index.js), never executed shows the single terminal result object shape; unqualified until live evidence"
|
|
965
|
+
},
|
|
966
|
+
"stdin": {
|
|
967
|
+
"support": "unqualified",
|
|
968
|
+
"mapping": "brief-text: omitting the prompt argument makes the CLI read the prompt from stdin to EOF; brief text never enters argv, rendered commands or serialized plans",
|
|
969
|
+
"evidence": "D: installed-module bundle read on noodle (~/.local/share/cursor-agent/versions/2026.10.01-e373342/7000.index.js), never executed shows the prompt-building function reads stdin to EOF only when no positional prompt argument is supplied; unqualified until live evidence"
|
|
970
|
+
},
|
|
971
|
+
"structuredOutput": {
|
|
972
|
+
"support": "unqualified",
|
|
973
|
+
"mapping": "unavailable: no output-schema flag is documented",
|
|
974
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help advertises no output-schema flag; unqualified until live evidence"
|
|
975
|
+
},
|
|
976
|
+
"stepCap": {
|
|
977
|
+
"support": "unqualified",
|
|
978
|
+
"mapping": "unavailable: no step or turn cap flag is evidenced; deadline and output-byte bounds come from the invoking shell",
|
|
979
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help advertises no step-cap flag; unknown controls block tasks requiring them"
|
|
980
|
+
},
|
|
981
|
+
"trust": {
|
|
982
|
+
"support": "unqualified",
|
|
983
|
+
"mapping": "always emitted: [--trust] removes the only documented workspace-trust prompt so the non-interactive run cannot block on it",
|
|
984
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents --trust ('Trust the current workspace without prompting'); unqualified until live evidence"
|
|
985
|
+
},
|
|
986
|
+
"children": {
|
|
987
|
+
"support": "unqualified",
|
|
988
|
+
"mapping": "unknown: no subagent/child-process fan-out flag is documented for -p",
|
|
989
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help documents no child-process flag for -p; unqualified until live evidence"
|
|
990
|
+
},
|
|
991
|
+
"fallback": {
|
|
992
|
+
"support": "unqualified",
|
|
993
|
+
"mapping": "unavailable: no fallback-model flag is documented",
|
|
994
|
+
"evidence": "H: cursor-agent 2026.10.01-e373342 --help advertises no fallback-model flag; unknown controls block tasks requiring them"
|
|
995
|
+
}
|
|
996
|
+
},
|
|
997
|
+
"envAllowlist": [
|
|
998
|
+
"CURSOR_API_KEY",
|
|
999
|
+
"HOME"
|
|
1000
|
+
],
|
|
1001
|
+
"pitfalls": [
|
|
1002
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
1003
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
1004
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
1005
|
+
"-f/--force, --yolo and --auto-review are never part of the direct profile; none was ever shipped as a new argv-prompt path.",
|
|
1006
|
+
"--approve-mcps is a BYPASS, not a harmless convenience: it sets ignoreApprovals:true on the MCP approval source (installed-module bundle read, 8192.index.js), which is folded with --force/--yolo into one upstream bypass flag. Without it, an MCP server not already recorded as approved fails its load() call and is skipped; the run continues without that server's tools. It is never emitted by this profile.",
|
|
1007
|
+
"This version's non-interactive path has no type:\"error\" terminal event: a thrown error writes plain text and exits non-zero with no JSON result line at all; a missing terminal plus a non-zero exit is the failure signal here. Defensively, ANY type:\"error\" event or non-null top-level error field fails the stream regardless of position, including after an earlier success.",
|
|
1008
|
+
"A type:\"interaction_query\" line means the CLI is waiting for an approval answer this profile cannot supply; treated as fatal regardless of position (before or after a success line), never as a pending success.",
|
|
1009
|
+
"The template placeholder ${mode} documents the conditional --mode ask that read-only additionally emits on top of --sandbox enabled; it is omitted entirely for workspace-write, never rendered as an empty token.",
|
|
1010
|
+
"CURSOR_API_KEY must be present for auth (there is no login on the evidenced host); HOME locates ~/.cursor for persistent settings.",
|
|
1011
|
+
"SE4: the raw `cursor-agent --version` banner is `2026.10.01-e373342` (leading-zero day-of-month), which is not valid semver; supportedVersions here is the semver-normalized `2026.10.1-e373342` and a caller must apply the same normalization to the live version string before qualification, or a correct installation is unconditionally refused."
|
|
1012
|
+
],
|
|
1013
|
+
"health": {
|
|
1014
|
+
"version": 1,
|
|
1015
|
+
"handshake": "process-only",
|
|
1016
|
+
"outputFraming": "jsonl",
|
|
1017
|
+
"signalParser": "provider-cursor-health-v1",
|
|
1018
|
+
"sessionLogLocator": null,
|
|
1019
|
+
"progressEvidence": [
|
|
1020
|
+
"distinct tool_call completed"
|
|
1021
|
+
],
|
|
1022
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
1023
|
+
"fixtureRef": "test/fixtures/providers/cursor/health/manifest.json",
|
|
1024
|
+
"qualifiedAt": null,
|
|
1025
|
+
"statusOperation": null,
|
|
1026
|
+
"cancelOperation": null,
|
|
1027
|
+
"coverage": "degraded",
|
|
1028
|
+
"qualificationTarget": "semantic",
|
|
1029
|
+
"evidenceGrades": [
|
|
1030
|
+
"H",
|
|
1031
|
+
"D"
|
|
1032
|
+
],
|
|
1033
|
+
"provenance": [
|
|
1034
|
+
{
|
|
1035
|
+
"kind": "help",
|
|
1036
|
+
"ref": "tools/ralph-external/lib/cursor-adapter.mjs",
|
|
1037
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
1038
|
+
"cliVersion": "2026.10.1-e373342"
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
"kind": "repository",
|
|
1042
|
+
"ref": "tools/ralph-external/lib/cursor-adapter.mjs",
|
|
1043
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
1044
|
+
"cliVersion": null
|
|
1045
|
+
}
|
|
1046
|
+
],
|
|
1047
|
+
"qualificationOwner": "B-OG-38",
|
|
1048
|
+
"qualification": {
|
|
1049
|
+
"status": "unqualified",
|
|
1050
|
+
"scopeDigest": null,
|
|
1051
|
+
"cliVersion": null,
|
|
1052
|
+
"accountScope": null,
|
|
1053
|
+
"profileRef": null,
|
|
1054
|
+
"modelKey": null,
|
|
1055
|
+
"effort": null,
|
|
1056
|
+
"authorizedLive": false
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
87
1062
|
},
|
|
88
1063
|
"factory": {
|
|
1064
|
+
"sessionEnvAllowlist": [
|
|
1065
|
+
"FACTORY_API_KEY"
|
|
1066
|
+
],
|
|
89
1067
|
"agent": "native",
|
|
90
1068
|
"skill": "informational",
|
|
91
1069
|
"globalChild": "native",
|
|
@@ -101,9 +1079,203 @@
|
|
|
101
1079
|
"artifactFormat": "YAML frontmatter plus Markdown",
|
|
102
1080
|
"verification": "Fixture validation and Factory CLI model report",
|
|
103
1081
|
"sourceUrl": "https://docs.factory.ai/cli/configuration/custom-droids",
|
|
104
|
-
"verifiedAt": "2026-07-20"
|
|
1082
|
+
"verifiedAt": "2026-07-20",
|
|
1083
|
+
"workerHealthAdapter": {
|
|
1084
|
+
"version": 1,
|
|
1085
|
+
"id": "factory-direct",
|
|
1086
|
+
"provider": "factory",
|
|
1087
|
+
"adapterVersion": "1",
|
|
1088
|
+
"supportedVersions": "0.238.0",
|
|
1089
|
+
"runtimeDriver": "installed:factory",
|
|
1090
|
+
"catalogAdapter": {
|
|
1091
|
+
"kind": "file",
|
|
1092
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
1093
|
+
"parser": "existing-provider-catalog"
|
|
1094
|
+
},
|
|
1095
|
+
"invocation": {
|
|
1096
|
+
"kind": "process",
|
|
1097
|
+
"executable": "droid",
|
|
1098
|
+
"argv": [
|
|
1099
|
+
"exec",
|
|
1100
|
+
"--auto",
|
|
1101
|
+
"${sandbox}",
|
|
1102
|
+
"-m",
|
|
1103
|
+
"${model}",
|
|
1104
|
+
"-r",
|
|
1105
|
+
"${effort}",
|
|
1106
|
+
"--cwd",
|
|
1107
|
+
"${workspace}",
|
|
1108
|
+
"--output-format",
|
|
1109
|
+
"stream-json"
|
|
1110
|
+
],
|
|
1111
|
+
"stdin": "brief-text",
|
|
1112
|
+
"cwd": "${workspace}",
|
|
1113
|
+
"envAllowlist": ["FACTORY_API_KEY", "HOME"],
|
|
1114
|
+
"versionArgv": [
|
|
1115
|
+
"--version"
|
|
1116
|
+
],
|
|
1117
|
+
"maxOutputBytes": 10485760
|
|
1118
|
+
},
|
|
1119
|
+
"capabilities": {
|
|
1120
|
+
"output": "validated-file",
|
|
1121
|
+
"modelPin": "unsupported",
|
|
1122
|
+
"effort": "unsupported",
|
|
1123
|
+
"cancel": "none",
|
|
1124
|
+
"resume": false,
|
|
1125
|
+
"sandboxModes": [
|
|
1126
|
+
"external"
|
|
1127
|
+
],
|
|
1128
|
+
"nestedAgentsControllable": false,
|
|
1129
|
+
"nativeFallbackControllable": false,
|
|
1130
|
+
"hardBudget": []
|
|
1131
|
+
},
|
|
1132
|
+
"qualification": {
|
|
1133
|
+
"status": "unqualified"
|
|
1134
|
+
},
|
|
1135
|
+
"invocationProfiles": {
|
|
1136
|
+
"direct-shell": {
|
|
1137
|
+
"transport": "shell",
|
|
1138
|
+
"supportedVersions": "0.238.0",
|
|
1139
|
+
"controls": {
|
|
1140
|
+
"model": {
|
|
1141
|
+
"support": "unqualified",
|
|
1142
|
+
"mapping": "[-m/--model MODEL]; exact catalog model ID, never the CLI default (gpt-6-sol) or a generic alias",
|
|
1143
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents -m/--model <id> (default: \"gpt-6-sol\"); unqualified until live model-pin evidence"
|
|
1144
|
+
},
|
|
1145
|
+
"effort": {
|
|
1146
|
+
"support": "unqualified",
|
|
1147
|
+
"mapping": "[-r/--reasoning-effort LEVEL]; valid levels are model-dependent (exec --help 'Model details'); never the per-model default",
|
|
1148
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents -r/--reasoning-effort <level> (defaults per model); unqualified until live evidence"
|
|
1149
|
+
},
|
|
1150
|
+
"sandbox": {
|
|
1151
|
+
"support": "unqualified",
|
|
1152
|
+
"mapping": "workspace-write -> [--auto low]; read-only -> no --auto flag (the CLI's own documented read-only default); --skip-permissions-unsafe and the medium/high --auto tiers are out of this contract's scope and are never emitted",
|
|
1153
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents --auto <level> (low|medium|high), its 'Autonomy Levels' default read-only mode, and --skip-permissions-unsafe ('Bypass all checks - DANGEROUS!'); unqualified until live evidence"
|
|
1154
|
+
},
|
|
1155
|
+
"approval": {
|
|
1156
|
+
"support": "unqualified",
|
|
1157
|
+
"mapping": "unavailable as a separate flag: exec is non-interactive by construction and --auto (the sandbox control) is the only permission gate",
|
|
1158
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents exec as 'Run non-interactively (for scripts/automation)' with no approval-prompt flag; unqualified until live evidence"
|
|
1159
|
+
},
|
|
1160
|
+
"workdir": {
|
|
1161
|
+
"support": "unqualified",
|
|
1162
|
+
"mapping": "[--cwd W] conductor working root, plus the conductor process cwd",
|
|
1163
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents --cwd <path>; unqualified until live evidence"
|
|
1164
|
+
},
|
|
1165
|
+
"finalOutput": {
|
|
1166
|
+
"support": "unqualified",
|
|
1167
|
+
"mapping": "unavailable as a file target: no -o/output-file flag is documented for exec (-o/--output-format selects stream shape, not a destination); the final is the last type:\"result\" line of the captured --output-format stream-json stdout stream",
|
|
1168
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents -o/--output-format <text|json|stream-json|stream-jsonrpc|acp> with no file-path argument; D: https://docs.factory.com/droid-exec/overview documents the terminal result object shape; unqualified until live evidence"
|
|
1169
|
+
},
|
|
1170
|
+
"stdin": {
|
|
1171
|
+
"support": "unqualified",
|
|
1172
|
+
"mapping": "brief-text: omitting the prompt argument makes exec read the prompt from stdin to EOF; brief text never enters argv, rendered commands or serialized plans",
|
|
1173
|
+
"evidence": "H: droid-cli 0.238.0 exec --help's own Examples ('echo \"analyze code\" | droid exec', 'cat prompt.txt | droid exec --auto low'); unqualified until live evidence"
|
|
1174
|
+
},
|
|
1175
|
+
"structuredOutput": {
|
|
1176
|
+
"support": "unqualified",
|
|
1177
|
+
"mapping": "unavailable: no --output-schema-equivalent flag is documented for exec",
|
|
1178
|
+
"evidence": "H: droid-cli 0.238.0 exec --help advertises no output-schema flag; unqualified until live evidence"
|
|
1179
|
+
},
|
|
1180
|
+
"stepCap": {
|
|
1181
|
+
"support": "unqualified",
|
|
1182
|
+
"mapping": "unavailable: no step or turn cap flag is evidenced on 0.238.0; deadline and output-byte bounds come from the invoking shell",
|
|
1183
|
+
"evidence": "H: droid-cli 0.238.0 exec --help advertises no step-cap flag; unknown controls block tasks requiring them"
|
|
1184
|
+
},
|
|
1185
|
+
"trust": {
|
|
1186
|
+
"support": "unqualified",
|
|
1187
|
+
"mapping": "unknown: workspace-trust behaviour is not evidenced for non-interactive exec on 0.238.0",
|
|
1188
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents no trust-prompt flag for exec; unqualified until live evidence"
|
|
1189
|
+
},
|
|
1190
|
+
"children": {
|
|
1191
|
+
"support": "unqualified",
|
|
1192
|
+
"mapping": "controllable: --mission spawns worker sessions via factoryd (never emitted by this profile, which keeps every run single-agent)",
|
|
1193
|
+
"evidence": "H: droid-cli 0.238.0 exec --help documents --mission/--worker-model/--validator-model as mission-mode only; the direct profile never emits them; unqualified until live evidence"
|
|
1194
|
+
},
|
|
1195
|
+
"fallback": {
|
|
1196
|
+
"support": "unqualified",
|
|
1197
|
+
"mapping": "unavailable: no non-mission fallback-model flag is documented for exec (--spec-model/--worker-model/--validator-model are mission-mode only)",
|
|
1198
|
+
"evidence": "H: droid-cli 0.238.0 exec --help scopes --spec-model/--worker-model/--validator-model to --mission/--use-spec; unknown controls block tasks requiring them"
|
|
1199
|
+
}
|
|
1200
|
+
},
|
|
1201
|
+
"envAllowlist": ["FACTORY_API_KEY", "HOME"],
|
|
1202
|
+
"pitfalls": [
|
|
1203
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
1204
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
1205
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
1206
|
+
"--skip-permissions-unsafe is Ralph-loop legacy and never part of the direct profile.",
|
|
1207
|
+
"The stream-json/json event vocabulary (assistant/user/tool_call/tool_result/hook/error/result) is doc-sourced (docs.factory.com), not help-verified; it never promotes qualification status beyond unqualified.",
|
|
1208
|
+
"There is no -o/output-file flag on exec: the final is read from the captured stdout stream, never a separate file.",
|
|
1209
|
+
"FACTORY_API_KEY must be present for auth; HOME locates ~/.factory/settings.json for persistent settings."
|
|
1210
|
+
],
|
|
1211
|
+
"health": {
|
|
1212
|
+
"version": 1,
|
|
1213
|
+
"handshake": "process-only",
|
|
1214
|
+
"outputFraming": "jsonl",
|
|
1215
|
+
"signalParser": "provider-factory-health-v1",
|
|
1216
|
+
"sessionLogLocator": null,
|
|
1217
|
+
"progressEvidence": [
|
|
1218
|
+
"distinct tool_result"
|
|
1219
|
+
],
|
|
1220
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
1221
|
+
"fixtureRef": "test/fixtures/providers/factory/health/manifest.json",
|
|
1222
|
+
"qualifiedAt": null,
|
|
1223
|
+
"statusOperation": null,
|
|
1224
|
+
"cancelOperation": null,
|
|
1225
|
+
"coverage": "degraded",
|
|
1226
|
+
"qualificationTarget": "semantic",
|
|
1227
|
+
"evidenceGrades": [
|
|
1228
|
+
"H",
|
|
1229
|
+
"D"
|
|
1230
|
+
],
|
|
1231
|
+
"provenance": [
|
|
1232
|
+
{
|
|
1233
|
+
"kind": "help",
|
|
1234
|
+
"ref": "tools/ralph-external/lib/factory-adapter.mjs",
|
|
1235
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
1236
|
+
"cliVersion": "0.238.0"
|
|
1237
|
+
},
|
|
1238
|
+
{
|
|
1239
|
+
"kind": "documentation",
|
|
1240
|
+
"ref": "https://docs.factory.com/droid-exec/overview; https://docs.factory.com/sdk/typescript",
|
|
1241
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
1242
|
+
"cliVersion": null
|
|
1243
|
+
}
|
|
1244
|
+
],
|
|
1245
|
+
"qualificationOwner": "B-OG-37",
|
|
1246
|
+
"qualification": {
|
|
1247
|
+
"status": "unqualified",
|
|
1248
|
+
"scopeDigest": null,
|
|
1249
|
+
"cliVersion": null,
|
|
1250
|
+
"accountScope": null,
|
|
1251
|
+
"profileRef": null,
|
|
1252
|
+
"modelKey": null,
|
|
1253
|
+
"effort": null,
|
|
1254
|
+
"authorizedLive": false
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
105
1260
|
},
|
|
106
1261
|
"opencode": {
|
|
1262
|
+
"sessionEnvAllowlist": [
|
|
1263
|
+
"OPENAI_API_KEY",
|
|
1264
|
+
"ANTHROPIC_API_KEY",
|
|
1265
|
+
"GEMINI_API_KEY",
|
|
1266
|
+
"GOOGLE_API_KEY",
|
|
1267
|
+
"OPENROUTER_API_KEY",
|
|
1268
|
+
"GROQ_API_KEY",
|
|
1269
|
+
"MISTRAL_API_KEY",
|
|
1270
|
+
"XAI_API_KEY",
|
|
1271
|
+
"DEEPSEEK_API_KEY",
|
|
1272
|
+
"OPENCODE_API_KEY",
|
|
1273
|
+
"OPENCODE_CONFIG",
|
|
1274
|
+
"OPENCODE_CONFIG_DIR",
|
|
1275
|
+
"OPENCODE_CONFIG_CONTENT",
|
|
1276
|
+
"OPENCODE_SERVER_USERNAME",
|
|
1277
|
+
"OPENCODE_SERVER_PASSWORD"
|
|
1278
|
+
],
|
|
107
1279
|
"agent": "native",
|
|
108
1280
|
"skill": "unsupported",
|
|
109
1281
|
"globalChild": "inherited",
|
|
@@ -114,22 +1286,385 @@
|
|
|
114
1286
|
"artifactFormat": "YAML frontmatter plus Markdown",
|
|
115
1287
|
"verification": "Inspect artifact and OpenCode model registry",
|
|
116
1288
|
"sourceUrl": "https://opencode.ai/docs/agents",
|
|
117
|
-
"verifiedAt": "2026-07-20"
|
|
1289
|
+
"verifiedAt": "2026-07-20",
|
|
1290
|
+
"workerHealthAdapter": {
|
|
1291
|
+
"version": 1,
|
|
1292
|
+
"id": "opencode-direct",
|
|
1293
|
+
"provider": "opencode",
|
|
1294
|
+
"adapterVersion": "1",
|
|
1295
|
+
"supportedVersions": "2.0.26",
|
|
1296
|
+
"runtimeDriver": "installed:opencode",
|
|
1297
|
+
"catalogAdapter": {
|
|
1298
|
+
"kind": "file",
|
|
1299
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
1300
|
+
"parser": "existing-provider-catalog"
|
|
1301
|
+
},
|
|
1302
|
+
"invocation": {
|
|
1303
|
+
"kind": "process",
|
|
1304
|
+
"executable": "opencode",
|
|
1305
|
+
"argv": [
|
|
1306
|
+
"run",
|
|
1307
|
+
"--format",
|
|
1308
|
+
"json",
|
|
1309
|
+
"-m",
|
|
1310
|
+
"${model}",
|
|
1311
|
+
"-f",
|
|
1312
|
+
"${briefFile}",
|
|
1313
|
+
"Follow the instructions in the attached file exactly."
|
|
1314
|
+
],
|
|
1315
|
+
"stdin": "closed",
|
|
1316
|
+
"cwd": "${workspace}",
|
|
1317
|
+
"envAllowlist": [],
|
|
1318
|
+
"versionArgv": [
|
|
1319
|
+
"--version"
|
|
1320
|
+
],
|
|
1321
|
+
"maxOutputBytes": 10485760
|
|
1322
|
+
},
|
|
1323
|
+
"capabilities": {
|
|
1324
|
+
"output": "text",
|
|
1325
|
+
"modelPin": "unsupported",
|
|
1326
|
+
"effort": "unsupported",
|
|
1327
|
+
"cancel": "none",
|
|
1328
|
+
"resume": false,
|
|
1329
|
+
"sandboxModes": [
|
|
1330
|
+
"external"
|
|
1331
|
+
],
|
|
1332
|
+
"nestedAgentsControllable": false,
|
|
1333
|
+
"nativeFallbackControllable": false,
|
|
1334
|
+
"hardBudget": []
|
|
1335
|
+
},
|
|
1336
|
+
"qualification": {
|
|
1337
|
+
"status": "unqualified"
|
|
1338
|
+
},
|
|
1339
|
+
"invocationProfiles": {
|
|
1340
|
+
"direct-shell": {
|
|
1341
|
+
"transport": "shell",
|
|
1342
|
+
"supportedVersions": "2.0.26",
|
|
1343
|
+
"controls": {
|
|
1344
|
+
"model": {
|
|
1345
|
+
"support": "unqualified",
|
|
1346
|
+
"mapping": "-m/--model (opencode run --help: '--model, -m string Model to use in the format provider/model#variant')",
|
|
1347
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help` (captured 2026-10-10, .aiwg/working/s1-scratch/cli-help/opencode-2.0.26.txt)"
|
|
1348
|
+
},
|
|
1349
|
+
"effort": {
|
|
1350
|
+
"support": "unqualified",
|
|
1351
|
+
"mapping": "explicit effort maps to a #<variant> suffix on --model (provider/model#variant); binary disassembly of the installed CLI (the variant-builder, minified as qU(model, manual)) shows variant ids are drawn directly from each model's own capabilities.supports.reasoning_effort list (e.g. low/medium/high), or fixed ids \"max\"/\"high\" for extended-thinking models exposing max_thinking_budget instead; the valid id set is model-specific and not enumerated here, so this adapter appends a syntactically valid id and the real CLI refuses one a given model does not expose",
|
|
1352
|
+
"evidence": "R: conductor binary disassembly of the installed opencode 2.0.26 CLI (variant-builder function, host 'noodle', 2026-10-09), confirming H: opencode 2.0.26 `opencode run --help` ('--model, -m string Model to use in the format provider/model#variant')"
|
|
1353
|
+
},
|
|
1354
|
+
"sandbox": {
|
|
1355
|
+
"support": "unqualified",
|
|
1356
|
+
"mapping": "unavailable: no scoped sandbox flag on 'run'; the only permission-adjacent flag is --auto, a blanket approval bypass this profile never emits",
|
|
1357
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help` ('--auto Auto-approve permissions that are not explicitly denied')"
|
|
1358
|
+
},
|
|
1359
|
+
"approval": {
|
|
1360
|
+
"support": "unqualified",
|
|
1361
|
+
"mapping": "--auto ('Auto-approve permissions that are not explicitly denied') is a blanket bypass and is refused by policy; what a permission request does without --auto in non-interactive `run` is not independently confirmed: binary disassembly shows a shared permission.asked/permission.replied protocol where an unanswered request resolves to a \"reject\" outcome (`_===\"once\"||_===\"always\"?_:\"reject\"`, with requestPermission(...).catch(()=>{return}) on no responder), but that path is traced through the ACP/session-protocol layer, not reproduced against plain `run`, so this stays unavailable rather than asserted",
|
|
1362
|
+
"evidence": "R: conductor binary disassembly of the installed opencode 2.0.26 CLI (permission.asked/permission.replied reject-on-no-answer pattern, host 'noodle', 2026-10-09), confirming H: opencode 2.0.26 `opencode run --help`"
|
|
1363
|
+
},
|
|
1364
|
+
"workdir": {
|
|
1365
|
+
"support": "unqualified",
|
|
1366
|
+
"mapping": "no --dir/--cwd flag on 'run' (the root 'opencode <subcommand> [flags] [<directory>]' positional is not evidenced on 'run --help'); the shared renderer's 'cd ${workspace}' sets the process working directory opencode executes in",
|
|
1367
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help` and `opencode --help`"
|
|
1368
|
+
},
|
|
1369
|
+
"finalOutput": {
|
|
1370
|
+
"support": "unqualified",
|
|
1371
|
+
"mapping": "no --output/-o flag and no positive whole-run terminal event (binary disassembly: the run loop returns silently on session.execution.succeeded, in any mode); the final answer is the captured stdout --format json JSONL stream, accepted only when every line parses, no error event occurs, any present step_finish says \"stop\", and at least one text part has a recorded part.time.end (or a stop step_finish substitutes for that) -- a live 2.0.26 run confirmed a clean single-text-event stream with no step_start/step_finish at all",
|
|
1372
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help` ('--format choice Output format (choices: default, json)')"
|
|
1373
|
+
},
|
|
1374
|
+
"stdin": {
|
|
1375
|
+
"support": "unqualified",
|
|
1376
|
+
"mapping": "confirmed unsupported: disassembly of the installed opencode 2.0.26 binary found no stdin/isTTY handling in the compiled 'run' chunk; the brief rides on -f/--file as a path instead, and the positional argument carries only a fixed, content-free instruction",
|
|
1377
|
+
"evidence": "R: conductor binary disassembly of the installed opencode 2.0.26 CLI (no stdin/isTTY handling in the compiled 'run' chunk, host 'noodle', 2026-10-09), confirming H: opencode 2.0.26 `opencode run --help`"
|
|
1378
|
+
},
|
|
1379
|
+
"structuredOutput": {
|
|
1380
|
+
"support": "unqualified",
|
|
1381
|
+
"mapping": "unavailable: no --output-schema or equivalent flag is documented for 'run'",
|
|
1382
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help`"
|
|
1383
|
+
},
|
|
1384
|
+
"stepCap": {
|
|
1385
|
+
"support": "unqualified",
|
|
1386
|
+
"mapping": "unavailable: no --max-steps/--max-turns flag is documented for 'run'",
|
|
1387
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help`"
|
|
1388
|
+
},
|
|
1389
|
+
"trust": {
|
|
1390
|
+
"support": "unqualified",
|
|
1391
|
+
"mapping": "unavailable: no workspace-trust flag is documented; --auto would approve pending trust prompts and is never emitted by this profile",
|
|
1392
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help`"
|
|
1393
|
+
},
|
|
1394
|
+
"children": {
|
|
1395
|
+
"support": "unqualified",
|
|
1396
|
+
"mapping": "unavailable: no subagent/nested-delegation control is documented for 'run'",
|
|
1397
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help`"
|
|
1398
|
+
},
|
|
1399
|
+
"fallback": {
|
|
1400
|
+
"support": "unqualified",
|
|
1401
|
+
"mapping": "unavailable: no model-fallback flag is documented; fallback selection stays policy-owned outside the CLI",
|
|
1402
|
+
"evidence": "H: opencode 2.0.26 `opencode run --help`"
|
|
1403
|
+
}
|
|
1404
|
+
},
|
|
1405
|
+
"envAllowlist": [],
|
|
1406
|
+
"pitfalls": [
|
|
1407
|
+
"Stdin is confirmed unsupported (conductor disassembly of the installed opencode 2.0.26 binary: no stdin/isTTY handling in the compiled 'run' chunk, host 'noodle', 2026-10-09). The brief travels as an attached file via -f/--file; the positional argv message is a fixed, content-free instruction and never carries brief text.",
|
|
1408
|
+
"There is no positive session-terminal JSON event in any compatibility mode: binary disassembly shows the run loop returns silently on session.execution.succeeded. A live 2.0.26 smoke run (one complete `text` event, nothing else) confirms this is a genuine success shape, not truncation; parseOutput accepts a complete text part OR a step_finish reason \"stop\" as the positive signal, never exit code alone.",
|
|
1409
|
+
"--auto is a blanket permission/approval bypass ('Auto-approve permissions that are not explicitly denied') and is never part of the direct profile.",
|
|
1410
|
+
"'opencode serve' is an HTTP API, not MCP, and 'opencode mcp' manages MCP *clients* the agent can call out to, not a worker-serving endpoint; the AIWG worker-invoke bridge remains the MCP route.",
|
|
1411
|
+
"Documentation/help and synthetic observations are not authenticated live qualification."
|
|
1412
|
+
],
|
|
1413
|
+
"health": {
|
|
1414
|
+
"version": 1,
|
|
1415
|
+
"handshake": "process-only",
|
|
1416
|
+
"outputFraming": "jsonl",
|
|
1417
|
+
"signalParser": "provider-opencode-health-v1",
|
|
1418
|
+
"sessionLogLocator": null,
|
|
1419
|
+
"progressEvidence": [],
|
|
1420
|
+
"stopEvidence": "owned process identity and observed exit, plus parseOutput's strict rule: a complete text part (part.time.end present) or a step_finish reason \"stop\"; there is no whole-run terminal event (binary: the run loop returns silently on session.execution.succeeded), so exit code alone is never sufficient",
|
|
1421
|
+
"fixtureRef": "test/fixtures/providers/opencode/health/manifest.json",
|
|
1422
|
+
"qualifiedAt": null,
|
|
1423
|
+
"statusOperation": null,
|
|
1424
|
+
"cancelOperation": null,
|
|
1425
|
+
"coverage": "degraded",
|
|
1426
|
+
"qualificationTarget": "semantic",
|
|
1427
|
+
"evidenceGrades": [
|
|
1428
|
+
"H",
|
|
1429
|
+
"R"
|
|
1430
|
+
],
|
|
1431
|
+
"provenance": [
|
|
1432
|
+
{
|
|
1433
|
+
"kind": "help",
|
|
1434
|
+
"ref": "opencode run --help / opencode --help (captured .aiwg/working/s1-scratch/cli-help/opencode-2.0.26.txt)",
|
|
1435
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
1436
|
+
"cliVersion": "2.0.26"
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"kind": "repository",
|
|
1440
|
+
"ref": "tools/ralph-external/lib/opencode-adapter.mjs; conductor live smoke run + binary disassembly of installed opencode 2.0.26 (host 'noodle', 2026-10-10; .aiwg/working/s1-scratch/smoke-opencode.jsonl) redefining parseOutput final-output validity",
|
|
1441
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
1442
|
+
"cliVersion": "2.0.26"
|
|
1443
|
+
}
|
|
1444
|
+
],
|
|
1445
|
+
"qualificationOwner": "B-OG-39",
|
|
1446
|
+
"qualification": {
|
|
1447
|
+
"status": "unqualified",
|
|
1448
|
+
"scopeDigest": null,
|
|
1449
|
+
"cliVersion": null,
|
|
1450
|
+
"accountScope": null,
|
|
1451
|
+
"profileRef": null,
|
|
1452
|
+
"modelKey": null,
|
|
1453
|
+
"effort": null,
|
|
1454
|
+
"authorizedLive": false
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
118
1460
|
},
|
|
119
1461
|
"warp": {
|
|
120
1462
|
"agent": "global-only",
|
|
121
1463
|
"skill": "unsupported",
|
|
122
1464
|
"globalChild": "native",
|
|
123
|
-
"identifierSyntax": "Warp
|
|
1465
|
+
"identifierSyntax": "Warp model identifier accepted by `warp-terminal agent run --model`",
|
|
124
1466
|
"inheritance": "All delegated work uses run/profile selection",
|
|
125
1467
|
"invalidPinFallback": "Profile availability dependent",
|
|
126
1468
|
"configTarget": "Warp agent profile or run configuration",
|
|
127
1469
|
"artifactFormat": "Saved profile / run control plane",
|
|
128
1470
|
"verification": "Inspect active profile and run metadata",
|
|
129
1471
|
"sourceUrl": "https://docs.warp.dev/agent-platform/capabilities/agent-profiles-permissions",
|
|
130
|
-
"verifiedAt": "2026-07-20"
|
|
1472
|
+
"verifiedAt": "2026-07-20",
|
|
1473
|
+
"workerHealthAdapter": {
|
|
1474
|
+
"version": 1,
|
|
1475
|
+
"id": "warp",
|
|
1476
|
+
"provider": "warp",
|
|
1477
|
+
"adapterVersion": "1",
|
|
1478
|
+
"supportedVersions": "0.2026.10.07.08.29.stable_00",
|
|
1479
|
+
"runtimeDriver": "installed:warp",
|
|
1480
|
+
"catalogAdapter": {
|
|
1481
|
+
"kind": "file",
|
|
1482
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
1483
|
+
"parser": "existing-provider-catalog"
|
|
1484
|
+
},
|
|
1485
|
+
"invocation": {
|
|
1486
|
+
"kind": "process",
|
|
1487
|
+
"executable": "warp-terminal",
|
|
1488
|
+
"argv": [
|
|
1489
|
+
"agent",
|
|
1490
|
+
"run",
|
|
1491
|
+
"--output-format",
|
|
1492
|
+
"json",
|
|
1493
|
+
"--model",
|
|
1494
|
+
"${model}",
|
|
1495
|
+
"--cwd",
|
|
1496
|
+
"${workspace}",
|
|
1497
|
+
"--skill",
|
|
1498
|
+
"aiwg-brief-${invocationId}",
|
|
1499
|
+
"--no-snapshot"
|
|
1500
|
+
],
|
|
1501
|
+
"stdin": "closed",
|
|
1502
|
+
"cwd": "${workspace}",
|
|
1503
|
+
"envAllowlist": [
|
|
1504
|
+
"WARP_API_KEY"
|
|
1505
|
+
],
|
|
1506
|
+
"versionArgv": [
|
|
1507
|
+
"--version"
|
|
1508
|
+
],
|
|
1509
|
+
"maxOutputBytes": 10485760
|
|
1510
|
+
},
|
|
1511
|
+
"capabilities": {
|
|
1512
|
+
"output": "text",
|
|
1513
|
+
"modelPin": "unsupported",
|
|
1514
|
+
"effort": "unsupported",
|
|
1515
|
+
"cancel": "none",
|
|
1516
|
+
"resume": false,
|
|
1517
|
+
"sandboxModes": [
|
|
1518
|
+
"external"
|
|
1519
|
+
],
|
|
1520
|
+
"nestedAgentsControllable": false,
|
|
1521
|
+
"nativeFallbackControllable": false,
|
|
1522
|
+
"hardBudget": []
|
|
1523
|
+
},
|
|
1524
|
+
"qualification": {
|
|
1525
|
+
"status": "unqualified"
|
|
1526
|
+
},
|
|
1527
|
+
"invocationProfiles": {
|
|
1528
|
+
"direct-shell": {
|
|
1529
|
+
"transport": "shell",
|
|
1530
|
+
"supportedVersions": "0.2026.10.07.08.29.stable_00",
|
|
1531
|
+
"controls": {
|
|
1532
|
+
"model": {
|
|
1533
|
+
"support": "unqualified",
|
|
1534
|
+
"mapping": "[--model MODEL_ID] exact observed model id, never 'auto'/'default'",
|
|
1535
|
+
"evidence": "H: warp-terminal 0.2026.10.07.08.29.stable_00 `agent run --help` documents `--model <MODEL_ID>` ('Override the base model used by this command ... For the default Oz harness, use `oz model list` to see available model IDs') with no enum; unqualified until live model-pin evidence"
|
|
1536
|
+
},
|
|
1537
|
+
"effort": {
|
|
1538
|
+
"support": "unqualified",
|
|
1539
|
+
"mapping": "unavailable: no reasoning-effort flag is documented anywhere in the full captured `agent`/`agent run --help`",
|
|
1540
|
+
"evidence": "H: full `agent run --help` capture (.aiwg/working/s1-scratch/cli-help/warp-0.2026.10.07.txt) names no effort/reasoning flag; unknown controls block tasks requiring them"
|
|
1541
|
+
},
|
|
1542
|
+
"sandbox": {
|
|
1543
|
+
"support": "unqualified",
|
|
1544
|
+
"mapping": "unavailable as a CLI flag: no sandbox/permission-mode flag is documented for a local run; only an external boundary is reportable",
|
|
1545
|
+
"evidence": "H: `agent run --help` lists no sandbox/permission-mode flag; unqualified until live evidence"
|
|
1546
|
+
},
|
|
1547
|
+
"approval": {
|
|
1548
|
+
"support": "unqualified",
|
|
1549
|
+
"mapping": "unavailable: no approval/auto-approve flag is documented for this CLI",
|
|
1550
|
+
"evidence": "H: `agent run --help` lists no approval flag; unqualified until live evidence"
|
|
1551
|
+
},
|
|
1552
|
+
"workdir": {
|
|
1553
|
+
"support": "unqualified",
|
|
1554
|
+
"mapping": "[-C/--cwd CWD] ('Working directory for the agent'), always the absolute resolved workspace, never a cloud `--environment`",
|
|
1555
|
+
"evidence": "H: `agent run --help` documents `-C, --cwd <CWD>`; unqualified until live evidence"
|
|
1556
|
+
},
|
|
1557
|
+
"finalOutput": {
|
|
1558
|
+
"support": "unqualified",
|
|
1559
|
+
"mapping": "[--output-format json], always emitted; no vendor success/error envelope is evidenced (help names the format but not its shape, and binary `strings` hits were too generic to establish grammar), so candidate extraction always returns null and the claims hook refuses all output until an authenticated Oz terminal envelope is observed",
|
|
1560
|
+
"evidence": "H: `agent run --help` documents `--output-format <OUTPUT_FORMAT>` (json|ndjson|pretty|text); R: live no-model probe on noodle 2026-10-11 confirmed the full template reaches the auth stop with no argument error, but the host has no login so no real output was observed; unqualified until live evidence"
|
|
1561
|
+
},
|
|
1562
|
+
"stdin": {
|
|
1563
|
+
"support": "unqualified",
|
|
1564
|
+
"mapping": "unavailable: no stdin-mode flag is documented; this profile never sends stdin content",
|
|
1565
|
+
"evidence": "H: `agent run --help` lists no stdin-input flag; unqualified until live evidence"
|
|
1566
|
+
},
|
|
1567
|
+
"structuredOutput": {
|
|
1568
|
+
"support": "unqualified",
|
|
1569
|
+
"mapping": "unavailable: no JSON-schema-enforcement flag is documented",
|
|
1570
|
+
"evidence": "H: `agent run --help` lists no schema flag; unqualified until live evidence"
|
|
1571
|
+
},
|
|
1572
|
+
"stepCap": {
|
|
1573
|
+
"support": "unqualified",
|
|
1574
|
+
"mapping": "unavailable: no step/turn cap flag is evidenced",
|
|
1575
|
+
"evidence": "H: `agent run --help` lists no step-cap flag; unknown controls block tasks requiring them"
|
|
1576
|
+
},
|
|
1577
|
+
"trust": {
|
|
1578
|
+
"support": "unqualified",
|
|
1579
|
+
"mapping": "unavailable: no workspace-trust flag is documented",
|
|
1580
|
+
"evidence": "H: `agent run --help` advertises no trust flag; unqualified until live evidence"
|
|
1581
|
+
},
|
|
1582
|
+
"children": {
|
|
1583
|
+
"support": "unqualified",
|
|
1584
|
+
"mapping": "unavailable: `--harness claude|codex` (third-party harness mode) is documented but never emitted by this profile (conductor notes, #2905: out of scope); no other fan-out/subagent flag is evidenced for a local run",
|
|
1585
|
+
"evidence": "H: `agent run --help` documents `--model` noting harness-specific behavior under `--harness`, which this profile never passes; unqualified until live evidence"
|
|
1586
|
+
},
|
|
1587
|
+
"fallback": {
|
|
1588
|
+
"support": "unqualified",
|
|
1589
|
+
"mapping": "unavailable: no fallback-model flag is documented",
|
|
1590
|
+
"evidence": "H: `agent run --help` advertises no fallback-model flag; unknown controls block tasks requiring them"
|
|
1591
|
+
}
|
|
1592
|
+
},
|
|
1593
|
+
"envAllowlist": [
|
|
1594
|
+
"WARP_API_KEY"
|
|
1595
|
+
],
|
|
1596
|
+
"pitfalls": [
|
|
1597
|
+
"Documentation/help and synthetic observations are not authenticated live qualification; the host used for probes (noodle) has no `warp-terminal login`/`WARP_API_KEY`, so every probe stopped at the auth check and never reached a model.",
|
|
1598
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
1599
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
1600
|
+
"There is NO `oz` symlink on the evidenced host: the real executable is `warp-terminal`, with `agent run` etc. as its subcommands; `runtimeDriver`/`executable` are pinned to that, not to a bare `oz`.",
|
|
1601
|
+
"BRIEF TRANSPORT IS BLOCKED PENDING A SHARED CHANGE: `--prompt` places the brief on argv (never emitted by this profile); `-f/--file` is NOT a member of the required `<--prompt|--saved-prompt|--task-id|--skill>` group (live probe, 2026-10-11) and its own config-file schema is undocumented, so it cannot be assumed to carry the brief; `--skill` is the only remaining required-group member that can carry free text (`agent run --help`: 'Use a skill as the base prompt for the agent' when given without `--prompt`), but its search root relative to `--cwd` and behavior when the skill is missing are UNVERIFIED behind the login gate. The pure adapter derives a distinct `aiwg-brief-<invocationId>` path without writes and refuses unsafe IDs. `buildWarpBriefSkillFile()` (tools/ralph-external/lib/warp-adapter.mjs) exports the exact path/content an execution-time file-generation primitive would need to write before this argv runs; that primitive does not exist in the shared session-launcher today (the same class of gap as #2998 for Antigravity's stdin frame). Needed shared change: an execution-time generated-artifact primitive the session-launcher can call with the adapter-exported `{ relativePath, content }` immediately before spawning the worker process, with invocation identity supplied to the adapter, refusal to overwrite an existing path, cleanup afterward, and no commits of generated skills (pending #3002). Brief transport is NOT available today.",
|
|
1602
|
+
"`--environment`/`-e` (cloud environment/runner) and `--harness claude|codex` (third-party harness mode) are documented but NEVER emitted by this profile; the cloud subcommand is also never emitted. Execution location is unverified until an authenticated run.",
|
|
1603
|
+
"`--no-snapshot` is always emitted: `agent run --help` documents it as disabling the end-of-run workspace snapshot upload. This flag does not establish execution location or absence of other uploads.",
|
|
1604
|
+
"No live success/error output was observed (no login on the evidenced host): `finalOutput`/`structuredOutput` support is grade H/R only, never upgraded past `unqualified`."
|
|
1605
|
+
],
|
|
1606
|
+
"health": {
|
|
1607
|
+
"version": 1,
|
|
1608
|
+
"handshake": "process-only",
|
|
1609
|
+
"outputFraming": "plain",
|
|
1610
|
+
"signalParser": "provider-warp-health-v1",
|
|
1611
|
+
"sessionLogLocator": null,
|
|
1612
|
+
"progressEvidence": [],
|
|
1613
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
1614
|
+
"fixtureRef": "test/fixtures/providers/warp/health/manifest.json",
|
|
1615
|
+
"qualifiedAt": null,
|
|
1616
|
+
"statusOperation": null,
|
|
1617
|
+
"cancelOperation": null,
|
|
1618
|
+
"coverage": "degraded",
|
|
1619
|
+
"qualificationTarget": "process-only",
|
|
1620
|
+
"evidenceGrades": [
|
|
1621
|
+
"H",
|
|
1622
|
+
"R"
|
|
1623
|
+
],
|
|
1624
|
+
"provenance": [
|
|
1625
|
+
{
|
|
1626
|
+
"kind": "documentation",
|
|
1627
|
+
"ref": "03-software-architecture.md §10 warp",
|
|
1628
|
+
"observedAt": "2026-10-07T00:00:00Z",
|
|
1629
|
+
"cliVersion": null
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"kind": "help",
|
|
1633
|
+
"ref": ".aiwg/working/s1-scratch/cli-help/warp-0.2026.10.07.txt",
|
|
1634
|
+
"observedAt": "2026-10-11T00:00:00Z",
|
|
1635
|
+
"cliVersion": "0.2026.10.07.08.29.stable_00"
|
|
1636
|
+
}
|
|
1637
|
+
],
|
|
1638
|
+
"qualificationOwner": "B-OG-40",
|
|
1639
|
+
"qualification": {
|
|
1640
|
+
"status": "unqualified",
|
|
1641
|
+
"scopeDigest": null,
|
|
1642
|
+
"cliVersion": null,
|
|
1643
|
+
"accountScope": null,
|
|
1644
|
+
"profileRef": null,
|
|
1645
|
+
"modelKey": null,
|
|
1646
|
+
"effort": null,
|
|
1647
|
+
"authorizedLive": false
|
|
1648
|
+
}
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
131
1653
|
},
|
|
132
1654
|
"omp": {
|
|
1655
|
+
"sessionEnvAllowlist": [
|
|
1656
|
+
"OPENAI_API_KEY",
|
|
1657
|
+
"ANTHROPIC_API_KEY",
|
|
1658
|
+
"GEMINI_API_KEY",
|
|
1659
|
+
"GOOGLE_API_KEY",
|
|
1660
|
+
"OPENROUTER_API_KEY",
|
|
1661
|
+
"GROQ_API_KEY",
|
|
1662
|
+
"MISTRAL_API_KEY",
|
|
1663
|
+
"XAI_API_KEY",
|
|
1664
|
+
"DEEPSEEK_API_KEY",
|
|
1665
|
+
"PI_CONFIG_DIR",
|
|
1666
|
+
"PI_CODING_AGENT_DIR"
|
|
1667
|
+
],
|
|
133
1668
|
"agent": "native",
|
|
134
1669
|
"skill": "inherited",
|
|
135
1670
|
"globalChild": "native",
|
|
@@ -147,9 +1682,204 @@
|
|
|
147
1682
|
"artifactFormat": "model and thinkingLevel frontmatter; --model and --thinking runtime flags",
|
|
148
1683
|
"verification": "Pinned OMP 18.1.10 source and live OpenRouter smoke; individual role defaults remain operator configured",
|
|
149
1684
|
"sourceUrl": "https://github.com/can1357/oh-my-pi/tree/5964a0f7649275bcde818f20073193fd032451f2/packages/coding-agent",
|
|
150
|
-
"verifiedAt": "2026-09-04"
|
|
1685
|
+
"verifiedAt": "2026-09-04",
|
|
1686
|
+
"workerHealthAdapter": {
|
|
1687
|
+
"version": 1,
|
|
1688
|
+
"id": "omp-direct",
|
|
1689
|
+
"provider": "omp",
|
|
1690
|
+
"adapterVersion": "1",
|
|
1691
|
+
"supportedVersions": "18.8.7",
|
|
1692
|
+
"runtimeDriver": "installed:omp",
|
|
1693
|
+
"catalogAdapter": {
|
|
1694
|
+
"kind": "file",
|
|
1695
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
1696
|
+
"parser": "existing-provider-catalog"
|
|
1697
|
+
},
|
|
1698
|
+
"invocation": {
|
|
1699
|
+
"kind": "process",
|
|
1700
|
+
"executable": "omp",
|
|
1701
|
+
"argv": [
|
|
1702
|
+
"--mode",
|
|
1703
|
+
"json",
|
|
1704
|
+
"--print",
|
|
1705
|
+
"--no-extensions",
|
|
1706
|
+
"--no-skills",
|
|
1707
|
+
"--no-rules",
|
|
1708
|
+
"--model",
|
|
1709
|
+
"${model}",
|
|
1710
|
+
"--thinking",
|
|
1711
|
+
"${effort}",
|
|
1712
|
+
"--cwd",
|
|
1713
|
+
"${workspace}",
|
|
1714
|
+
"--approval-mode",
|
|
1715
|
+
"${approval}"
|
|
1716
|
+
],
|
|
1717
|
+
"stdin": "brief-text",
|
|
1718
|
+
"cwd": "${workspace}",
|
|
1719
|
+
"envAllowlist": [],
|
|
1720
|
+
"versionArgv": [
|
|
1721
|
+
"--version"
|
|
1722
|
+
],
|
|
1723
|
+
"maxOutputBytes": 10485760
|
|
1724
|
+
},
|
|
1725
|
+
"capabilities": {
|
|
1726
|
+
"output": "validated-file",
|
|
1727
|
+
"modelPin": "unsupported",
|
|
1728
|
+
"effort": "unsupported",
|
|
1729
|
+
"cancel": "none",
|
|
1730
|
+
"resume": false,
|
|
1731
|
+
"sandboxModes": [
|
|
1732
|
+
"external"
|
|
1733
|
+
],
|
|
1734
|
+
"nestedAgentsControllable": false,
|
|
1735
|
+
"nativeFallbackControllable": false,
|
|
1736
|
+
"hardBudget": []
|
|
1737
|
+
},
|
|
1738
|
+
"qualification": {
|
|
1739
|
+
"status": "unqualified"
|
|
1740
|
+
},
|
|
1741
|
+
"invocationProfiles": {
|
|
1742
|
+
"direct-shell": {
|
|
1743
|
+
"transport": "shell",
|
|
1744
|
+
"supportedVersions": "18.8.7",
|
|
1745
|
+
"controls": {
|
|
1746
|
+
"model": {
|
|
1747
|
+
"support": "unqualified",
|
|
1748
|
+
"mapping": "--model=<value>; exact observed API model, never an alias or CLI default",
|
|
1749
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10): '--model=<value> Model to use (fuzzy match: ...)'"
|
|
1750
|
+
},
|
|
1751
|
+
"effort": {
|
|
1752
|
+
"support": "unqualified",
|
|
1753
|
+
"mapping": "--thinking=<value>; one of minimal/low/medium/high/xhigh",
|
|
1754
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10): '--thinking=<value> Set thinking level: off, minimal, low, medium, high, xhigh, max, auto'"
|
|
1755
|
+
},
|
|
1756
|
+
"sandbox": {
|
|
1757
|
+
"support": "unqualified",
|
|
1758
|
+
"mapping": "unavailable: no process/filesystem sandbox flag is documented; the direct profile relies entirely on the host worker-isolation boundary",
|
|
1759
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10) documents no sandbox flag"
|
|
1760
|
+
},
|
|
1761
|
+
"approval": {
|
|
1762
|
+
"support": "unqualified",
|
|
1763
|
+
"mapping": "--approval-mode=write (never omitted: the installed binary's compiled-in default is yolo, a full bypass); write auto-approves read/write-tier tools only, the least-prompting non-bypass value, but an exec-tier tool (bash) still resolves to a required-approval decision with no confirmed headless resolution -- an open gap, not a qualified non-prompting guarantee; yolo is never used",
|
|
1764
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10): '--approval-mode=<value> Override tools.approvalMode for this session (always-ask|write|yolo)'; R: ~/.local/bin/omp 18.8.7 (noodle, static read 2026-10-10): default `approvalMode: Uxa(s) ? s : \"yolo\"`; tier gate `Kxa={\"always-ask\":\"read\",write:\"write\",yolo:\"exec\"}`, `PS={read:0,write:1,exec:2}`, `Xxa(mode,tier)=PS[tier]<=PS[Kxa[mode]]`; no auto-deny found for an unresolved prompt in headless/print mode"
|
|
1765
|
+
},
|
|
1766
|
+
"workdir": {
|
|
1767
|
+
"support": "unqualified",
|
|
1768
|
+
"mapping": "--cwd=<value>",
|
|
1769
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10): '--cwd=<value> Directory to start in (overrides the launch cwd)'"
|
|
1770
|
+
},
|
|
1771
|
+
"finalOutput": {
|
|
1772
|
+
"support": "unqualified",
|
|
1773
|
+
"mapping": "bounded stdout event-stream capture; the final answer is extracted from agent_end (willContinue=false) via summarizeOmpEvents/parseOutput, never a -o/--output file",
|
|
1774
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10) documents no output-file flag; R: tools/ralph-external/lib/omp-adapter.mjs parseOutput()/summarizeOmpEvents()"
|
|
1775
|
+
},
|
|
1776
|
+
"stdin": {
|
|
1777
|
+
"support": "unqualified",
|
|
1778
|
+
"mapping": "brief-text; CONFIRMED by static read of the installed omp binary (not merely inherited from Pi's lineage): OMP's own readPipedInput reads non-TTY stdin to EOF whenever mode is not rpc/rpc-ui/acp (--mode json included) and passes it as stdinContent into OMP's own buildInitialMessage, which prefixes it onto the initial message; unlike Pi, OMP does not trim the returned text",
|
|
1779
|
+
"evidence": "R: ~/.local/bin/omp 18.8.7 (noodle, static read 2026-10-10): `async function wUt(){ if(process.stdin.isTTY===true) return; ...const t=await Bun.stdin.text(); if(t.trim().length===0) return; return t; }`; call site `const p=r===\"rpc\"||r===\"rpc-ui\"||r===\"acp\"; const c=p?undefined:await readPipedInput();`; `function aso({parsed,fileText,stdinContent}){...}` (buildInitialMessage) consumes `stdinContent: c`"
|
|
1780
|
+
},
|
|
1781
|
+
"structuredOutput": {
|
|
1782
|
+
"support": "unqualified",
|
|
1783
|
+
"mapping": "unavailable: no --output-schema or equivalent structured-output flag is documented",
|
|
1784
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10) documents no output-schema flag"
|
|
1785
|
+
},
|
|
1786
|
+
"stepCap": {
|
|
1787
|
+
"support": "unqualified",
|
|
1788
|
+
"mapping": "unavailable: --max-time bounds wall-clock duration only, not a step/turn count",
|
|
1789
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10): '--max-time=<value> Stop the session after this duration'"
|
|
1790
|
+
},
|
|
1791
|
+
"trust": {
|
|
1792
|
+
"support": "unqualified",
|
|
1793
|
+
"mapping": "[\"--no-extensions\",\"--no-skills\",\"--no-rules\"]; OMP has no --approve/--no-approve trust flag like Pi, so the direct profile always disables workspace-local extension/skill/rule discovery instead",
|
|
1794
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10): '--no-extensions ...', '--no-skills ...', '--no-rules Disable rules discovery and loading'"
|
|
1795
|
+
},
|
|
1796
|
+
"children": {
|
|
1797
|
+
"support": "unqualified",
|
|
1798
|
+
"mapping": "unavailable: no native child-denial flag; the built-in task tool enables sub-agent delegation and can only be excluded via a --tools allowlist, not applied by default",
|
|
1799
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10) built-in tool list includes 'task - Launch sub-agents for parallel tasks'"
|
|
1800
|
+
},
|
|
1801
|
+
"fallback": {
|
|
1802
|
+
"support": "unqualified",
|
|
1803
|
+
"mapping": "unavailable: no implicit model-fallback flag is documented; an invalid/omitted --model is a resolution error, never a silent substitution",
|
|
1804
|
+
"evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10) documents a single --model flag with no fallback list"
|
|
1805
|
+
}
|
|
1806
|
+
},
|
|
1807
|
+
"envAllowlist": [],
|
|
1808
|
+
"pitfalls": [
|
|
1809
|
+
"--approval-mode is never omitted: the installed binary's compiled-in default is yolo (a full bypass), so an omitted flag is the most dangerous outcome, not a safe one.",
|
|
1810
|
+
"--approval-mode is fixed to write; always-ask (prompts for write AND exec) and yolo (bypasses everything) are never rendered. write only auto-approves read/write-tier tools; an exec-tier tool (bash) still resolves to a required-approval decision with no confirmed headless resolution -- an open S1 gap.",
|
|
1811
|
+
"--no-extensions/--no-skills/--no-rules are fixed; OMP has no single approve-style trust flag like Pi.",
|
|
1812
|
+
"Stdin-as-initial-message is CONFIRMED by a static read of the installed omp binary's own readPipedInput/buildInitialMessage, not merely inherited from Pi's lineage.",
|
|
1813
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
1814
|
+
"Unknown model, effort or required control mappings block dispatch."
|
|
1815
|
+
],
|
|
1816
|
+
"health": {
|
|
1817
|
+
"version": 1,
|
|
1818
|
+
"handshake": "process-only",
|
|
1819
|
+
"outputFraming": "jsonl",
|
|
1820
|
+
"signalParser": "provider-omp-health-v1",
|
|
1821
|
+
"sessionLogLocator": null,
|
|
1822
|
+
"progressEvidence": [
|
|
1823
|
+
"distinct tool_execution_end",
|
|
1824
|
+
"agent_end willContinue=false"
|
|
1825
|
+
],
|
|
1826
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
1827
|
+
"fixtureRef": "test/fixtures/providers/omp/health/manifest.json",
|
|
1828
|
+
"qualifiedAt": null,
|
|
1829
|
+
"statusOperation": null,
|
|
1830
|
+
"cancelOperation": null,
|
|
1831
|
+
"coverage": "degraded",
|
|
1832
|
+
"qualificationTarget": "semantic",
|
|
1833
|
+
"evidenceGrades": [
|
|
1834
|
+
"H",
|
|
1835
|
+
"R"
|
|
1836
|
+
],
|
|
1837
|
+
"provenance": [
|
|
1838
|
+
{
|
|
1839
|
+
"kind": "help",
|
|
1840
|
+
"ref": "tools/ralph-external/lib/omp-adapter.mjs",
|
|
1841
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
1842
|
+
"cliVersion": "18.8.7"
|
|
1843
|
+
},
|
|
1844
|
+
{
|
|
1845
|
+
"kind": "repository",
|
|
1846
|
+
"ref": "tools/ralph-external/lib/omp-adapter.mjs; static read of noodle ~/.local/bin/omp 18.8.7 (approval tier gate Kxa/PS/Xxa; readPipedInput/buildInitialMessage)",
|
|
1847
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
1848
|
+
"cliVersion": "18.8.7"
|
|
1849
|
+
}
|
|
1850
|
+
],
|
|
1851
|
+
"qualificationOwner": "B-OG-45",
|
|
1852
|
+
"qualification": {
|
|
1853
|
+
"status": "unqualified",
|
|
1854
|
+
"scopeDigest": null,
|
|
1855
|
+
"cliVersion": null,
|
|
1856
|
+
"accountScope": null,
|
|
1857
|
+
"profileRef": null,
|
|
1858
|
+
"modelKey": null,
|
|
1859
|
+
"effort": null,
|
|
1860
|
+
"authorizedLive": false
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
151
1866
|
},
|
|
152
1867
|
"pi": {
|
|
1868
|
+
"sessionEnvAllowlist": [
|
|
1869
|
+
"OPENAI_API_KEY",
|
|
1870
|
+
"ANTHROPIC_API_KEY",
|
|
1871
|
+
"GEMINI_API_KEY",
|
|
1872
|
+
"GOOGLE_API_KEY",
|
|
1873
|
+
"OPENROUTER_API_KEY",
|
|
1874
|
+
"GROQ_API_KEY",
|
|
1875
|
+
"MISTRAL_API_KEY",
|
|
1876
|
+
"XAI_API_KEY",
|
|
1877
|
+
"DEEPSEEK_API_KEY",
|
|
1878
|
+
"PI_CODING_AGENT_DIR",
|
|
1879
|
+
"PI_CODING_AGENT_SESSION_DIR",
|
|
1880
|
+
"AIWG_PI_STUB_SCENARIO",
|
|
1881
|
+
"AIWG_PI_STUB_RECEIPT"
|
|
1882
|
+
],
|
|
153
1883
|
"agent": "native",
|
|
154
1884
|
"skill": "inherited",
|
|
155
1885
|
"globalChild": "native",
|
|
@@ -167,9 +1897,189 @@
|
|
|
167
1897
|
"artifactFormat": "Runtime --model and --thinking flags",
|
|
168
1898
|
"verification": "Inspect strict JSONL state and the selected provider/model",
|
|
169
1899
|
"sourceUrl": "https://github.com/earendil-works/pi/tree/main/packages/coding-agent#cli-reference",
|
|
170
|
-
"verifiedAt": "2026-09-04"
|
|
1900
|
+
"verifiedAt": "2026-09-04",
|
|
1901
|
+
"workerHealthAdapter": {
|
|
1902
|
+
"version": 1,
|
|
1903
|
+
"id": "pi-direct",
|
|
1904
|
+
"provider": "pi",
|
|
1905
|
+
"adapterVersion": "1",
|
|
1906
|
+
"supportedVersions": "1.1.0",
|
|
1907
|
+
"runtimeDriver": "installed:pi",
|
|
1908
|
+
"catalogAdapter": {
|
|
1909
|
+
"kind": "file",
|
|
1910
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
1911
|
+
"parser": "existing-provider-catalog"
|
|
1912
|
+
},
|
|
1913
|
+
"invocation": {
|
|
1914
|
+
"kind": "process",
|
|
1915
|
+
"executable": "pi",
|
|
1916
|
+
"argv": [
|
|
1917
|
+
"--mode",
|
|
1918
|
+
"json",
|
|
1919
|
+
"--no-approve",
|
|
1920
|
+
"--no-context-files",
|
|
1921
|
+
"--no-extensions",
|
|
1922
|
+
"--no-skills",
|
|
1923
|
+
"--no-mcp",
|
|
1924
|
+
"--model",
|
|
1925
|
+
"${model}",
|
|
1926
|
+
"--thinking",
|
|
1927
|
+
"${effort}"
|
|
1928
|
+
],
|
|
1929
|
+
"stdin": "brief-text",
|
|
1930
|
+
"cwd": "${workspace}",
|
|
1931
|
+
"envAllowlist": [],
|
|
1932
|
+
"versionArgv": [
|
|
1933
|
+
"--version"
|
|
1934
|
+
],
|
|
1935
|
+
"maxOutputBytes": 10485760
|
|
1936
|
+
},
|
|
1937
|
+
"capabilities": {
|
|
1938
|
+
"output": "validated-file",
|
|
1939
|
+
"modelPin": "unsupported",
|
|
1940
|
+
"effort": "unsupported",
|
|
1941
|
+
"cancel": "none",
|
|
1942
|
+
"resume": false,
|
|
1943
|
+
"sandboxModes": [
|
|
1944
|
+
"external"
|
|
1945
|
+
],
|
|
1946
|
+
"nestedAgentsControllable": false,
|
|
1947
|
+
"nativeFallbackControllable": false,
|
|
1948
|
+
"hardBudget": []
|
|
1949
|
+
},
|
|
1950
|
+
"qualification": {
|
|
1951
|
+
"status": "unqualified"
|
|
1952
|
+
},
|
|
1953
|
+
"invocationProfiles": {
|
|
1954
|
+
"direct-shell": {
|
|
1955
|
+
"transport": "shell",
|
|
1956
|
+
"supportedVersions": "1.1.0",
|
|
1957
|
+
"controls": {
|
|
1958
|
+
"model": {
|
|
1959
|
+
"support": "unqualified",
|
|
1960
|
+
"mapping": "--model <pattern>; exact observed API model, never an alias or CLI default",
|
|
1961
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09): '--model <pattern> Model pattern or ID (supports provider/id and optional :<thinking>)'"
|
|
1962
|
+
},
|
|
1963
|
+
"effort": {
|
|
1964
|
+
"support": "unqualified",
|
|
1965
|
+
"mapping": "--thinking <level>; one of minimal/low/medium/high/xhigh",
|
|
1966
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09): '--thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh, max'"
|
|
1967
|
+
},
|
|
1968
|
+
"sandbox": {
|
|
1969
|
+
"support": "unqualified",
|
|
1970
|
+
"mapping": "unavailable: no process/filesystem sandbox flag is documented; the direct profile relies entirely on the host worker-isolation boundary",
|
|
1971
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents no sandbox flag"
|
|
1972
|
+
},
|
|
1973
|
+
"approval": {
|
|
1974
|
+
"support": "unqualified",
|
|
1975
|
+
"mapping": "unavailable: no tool-execution approval-prompt flag is documented; --mode json forces non-interactive execution so no prompt can occur",
|
|
1976
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) lists no approval flag; R: installed pi 1.1.0 bundle chunk-OIM2DMFI.js resolveAppMode() (static read, 2026-10-09)"
|
|
1977
|
+
},
|
|
1978
|
+
"workdir": {
|
|
1979
|
+
"support": "unqualified",
|
|
1980
|
+
"mapping": "unavailable: no -C/--cwd flag is documented; the launcher's shell cd to the workspace is the only binding",
|
|
1981
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents no working-directory flag"
|
|
1982
|
+
},
|
|
1983
|
+
"finalOutput": {
|
|
1984
|
+
"support": "unqualified",
|
|
1985
|
+
"mapping": "bounded stdout JSONL capture; the final answer is extracted from agent_end/agent_settled messages (parseOutput), never a -o/--output file",
|
|
1986
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents no output-file flag; R: tools/ralph-external/lib/pi-adapter.mjs parseDirectFinal() (the direct-profile strict contract; the legacy parseOutput() settlement-only shape is a separate contract used only by the Ralph loop)"
|
|
1987
|
+
},
|
|
1988
|
+
"stdin": {
|
|
1989
|
+
"support": "unqualified",
|
|
1990
|
+
"mapping": "brief-text (piped, non-TTY stdin is trimmed and becomes the sole initial-message part when no positional message/file argument is given)",
|
|
1991
|
+
"evidence": "R: installed pi 1.1.0 bundle chunk-OIM2DMFI.js readPipedStdin()/buildInitialMessage() (static read, 2026-10-09)"
|
|
1992
|
+
},
|
|
1993
|
+
"structuredOutput": {
|
|
1994
|
+
"support": "unqualified",
|
|
1995
|
+
"mapping": "unavailable: no --output-schema or equivalent structured-output flag is documented",
|
|
1996
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents no output-schema flag"
|
|
1997
|
+
},
|
|
1998
|
+
"stepCap": {
|
|
1999
|
+
"support": "unqualified",
|
|
2000
|
+
"mapping": "unavailable: no step/turn cap flag is documented",
|
|
2001
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents no step-cap flag"
|
|
2002
|
+
},
|
|
2003
|
+
"trust": {
|
|
2004
|
+
"support": "unqualified",
|
|
2005
|
+
"mapping": "[\"--no-approve\",\"--no-context-files\",\"--no-extensions\",\"--no-skills\",\"--no-mcp\"]; --no-approve alone does not stop context loading (R: installed pi 1.1.0 bundle chunk-OIM2DMFI.js loads ancestor AGENTS.md/CLAUDE.md -- `agentsFiles=this.noContextFiles?[]:loadProjectContextFiles(...)` -- independently of trust), so the direct profile also disables context-file, extension, skill and built-in-MCP discovery; it never emits --approve",
|
|
2006
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09): '--approve, -a Trust project-local files for this run' / '--no-approve, -na Ignore project-local files for this run' / '--no-context-files, -nc Disable AGENTS.md and CLAUDE.md discovery and loading' / '--no-extensions, -ne' / '--no-skills, -ns' / '--no-mcp Disable built-in MCP support: no servers connect and no MCP tools'; R: installed pi 1.1.0 bundle chunk-OIM2DMFI.js (static read, 2026-10-09)"
|
|
2007
|
+
},
|
|
2008
|
+
"children": {
|
|
2009
|
+
"support": "unqualified",
|
|
2010
|
+
"mapping": "unavailable: no sub-agent/task tool or child-denial flag is documented for Pi (unlike OMP's task tool)",
|
|
2011
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) built-in tool list has no task/sub-agent tool"
|
|
2012
|
+
},
|
|
2013
|
+
"fallback": {
|
|
2014
|
+
"support": "unqualified",
|
|
2015
|
+
"mapping": "unavailable: no implicit model-fallback flag is documented; an invalid/omitted --model is a resolution error, never a silent substitution",
|
|
2016
|
+
"evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents a single --model flag with no fallback list"
|
|
2017
|
+
}
|
|
2018
|
+
},
|
|
2019
|
+
"envAllowlist": [],
|
|
2020
|
+
"pitfalls": [
|
|
2021
|
+
"--no-approve alone does not stop context loading: ancestor AGENTS.md/CLAUDE.md load independently of trust unless --no-context-files is also set (R: installed bundle chunk-OIM2DMFI.js). --no-context-files, --no-extensions, --no-skills and --no-mcp (1.1.0 adds built-in MCP support, on by default) are always rendered alongside it.",
|
|
2022
|
+
"--approve is never rendered, which would trust arbitrary project-local extension/config files.",
|
|
2023
|
+
"Pi's own stdin reader trims the brief; an all-whitespace brief resolves to no initial message and must never be sent.",
|
|
2024
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
2025
|
+
"Unknown model, effort or required control mappings block dispatch."
|
|
2026
|
+
],
|
|
2027
|
+
"health": {
|
|
2028
|
+
"version": 1,
|
|
2029
|
+
"handshake": "process-only",
|
|
2030
|
+
"outputFraming": "jsonl",
|
|
2031
|
+
"signalParser": "provider-pi-health-v1",
|
|
2032
|
+
"sessionLogLocator": null,
|
|
2033
|
+
"progressEvidence": [
|
|
2034
|
+
"distinct agent_end",
|
|
2035
|
+
"agent_settled"
|
|
2036
|
+
],
|
|
2037
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
2038
|
+
"fixtureRef": "test/fixtures/providers/pi/health/manifest.json",
|
|
2039
|
+
"qualifiedAt": null,
|
|
2040
|
+
"statusOperation": null,
|
|
2041
|
+
"cancelOperation": null,
|
|
2042
|
+
"coverage": "degraded",
|
|
2043
|
+
"qualificationTarget": "semantic",
|
|
2044
|
+
"evidenceGrades": [
|
|
2045
|
+
"H",
|
|
2046
|
+
"R"
|
|
2047
|
+
],
|
|
2048
|
+
"provenance": [
|
|
2049
|
+
{
|
|
2050
|
+
"kind": "help",
|
|
2051
|
+
"ref": "tools/ralph-external/lib/pi-adapter.mjs",
|
|
2052
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
2053
|
+
"cliVersion": "1.1.0"
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
"kind": "repository",
|
|
2057
|
+
"ref": "tools/ralph-external/lib/pi-adapter.mjs",
|
|
2058
|
+
"observedAt": "2026-10-07T00:00:00Z",
|
|
2059
|
+
"cliVersion": null
|
|
2060
|
+
}
|
|
2061
|
+
],
|
|
2062
|
+
"qualificationOwner": "B-OG-45",
|
|
2063
|
+
"qualification": {
|
|
2064
|
+
"status": "unqualified",
|
|
2065
|
+
"scopeDigest": null,
|
|
2066
|
+
"cliVersion": null,
|
|
2067
|
+
"accountScope": null,
|
|
2068
|
+
"profileRef": null,
|
|
2069
|
+
"modelKey": null,
|
|
2070
|
+
"effort": null,
|
|
2071
|
+
"authorizedLive": false
|
|
2072
|
+
}
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
}
|
|
2076
|
+
}
|
|
171
2077
|
},
|
|
172
2078
|
"deepseek-harness": {
|
|
2079
|
+
"sessionEnvAllowlist": [
|
|
2080
|
+
"DEEPSEEK_API_KEY",
|
|
2081
|
+
"DSH_HOME"
|
|
2082
|
+
],
|
|
173
2083
|
"agent": "native",
|
|
174
2084
|
"skill": "inherited",
|
|
175
2085
|
"globalChild": "native",
|
|
@@ -187,7 +2097,181 @@
|
|
|
187
2097
|
"artifactFormat": "agent-default-model config; JSON-RPC initialize params",
|
|
188
2098
|
"verification": "Pinned source contract plus opt-in headless OpenRouter smoke",
|
|
189
2099
|
"sourceUrl": "https://github.com/deepseek-ai/deepseek-harness",
|
|
190
|
-
"verifiedAt": "2026-09-05"
|
|
2100
|
+
"verifiedAt": "2026-09-05",
|
|
2101
|
+
"workerHealthAdapter": {
|
|
2102
|
+
"version": 1,
|
|
2103
|
+
"id": "deepseek-harness-direct",
|
|
2104
|
+
"provider": "deepseek-harness",
|
|
2105
|
+
"adapterVersion": "1",
|
|
2106
|
+
"supportedVersions": "0.2.0-rc.2",
|
|
2107
|
+
"runtimeDriver": "installed:deepseek-harness-direct",
|
|
2108
|
+
"catalogAdapter": {
|
|
2109
|
+
"kind": "file",
|
|
2110
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
2111
|
+
"parser": "existing-provider-catalog"
|
|
2112
|
+
},
|
|
2113
|
+
"invocation": {
|
|
2114
|
+
"kind": "process",
|
|
2115
|
+
"executable": "dsh",
|
|
2116
|
+
"argv": [
|
|
2117
|
+
"--profile",
|
|
2118
|
+
"headless",
|
|
2119
|
+
"--patch",
|
|
2120
|
+
"${artifact:dsh-patch}",
|
|
2121
|
+
"--json",
|
|
2122
|
+
"-"
|
|
2123
|
+
],
|
|
2124
|
+
"stdin": "brief-text",
|
|
2125
|
+
"cwd": "${workspace}",
|
|
2126
|
+
"envAllowlist": [
|
|
2127
|
+
"DEEPSEEK_API_KEY"
|
|
2128
|
+
],
|
|
2129
|
+
"versionArgv": [
|
|
2130
|
+
"--version"
|
|
2131
|
+
],
|
|
2132
|
+
"maxOutputBytes": 10485760
|
|
2133
|
+
},
|
|
2134
|
+
"capabilities": {
|
|
2135
|
+
"output": "text",
|
|
2136
|
+
"modelPin": "unsupported",
|
|
2137
|
+
"effort": "unsupported",
|
|
2138
|
+
"cancel": "none",
|
|
2139
|
+
"resume": false,
|
|
2140
|
+
"sandboxModes": [
|
|
2141
|
+
"external"
|
|
2142
|
+
],
|
|
2143
|
+
"nestedAgentsControllable": false,
|
|
2144
|
+
"nativeFallbackControllable": false,
|
|
2145
|
+
"hardBudget": []
|
|
2146
|
+
},
|
|
2147
|
+
"qualification": {
|
|
2148
|
+
"status": "unqualified"
|
|
2149
|
+
},
|
|
2150
|
+
"invocationProfiles": {
|
|
2151
|
+
"direct-shell": {
|
|
2152
|
+
"transport": "shell",
|
|
2153
|
+
"supportedVersions": "0.2.0-rc.2",
|
|
2154
|
+
"controls": {
|
|
2155
|
+
"model": {
|
|
2156
|
+
"support": "unqualified",
|
|
2157
|
+
"mapping": "--patch YAML overlay would set the agent-default-model plugin entry {provider: \"deepseek-official\", model}; no --model flag exists on `--profile headless --help`. The launcher writes the declared patch exclusively into its private run directory and cleans it up; the override is unverified for enforcement, only for parse-before-model-call.",
|
|
2158
|
+
"evidence": "R: dsh 0.2.0-rc.2 --profile headless --dump-config-schema/--dump-default-config (agent-default-model config9, required provider+model); no-model probe on noodle 2026-10-11 confirmed a --patch file is read and parsed before any model call (MISSING_CREDENTIAL still names provider route deepseek-official), never that the override is enforced; unqualified until live model-pin evidence"
|
|
2159
|
+
},
|
|
2160
|
+
"effort": {
|
|
2161
|
+
"support": "unqualified",
|
|
2162
|
+
"mapping": "Same --patch agent-default-model entry would set reasoningEffort (off|low|high|max); unverified for the same reason as model",
|
|
2163
|
+
"evidence": "R: dsh 0.2.0-rc.2 --profile headless --dump-config-schema (deepseek-official provider reasoningEffort enum off|low|high|max); unqualified until live evidence"
|
|
2164
|
+
},
|
|
2165
|
+
"sandbox": {
|
|
2166
|
+
"support": "unqualified",
|
|
2167
|
+
"mapping": "--patch YAML overlay would set the sandbox-policy plugin entry {mode: read-only|workspace-write}; danger-full-access (full bypass) is never emitted. Reaching MISSING_CREDENTIAL proves the patch parses, not that sandbox-policy.mode actually confines file/exec access -- no probe without a real model call can exercise a tool call to prove confinement.",
|
|
2168
|
+
"evidence": "R: dsh 0.2.0-rc.2 --dump-default-config sandbox-policy config.mode; no-model probe on noodle 2026-10-11 confirmed the run proceeds past plugin mount to MISSING_CREDENTIAL, which is evidence of parsing only; confinement itself is unverified"
|
|
2169
|
+
},
|
|
2170
|
+
"approval": {
|
|
2171
|
+
"support": "unqualified",
|
|
2172
|
+
"mapping": "--patch YAML overlay would set the approval plugin entry {policy: never}; ask is refused (no prompt channel in headless). What \"never\" actually permits is unverified: no analogy to another CLI's approval semantics is drawn.",
|
|
2173
|
+
"evidence": "R: dsh 0.2.0-rc.2 --dump-default-config approval config.policy (APPROVAL_POLICIES ask|never, dsh-permission-presets/lib/index.js); no-model probe on noodle 2026-10-11 confirmed the stock permission-presets plugin fails to mount for workspace-write+never (\"did not activate\" diagnostic) -- this means that stock preset-switch plugin is not mounted for this combination, not that sandbox-policy/approval themselves enforce anything; unqualified"
|
|
2174
|
+
},
|
|
2175
|
+
"workdir": {
|
|
2176
|
+
"support": "unqualified",
|
|
2177
|
+
"mapping": "Spawn cwd option; `dsh --profile headless --help` has no --cwd flag and the headless runner uses process.cwd()",
|
|
2178
|
+
"evidence": "H: dsh 0.2.0-rc.2 --profile headless --help (.aiwg/working/s1-scratch/cli-help/dsh-0.2.0-rc.2.txt); R: installed @deepseek-ai/dsh-headless package lib/index.js `run()`, read on noodle 2026-10-11; unqualified until live evidence"
|
|
2179
|
+
},
|
|
2180
|
+
"finalOutput": {
|
|
2181
|
+
"support": "unqualified",
|
|
2182
|
+
"mapping": "stdout --json event stream; the last {\"type\":\"final\",\"text\"} line is the answer, required to be the last event with the prior turn_end's reason.kind==\"completed\"",
|
|
2183
|
+
"evidence": "R: installed @deepseek-ai/dsh-headless package lib/json-stream-*.js + lib/index.js, read on noodle 2026-10-11; confirmed live via the no-model probe's exact session/status/final lines; unqualified until live evidence"
|
|
2184
|
+
},
|
|
2185
|
+
"stdin": {
|
|
2186
|
+
"support": "unqualified",
|
|
2187
|
+
"mapping": "brief-text: the \"-\" task argument reads stdin to EOF",
|
|
2188
|
+
"evidence": "H+R: dsh 0.2.0-rc.2 --profile headless --help (\"`-` reads stdin\"); no-model probe on noodle 2026-10-11 confirmed stdin arity (empty stdin -> \"a task is required\"; piped text -> reaches MISSING_CREDENTIAL, never a model call); unqualified until live evidence"
|
|
2189
|
+
},
|
|
2190
|
+
"structuredOutput": {
|
|
2191
|
+
"support": "unqualified",
|
|
2192
|
+
"mapping": "no --output-schema or structured-final flag documented on `--profile headless --help`",
|
|
2193
|
+
"evidence": "H: dsh 0.2.0-rc.2 --profile headless --help (.aiwg/working/s1-scratch/cli-help/dsh-0.2.0-rc.2.txt); unqualified until live evidence"
|
|
2194
|
+
},
|
|
2195
|
+
"stepCap": {
|
|
2196
|
+
"support": "unqualified",
|
|
2197
|
+
"mapping": "no per-invocation step-cap flag documented on `--profile headless --help`",
|
|
2198
|
+
"evidence": "H: dsh 0.2.0-rc.2 --profile headless --help (.aiwg/working/s1-scratch/cli-help/dsh-0.2.0-rc.2.txt); unknown controls block tasks requiring them"
|
|
2199
|
+
},
|
|
2200
|
+
"trust": {
|
|
2201
|
+
"support": "unqualified",
|
|
2202
|
+
"mapping": "no trust-workspace flag documented on `--profile headless --help`",
|
|
2203
|
+
"evidence": "H: dsh 0.2.0-rc.2 --profile headless --help (.aiwg/working/s1-scratch/cli-help/dsh-0.2.0-rc.2.txt); unqualified until live evidence"
|
|
2204
|
+
},
|
|
2205
|
+
"children": {
|
|
2206
|
+
"support": "unqualified",
|
|
2207
|
+
"mapping": "subagent/fork tools (tool-subagent, tool-subagent-fork, subagent-spawn-in-process, subagent-fork-in-process) are bundled by default; a disabling patch is not live-verified",
|
|
2208
|
+
"evidence": "R: installed @deepseek-ai/dsh package default profile config, read on noodle 2026-10-11; needs a verified disabling --patch before this control can be native"
|
|
2209
|
+
},
|
|
2210
|
+
"fallback": {
|
|
2211
|
+
"support": "unqualified",
|
|
2212
|
+
"mapping": "no CLI-level fallback-model control documented; agent-default-model is the only model source",
|
|
2213
|
+
"evidence": "H: dsh 0.2.0-rc.2 --profile headless --help (.aiwg/working/s1-scratch/cli-help/dsh-0.2.0-rc.2.txt); this profile never emits a fallback"
|
|
2214
|
+
}
|
|
2215
|
+
},
|
|
2216
|
+
"envAllowlist": [
|
|
2217
|
+
"DEEPSEEK_API_KEY"
|
|
2218
|
+
],
|
|
2219
|
+
"pitfalls": [
|
|
2220
|
+
"buildWorkerArgs emits ${artifact:dsh-patch}; buildWorkerArtifacts declares the pure overlay. The launcher owns exclusive/no-follow private file creation and cleanup. Controls remain unqualified pending an authenticated run.",
|
|
2221
|
+
"Documentation/help, schema-dump and synthetic observations are not authenticated live qualification.",
|
|
2222
|
+
"Reaching MISSING_CREDENTIAL on a no-model probe proves the --patch file is parsed before any model call; it proves neither sandbox confinement nor approval semantics, since no probe without a real model call can exercise a tool call.",
|
|
2223
|
+
"danger-full-access (the only shipped preset pairing approval:never) is a full bypass and is never emitted; this profile would patch sandbox-policy/approval directly instead, with unverified effect.",
|
|
2224
|
+
"The stock dsh-permission-presets plugin fails to mount (\"did not activate\" diagnostic) for the workspace-write+never combination; this means only that the stock preset-switch plugin itself is unmounted, not that sandbox-policy/approval enforce anything.",
|
|
2225
|
+
"With DSH_HOME unset (KNOWN GAP: getEnvOverrides() has no invocation context to synthesize a per-run isolated home without a shared-code change), the operator's own profiles/plugins load and could alter behavior.",
|
|
2226
|
+
"The agent-default-model/sandbox-policy/approval overlay shape comes only from --dump-config-schema/--dump-default-config, never from a live run; treat it as unverified, not confirmed.",
|
|
2227
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
2228
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority."
|
|
2229
|
+
],
|
|
2230
|
+
"health": {
|
|
2231
|
+
"version": 1,
|
|
2232
|
+
"handshake": "process-only",
|
|
2233
|
+
"outputFraming": "jsonl",
|
|
2234
|
+
"signalParser": "provider-deepseek-harness-health-v1",
|
|
2235
|
+
"sessionLogLocator": null,
|
|
2236
|
+
"progressEvidence": [
|
|
2237
|
+
"text",
|
|
2238
|
+
"thinking",
|
|
2239
|
+
"tool_call",
|
|
2240
|
+
"tool_result"
|
|
2241
|
+
],
|
|
2242
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
2243
|
+
"fixtureRef": "test/fixtures/providers/deepseek-harness/health/manifest-direct.json",
|
|
2244
|
+
"qualifiedAt": null,
|
|
2245
|
+
"statusOperation": null,
|
|
2246
|
+
"cancelOperation": null,
|
|
2247
|
+
"coverage": "degraded",
|
|
2248
|
+
"qualificationTarget": "process-only",
|
|
2249
|
+
"evidenceGrades": [
|
|
2250
|
+
"R"
|
|
2251
|
+
],
|
|
2252
|
+
"provenance": [
|
|
2253
|
+
{
|
|
2254
|
+
"kind": "repository",
|
|
2255
|
+
"ref": "tools/ralph-external/lib/deepseek-harness-adapter.mjs",
|
|
2256
|
+
"observedAt": "2026-10-11T00:00:00Z",
|
|
2257
|
+
"cliVersion": null
|
|
2258
|
+
}
|
|
2259
|
+
],
|
|
2260
|
+
"qualificationOwner": "B-OG-44",
|
|
2261
|
+
"qualification": {
|
|
2262
|
+
"status": "unqualified",
|
|
2263
|
+
"scopeDigest": null,
|
|
2264
|
+
"cliVersion": null,
|
|
2265
|
+
"accountScope": null,
|
|
2266
|
+
"profileRef": null,
|
|
2267
|
+
"modelKey": null,
|
|
2268
|
+
"effort": null,
|
|
2269
|
+
"authorizedLive": false
|
|
2270
|
+
}
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
}
|
|
2274
|
+
}
|
|
191
2275
|
},
|
|
192
2276
|
"windsurf": {
|
|
193
2277
|
"agent": "unsupported",
|
|
@@ -200,7 +2284,22 @@
|
|
|
200
2284
|
"artifactFormat": "Informational policy only",
|
|
201
2285
|
"verification": "Assert unsupported fields are omitted",
|
|
202
2286
|
"sourceUrl": "https://docs.devin.ai/desktop/cascade/skills",
|
|
203
|
-
"verifiedAt": "2026-07-20"
|
|
2287
|
+
"verifiedAt": "2026-07-20",
|
|
2288
|
+
"workerHealthCoverage": {
|
|
2289
|
+
"scope": "out",
|
|
2290
|
+
"coverage": "unobserved",
|
|
2291
|
+
"handshake": "unobserved",
|
|
2292
|
+
"evidenceGrades": [
|
|
2293
|
+
"R",
|
|
2294
|
+
"D"
|
|
2295
|
+
],
|
|
2296
|
+
"qualificationOwner": "B-OG-47",
|
|
2297
|
+
"provenance": [
|
|
2298
|
+
"src/providers/provider-definitions.ts#windsurf",
|
|
2299
|
+
"https://docs.devin.ai/cli/reference/commands.md"
|
|
2300
|
+
],
|
|
2301
|
+
"reason": "Desktop/client capability does not establish a headless worker interface."
|
|
2302
|
+
}
|
|
204
2303
|
},
|
|
205
2304
|
"openclaw": {
|
|
206
2305
|
"agent": "native",
|
|
@@ -213,7 +2312,188 @@
|
|
|
213
2312
|
"artifactFormat": "JSON/JSONC runtime configuration",
|
|
214
2313
|
"verification": "Inspect resolved subagent metadata",
|
|
215
2314
|
"sourceUrl": "https://docs.openclaw.ai/tools/subagents",
|
|
216
|
-
"verifiedAt": "2026-07-20"
|
|
2315
|
+
"verifiedAt": "2026-07-20",
|
|
2316
|
+
"workerHealthAdapter": {
|
|
2317
|
+
"version": 1,
|
|
2318
|
+
"id": "openclaw",
|
|
2319
|
+
"provider": "openclaw",
|
|
2320
|
+
"adapterVersion": "1",
|
|
2321
|
+
"supportedVersions": "2026.10.1",
|
|
2322
|
+
"runtimeDriver": "installed:openclaw",
|
|
2323
|
+
"catalogAdapter": {
|
|
2324
|
+
"kind": "file",
|
|
2325
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
2326
|
+
"parser": "existing-provider-catalog"
|
|
2327
|
+
},
|
|
2328
|
+
"invocation": {
|
|
2329
|
+
"kind": "process",
|
|
2330
|
+
"executable": "openclaw",
|
|
2331
|
+
"argv": [
|
|
2332
|
+
"agent",
|
|
2333
|
+
"exec",
|
|
2334
|
+
"--isolated",
|
|
2335
|
+
"--auth-env-only",
|
|
2336
|
+
"--json",
|
|
2337
|
+
"--model",
|
|
2338
|
+
"${model}",
|
|
2339
|
+
"--thinking",
|
|
2340
|
+
"${effort}",
|
|
2341
|
+
"--cwd",
|
|
2342
|
+
"${workspace}",
|
|
2343
|
+
"--message-file",
|
|
2344
|
+
"${briefPath}"
|
|
2345
|
+
],
|
|
2346
|
+
"stdin": "closed",
|
|
2347
|
+
"cwd": "${workspace}",
|
|
2348
|
+
"envAllowlist": [
|
|
2349
|
+
"OPENROUTER_API_KEY"
|
|
2350
|
+
],
|
|
2351
|
+
"versionArgv": [
|
|
2352
|
+
"--version"
|
|
2353
|
+
],
|
|
2354
|
+
"maxOutputBytes": 10485760
|
|
2355
|
+
},
|
|
2356
|
+
"capabilities": {
|
|
2357
|
+
"output": "validated-file",
|
|
2358
|
+
"modelPin": "unsupported",
|
|
2359
|
+
"effort": "unsupported",
|
|
2360
|
+
"cancel": "none",
|
|
2361
|
+
"resume": false,
|
|
2362
|
+
"sandboxModes": [
|
|
2363
|
+
"external"
|
|
2364
|
+
],
|
|
2365
|
+
"nestedAgentsControllable": false,
|
|
2366
|
+
"nativeFallbackControllable": false,
|
|
2367
|
+
"hardBudget": []
|
|
2368
|
+
},
|
|
2369
|
+
"qualification": {
|
|
2370
|
+
"status": "unqualified"
|
|
2371
|
+
},
|
|
2372
|
+
"invocationProfiles": {
|
|
2373
|
+
"direct-shell": {
|
|
2374
|
+
"transport": "shell",
|
|
2375
|
+
"supportedVersions": "2026.10.1",
|
|
2376
|
+
"controls": {
|
|
2377
|
+
"model": {
|
|
2378
|
+
"support": "unqualified",
|
|
2379
|
+
"mapping": "[--model provider/model] global flag; exact observed provider/model id, never an alias, 'auto' or 'default'",
|
|
2380
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help documents --model <id> (provider/model or model id); unqualified until live model-pin evidence"
|
|
2381
|
+
},
|
|
2382
|
+
"effort": {
|
|
2383
|
+
"support": "unqualified",
|
|
2384
|
+
"mapping": "[--thinking T] with T in [off, minimal, low, medium, high, xhigh, max, ultra]; 'adaptive' is excluded and never emitted (OpenClaw choosing its own level is a let-the-tool-pick value)",
|
|
2385
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help documents --thinking off|minimal|low|medium|high|xhigh|adaptive|max|ultra; unqualified until live evidence"
|
|
2386
|
+
},
|
|
2387
|
+
"sandbox": {
|
|
2388
|
+
"support": "unqualified",
|
|
2389
|
+
"mapping": "unavailable: no sandbox/permission flag is evidenced on `agent exec --help`; an isolated run source-confirms agents.defaults.sandbox.mode=\"off\" with tools.fs.workspaceOnly=true and tools.exec.mode=\"full\" (not flag-controlled)",
|
|
2390
|
+
"evidence": "R: openclaw 2026.10.1 installed package dist/agent-exec-input-C7lx24Ak.mjs buildExecConfigDefaults/resolveExecBaseConfig, read 2026-10-10; unqualified until live evidence"
|
|
2391
|
+
},
|
|
2392
|
+
"approval": {
|
|
2393
|
+
"support": "unqualified",
|
|
2394
|
+
"mapping": "unavailable: no approval-policy flag on `agent exec --help`; --isolated skips ambient config and plugin/MCP install roots entirely, so there is no pending-approval surface to bypass in a one-shot run",
|
|
2395
|
+
"evidence": "R: openclaw 2026.10.1 installed package dist/agent-exec-4ENgJefG.mjs (pluginInstallContext skipped when opts.isolated), read 2026-10-10; unqualified until live evidence"
|
|
2396
|
+
},
|
|
2397
|
+
"workdir": {
|
|
2398
|
+
"support": "unqualified",
|
|
2399
|
+
"mapping": "[--cwd W] sets both the agent workspace and tool working directory",
|
|
2400
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help documents --cwd <dir>; unqualified until live evidence"
|
|
2401
|
+
},
|
|
2402
|
+
"finalOutput": {
|
|
2403
|
+
"support": "unqualified",
|
|
2404
|
+
"mapping": "[--json] one envelope object on stdout after completion (final-json): {ok, status, final, payloads, model, provider, sessionId, error?}; no -o/output-file flag is evidenced",
|
|
2405
|
+
"evidence": "H+R: openclaw 2026.10.1 agent exec --help documents --json; envelope shape read from installed package dist/agent-exec-4ENgJefG.mjs writeAgentExecOutput, 2026-10-10; unqualified until live evidence"
|
|
2406
|
+
},
|
|
2407
|
+
"stdin": {
|
|
2408
|
+
"support": "unqualified",
|
|
2409
|
+
"mapping": "closed: the brief is a host-written file passed as --message-file <briefPath>; brief text never enters argv or stdin",
|
|
2410
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help documents --message-file <path> (max 4 MiB UTF-8 file); unqualified until live evidence"
|
|
2411
|
+
},
|
|
2412
|
+
"structuredOutput": {
|
|
2413
|
+
"support": "unqualified",
|
|
2414
|
+
"mapping": "unavailable: no output-schema parameter is evidenced on `agent exec --help`",
|
|
2415
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help; tasks requiring a schema-bound output are blocked"
|
|
2416
|
+
},
|
|
2417
|
+
"stepCap": {
|
|
2418
|
+
"support": "unqualified",
|
|
2419
|
+
"mapping": "unavailable: no step or turn cap flag is evidenced; --timeout <seconds> bounds wall-clock only and is not emitted by this profile",
|
|
2420
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help documents --timeout <seconds> (deadline only, default 600); no step-cap flag exists"
|
|
2421
|
+
},
|
|
2422
|
+
"trust": {
|
|
2423
|
+
"support": "unqualified",
|
|
2424
|
+
"mapping": "unknown: workspace trust behaviour is not evidenced beyond tools.fs.workspaceOnly=true under --isolated",
|
|
2425
|
+
"evidence": "R: openclaw 2026.10.1 installed package dist/agent-exec-input-C7lx24Ak.mjs, read 2026-10-10; live qualification required"
|
|
2426
|
+
},
|
|
2427
|
+
"children": {
|
|
2428
|
+
"support": "unqualified",
|
|
2429
|
+
"mapping": "unavailable: no per-call subagent/child disable is evidenced on `agent exec --help`",
|
|
2430
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help shows no subagent control; tasks requiring child limits are blocked"
|
|
2431
|
+
},
|
|
2432
|
+
"fallback": {
|
|
2433
|
+
"support": "unqualified",
|
|
2434
|
+
"mapping": "unavailable by design: --fallback <provider/model> exists (repeatable, requires --model) but is never emitted -- no implicit fallback per the S1 direct-handoff scope",
|
|
2435
|
+
"evidence": "H: openclaw 2026.10.1 agent exec --help documents --fallback; this profile never passes it"
|
|
2436
|
+
}
|
|
2437
|
+
},
|
|
2438
|
+
"envAllowlist": [
|
|
2439
|
+
"OPENROUTER_API_KEY"
|
|
2440
|
+
],
|
|
2441
|
+
"pitfalls": [
|
|
2442
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
2443
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
2444
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
2445
|
+
"`openclaw agent` (without `exec`) routes through the Gateway and can `--deliver` a reply to a chat channel; this profile only ever uses `agent exec` and never emits `--deliver`/`--to`/`--channel`/`--reply-*`.",
|
|
2446
|
+
"--fallback is help-evidenced but never emitted by this profile: no implicit fallback chain.",
|
|
2447
|
+
"--isolated discards ambient config and plugin/MCP install roots; a task depending on configured skills or MCP servers is out of scope for this profile.",
|
|
2448
|
+
"NO CLI SANDBOX: an isolated run has sandbox.mode=\"off\" and tools.exec.mode=\"full\" (source-confirmed) -- the embedded agent can run arbitrary shell commands; only file TOOLS are bounded to --cwd (tools.fs.workspaceOnly), command execution is not. sandboxModes advertises \"external\" only; this profile requires a conductor-owned external boundary (container/worktree/VM isolation) and refuses any read-only or workspace-write sandbox request before rendering argv."
|
|
2449
|
+
],
|
|
2450
|
+
"health": {
|
|
2451
|
+
"version": 1,
|
|
2452
|
+
"handshake": "process-only",
|
|
2453
|
+
"outputFraming": "final-json",
|
|
2454
|
+
"signalParser": "provider-openclaw-health-v1",
|
|
2455
|
+
"sessionLogLocator": null,
|
|
2456
|
+
"progressEvidence": [],
|
|
2457
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
2458
|
+
"fixtureRef": "test/fixtures/providers/openclaw/health/manifest.json",
|
|
2459
|
+
"qualifiedAt": null,
|
|
2460
|
+
"statusOperation": null,
|
|
2461
|
+
"cancelOperation": null,
|
|
2462
|
+
"coverage": "degraded",
|
|
2463
|
+
"qualificationTarget": "process-only",
|
|
2464
|
+
"evidenceGrades": [
|
|
2465
|
+
"H",
|
|
2466
|
+
"R"
|
|
2467
|
+
],
|
|
2468
|
+
"provenance": [
|
|
2469
|
+
{
|
|
2470
|
+
"kind": "help",
|
|
2471
|
+
"ref": "tools/ralph-external/lib/openclaw-adapter.mjs (openclaw 2026.10.1 agent exec --help, captured on noodle)",
|
|
2472
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
2473
|
+
"cliVersion": "2026.10.1"
|
|
2474
|
+
},
|
|
2475
|
+
{
|
|
2476
|
+
"kind": "repository",
|
|
2477
|
+
"ref": "tools/ralph-external/lib/openclaw-adapter.mjs (installed openclaw 2026.10.1 npm package dist/agent-exec-4ENgJefG.mjs + dist/agent-exec-input-C7lx24Ak.mjs, read on noodle)",
|
|
2478
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
2479
|
+
"cliVersion": "2026.10.1"
|
|
2480
|
+
}
|
|
2481
|
+
],
|
|
2482
|
+
"qualificationOwner": "B-OG-42",
|
|
2483
|
+
"qualification": {
|
|
2484
|
+
"status": "unqualified",
|
|
2485
|
+
"scopeDigest": null,
|
|
2486
|
+
"cliVersion": null,
|
|
2487
|
+
"accountScope": null,
|
|
2488
|
+
"profileRef": null,
|
|
2489
|
+
"modelKey": null,
|
|
2490
|
+
"effort": null,
|
|
2491
|
+
"authorizedLive": false
|
|
2492
|
+
}
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
}
|
|
2496
|
+
}
|
|
217
2497
|
},
|
|
218
2498
|
"grokbot": {
|
|
219
2499
|
"agent": "unsupported",
|
|
@@ -226,7 +2506,22 @@
|
|
|
226
2506
|
"artifactFormat": "Informational only",
|
|
227
2507
|
"verification": "Confirm steward models --route --provider grokbot emits unsupported/informational",
|
|
228
2508
|
"sourceUrl": "https://github.com/jmagly/aiwg/blob/main/docs/architecture/adr-grokbot-provider-target.md",
|
|
229
|
-
"verifiedAt": "2026-09-15"
|
|
2509
|
+
"verifiedAt": "2026-09-15",
|
|
2510
|
+
"workerHealthCoverage": {
|
|
2511
|
+
"scope": "out",
|
|
2512
|
+
"coverage": "unobserved",
|
|
2513
|
+
"handshake": "unobserved",
|
|
2514
|
+
"evidenceGrades": [
|
|
2515
|
+
"R",
|
|
2516
|
+
"D"
|
|
2517
|
+
],
|
|
2518
|
+
"qualificationOwner": "B-OG-47",
|
|
2519
|
+
"provenance": [
|
|
2520
|
+
"src/providers/provider-definitions.ts#grokbot",
|
|
2521
|
+
"https://docs.x.ai/grok-bot/overview.md"
|
|
2522
|
+
],
|
|
2523
|
+
"reason": "CreateAgent/registered-machine capability does not establish a CLI worker contract."
|
|
2524
|
+
}
|
|
230
2525
|
},
|
|
231
2526
|
"grok-build": {
|
|
232
2527
|
"agent": "inherited",
|
|
@@ -239,7 +2534,192 @@
|
|
|
239
2534
|
"artifactFormat": "Grok Build model alias",
|
|
240
2535
|
"verification": "grok inspect --json plus bounded parsing of model fields from reported config layers",
|
|
241
2536
|
"sourceUrl": "https://docs.x.ai/build/settings",
|
|
242
|
-
"verifiedAt": "2026-09-21"
|
|
2537
|
+
"verifiedAt": "2026-09-21",
|
|
2538
|
+
"workerHealthAdapter": {
|
|
2539
|
+
"version": 1,
|
|
2540
|
+
"id": "grok-build",
|
|
2541
|
+
"provider": "grok-build",
|
|
2542
|
+
"adapterVersion": "1",
|
|
2543
|
+
"supportedVersions": "1.0.50",
|
|
2544
|
+
"runtimeDriver": "installed:grok-build",
|
|
2545
|
+
"catalogAdapter": {
|
|
2546
|
+
"kind": "file",
|
|
2547
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
2548
|
+
"parser": "existing-provider-catalog"
|
|
2549
|
+
},
|
|
2550
|
+
"invocation": {
|
|
2551
|
+
"kind": "process",
|
|
2552
|
+
"executable": "grok",
|
|
2553
|
+
"argv": [
|
|
2554
|
+
"--prompt-file",
|
|
2555
|
+
"${brief}",
|
|
2556
|
+
"-m",
|
|
2557
|
+
"${model}",
|
|
2558
|
+
"--reasoning-effort",
|
|
2559
|
+
"${effort}",
|
|
2560
|
+
"--permission-mode",
|
|
2561
|
+
"dontAsk",
|
|
2562
|
+
"--sandbox",
|
|
2563
|
+
"${sandbox}",
|
|
2564
|
+
"--cwd",
|
|
2565
|
+
"${workspace}",
|
|
2566
|
+
"--output-format",
|
|
2567
|
+
"streaming-json",
|
|
2568
|
+
"--no-subagents",
|
|
2569
|
+
"--no-plan",
|
|
2570
|
+
"--no-alt-screen",
|
|
2571
|
+
"--disable-web-search"
|
|
2572
|
+
],
|
|
2573
|
+
"stdin": "closed",
|
|
2574
|
+
"cwd": "${workspace}",
|
|
2575
|
+
"envAllowlist": [
|
|
2576
|
+
"XAI_API_KEY",
|
|
2577
|
+
"HOME"
|
|
2578
|
+
],
|
|
2579
|
+
"versionArgv": [
|
|
2580
|
+
"--version"
|
|
2581
|
+
],
|
|
2582
|
+
"maxOutputBytes": 10485760
|
|
2583
|
+
},
|
|
2584
|
+
"capabilities": {
|
|
2585
|
+
"output": "text",
|
|
2586
|
+
"modelPin": "unsupported",
|
|
2587
|
+
"effort": "unsupported",
|
|
2588
|
+
"cancel": "none",
|
|
2589
|
+
"resume": false,
|
|
2590
|
+
"sandboxModes": [
|
|
2591
|
+
"read-only",
|
|
2592
|
+
"workspace-write"
|
|
2593
|
+
],
|
|
2594
|
+
"nestedAgentsControllable": false,
|
|
2595
|
+
"nativeFallbackControllable": false,
|
|
2596
|
+
"hardBudget": []
|
|
2597
|
+
},
|
|
2598
|
+
"qualification": {
|
|
2599
|
+
"status": "unqualified"
|
|
2600
|
+
},
|
|
2601
|
+
"invocationProfiles": {
|
|
2602
|
+
"direct-shell": {
|
|
2603
|
+
"transport": "shell",
|
|
2604
|
+
"supportedVersions": "1.0.50",
|
|
2605
|
+
"controls": {
|
|
2606
|
+
"model": {
|
|
2607
|
+
"support": "unqualified",
|
|
2608
|
+
"mapping": "-m, --model <MODEL> (exact model id only; 'auto'/'default' and generic Ralph-loop aliases are refused; the driver also refuses any option-prefixed or whitespace-containing value)",
|
|
2609
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('-m, --model <MODEL> Model ID to use'; root --help lists no enum)"
|
|
2610
|
+
},
|
|
2611
|
+
"effort": {
|
|
2612
|
+
"support": "unqualified",
|
|
2613
|
+
"mapping": "--reasoning-effort <EFFORT> (none|minimal|low|medium|high|xhigh|max), always explicit; alias --effort never emitted",
|
|
2614
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--reasoning-effort <EFFORT> Reasoning effort for reasoning models [aliases: --effort]'; full value set from the installed binary's own error text: \"invalid reasoning effort: ... (expected one of: none, minimal, low, medium, high, xhigh, max)\")"
|
|
2615
|
+
},
|
|
2616
|
+
"sandbox": {
|
|
2617
|
+
"support": "unqualified",
|
|
2618
|
+
"mapping": "--sandbox <PROFILE>, always explicit for every mode; read-only -> 'read-only', workspace-write -> 'workspace'; 'off'/'devbox'/'strict' never emitted",
|
|
2619
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--sandbox <PROFILE> Sandbox profile for filesystem and network access [env: GROK_SANDBOX=]'; bundled sandbox doc: built-in profiles 'off, workspace, devbox, read-only, strict; or a custom profile name', default with no flag is 'off'; per-profile semantics table preserved in the evidence file)"
|
|
2620
|
+
},
|
|
2621
|
+
"approval": {
|
|
2622
|
+
"support": "unqualified",
|
|
2623
|
+
"mapping": "--permission-mode dontAsk (the CLI's only non-prompting, non-bypass mode: \"Only pre-approved tools and built-in read-only handling\" / \"Strict CI allowlists\" / \"denies whatever it would have to prompt for\") plus scoped --allow/--deny rule tokens from the resolved permission tuple; --always-approve and --permission-mode bypassPermissions are never emitted",
|
|
2624
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--permission-mode <MODE> [possible values: default, acceptEdits, auto, dontAsk, bypassPermissions, plan]'; bundled permission-modes table preserved verbatim in the evidence file; '--allow <RULE> Permission allow rule (compat alias: --allowedTools)'; '--deny <RULE> Permission deny rule (compat alias: --disallowedTools)')"
|
|
2625
|
+
},
|
|
2626
|
+
"workdir": {
|
|
2627
|
+
"support": "unqualified",
|
|
2628
|
+
"mapping": "--cwd <CWD>",
|
|
2629
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--cwd <CWD> Working directory')"
|
|
2630
|
+
},
|
|
2631
|
+
"finalOutput": {
|
|
2632
|
+
"support": "unqualified",
|
|
2633
|
+
"mapping": "stdout --output-format streaming-json (NDJSON, one ACP session update per line); the final 'end' event's stopReason plus concatenated 'text' chunks form the answer; no separate output-file flag is evidenced. NOTE: the SEPARATE, pre-existing src/providers/grok-build-headless.ts transport and its shared tools/ralph-external/lib/worker-health.mjs generic branch use a different, older message/result event shape and --output-format json (a single JSON object); this direct-shell profile's own observeHealthEvent/parseDirectFinal handle only the streaming-json/ACP shape and never touch that other path.",
|
|
2634
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--output-format <OUTPUT_FORMAT> ... streaming-json: NDJSON: one ACP session update per line, the agent's native format'; bundled output-format doc gives the full event vocabulary and a worked example, preserved in the evidence file, confirming 'json' is a single object with text/stopReason/sessionId/requestId/usage fields -- NOT the message/result shape -- and 'streaming-json' is the ACP-derived text/thought/tool_call/tool_call_update/usage/plan/available_commands/end/error vocabulary)"
|
|
2635
|
+
},
|
|
2636
|
+
"stdin": {
|
|
2637
|
+
"support": "unqualified",
|
|
2638
|
+
"mapping": "unavailable for the brief: -p/--single <PROMPT> and --prompt-json <JSON> are argv-only; the brief instead rides on --prompt-file <PATH> ('Single-turn prompt from a file')",
|
|
2639
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('-p, --single <PROMPT> Single-turn prompt. Prints the response to stdout and exits'; '--prompt-file <PATH> Single-turn prompt from a file'; '--prompt-json <JSON> Single-turn prompt as JSON content blocks')"
|
|
2640
|
+
},
|
|
2641
|
+
"structuredOutput": {
|
|
2642
|
+
"support": "unqualified",
|
|
2643
|
+
"mapping": "the ACP-derived streaming-json event grammar itself (module doc in grok-build-adapter.mjs); no --json-schema structured-output constraint is used by this profile",
|
|
2644
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--json-schema <SCHEMA> JSON Schema for structured output ... Implies --output-format json'; never emitted here since this profile pins streaming-json)"
|
|
2645
|
+
},
|
|
2646
|
+
"stepCap": {
|
|
2647
|
+
"support": "unqualified",
|
|
2648
|
+
"mapping": "unavailable: --max-turns <N> bounds agent turns but no qualified cap value is evidenced; never emitted by this profile",
|
|
2649
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--max-turns <N> Maximum number of agent turns')"
|
|
2650
|
+
},
|
|
2651
|
+
"trust": {
|
|
2652
|
+
"support": "unqualified",
|
|
2653
|
+
"mapping": "--disable-web-search (removes the one evidenced built-in external-network tool so the AIWG worker-invoke bridge remains the one MCP/tool route); no flag to disable configured MCP servers is evidenced (grok has no built-in MCP server, only a user/project mcp.json; unavailable, not invented)",
|
|
2654
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--disable-web-search Disable web search and web fetch tools')"
|
|
2655
|
+
},
|
|
2656
|
+
"children": {
|
|
2657
|
+
"support": "unqualified",
|
|
2658
|
+
"mapping": "--no-subagents (disables subagent spawning; denies hidden fan-out)",
|
|
2659
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md) ('--no-subagents Disable subagent spawning')"
|
|
2660
|
+
},
|
|
2661
|
+
"fallback": {
|
|
2662
|
+
"support": "unqualified",
|
|
2663
|
+
"mapping": "unavailable: no model/account fallback-selection flag is evidenced",
|
|
2664
|
+
"evidence": "H: grok 1.0.50 (c58f321264ba, stable) --help, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt); plus the installed binary's own bundled docs (strings-read, never live qualification; full extracts preserved in docs/providers/grok-build-cli-evidence.md)"
|
|
2665
|
+
}
|
|
2666
|
+
},
|
|
2667
|
+
"envAllowlist": [
|
|
2668
|
+
"XAI_API_KEY",
|
|
2669
|
+
"HOME"
|
|
2670
|
+
],
|
|
2671
|
+
"pitfalls": [
|
|
2672
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
2673
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
2674
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
2675
|
+
"The separate, pre-existing src/providers/grok-build-headless.ts transport and the generic grok-build branch in tools/ralph-external/lib/worker-health.mjs use --output-format json and an older message/result event shape; this profile's streaming-json/ACP grammar is independent and does not change that path or its consumers.",
|
|
2676
|
+
"No --no-ask-user-equivalent flag is listed in the captured root --help for this version (an internal no-ask-user arg name exists in the compiled binary's own strings but is not printed help text), so it is never emitted; whether an ask_user_question tool call blocks indefinitely under dontAsk in a non-interactive run is unqualified, not invented away.",
|
|
2677
|
+
"--always-approve and --permission-mode bypassPermissions are never emitted; a scoped --allow/--deny rule value, or the model/effort value, starting with '-' or containing whitespace/control characters is refused by the driver before argv is built.",
|
|
2678
|
+
"Permission-mode and sandbox-profile semantics are quoted directly from the installed binary's own bundled documentation (see docs/providers/grok-build-cli-evidence.md for the full extracts, strings command and binary version/hash); where that documentation does not settle a question (e.g. ask_user_question behavior under dontAsk), the control stays unqualified rather than assumed safe.",
|
|
2679
|
+
"Live qualification is an open S1 blocker: this profile has been exercised only against --help/--version/subcommand --help plus strings-read bundled docs, never a live prompted run. The smoke command in docs/providers/grok-build-direct.md is the first live check and needs an XAI_API_KEY (or cached grok login) from the operator."
|
|
2680
|
+
],
|
|
2681
|
+
"health": {
|
|
2682
|
+
"version": 1,
|
|
2683
|
+
"handshake": "process-only",
|
|
2684
|
+
"outputFraming": "jsonl",
|
|
2685
|
+
"signalParser": "provider-grok-build-health-v1",
|
|
2686
|
+
"sessionLogLocator": null,
|
|
2687
|
+
"progressEvidence": [
|
|
2688
|
+
"distinct tool_call/tool_call_update toolCallId"
|
|
2689
|
+
],
|
|
2690
|
+
"stopEvidence": "owned process identity and observed exit; the documented terminal 'end' event's stopReason === 'end_turn' plus a standalone 'error' event or a failed tool_call/tool_call_update anywhere always defeats a clean-looking exit; any event observed after 'end' is itself a contract violation and fails the parse",
|
|
2691
|
+
"fixtureRef": "test/fixtures/providers/grok-build/direct-health/manifest.json",
|
|
2692
|
+
"qualifiedAt": null,
|
|
2693
|
+
"statusOperation": null,
|
|
2694
|
+
"cancelOperation": null,
|
|
2695
|
+
"coverage": "degraded",
|
|
2696
|
+
"qualificationTarget": "semantic",
|
|
2697
|
+
"evidenceGrades": [
|
|
2698
|
+
"H"
|
|
2699
|
+
],
|
|
2700
|
+
"provenance": [
|
|
2701
|
+
{
|
|
2702
|
+
"kind": "help",
|
|
2703
|
+
"ref": ".aiwg/working/s1-scratch/cli-help/grok-1.0.50.txt",
|
|
2704
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
2705
|
+
"cliVersion": "1.0.50"
|
|
2706
|
+
}
|
|
2707
|
+
],
|
|
2708
|
+
"qualificationOwner": "B-OG-41",
|
|
2709
|
+
"qualification": {
|
|
2710
|
+
"status": "unqualified",
|
|
2711
|
+
"scopeDigest": null,
|
|
2712
|
+
"cliVersion": null,
|
|
2713
|
+
"accountScope": null,
|
|
2714
|
+
"profileRef": null,
|
|
2715
|
+
"modelKey": null,
|
|
2716
|
+
"effort": null,
|
|
2717
|
+
"authorizedLive": false
|
|
2718
|
+
}
|
|
2719
|
+
}
|
|
2720
|
+
}
|
|
2721
|
+
}
|
|
2722
|
+
}
|
|
243
2723
|
},
|
|
244
2724
|
"hermes": {
|
|
245
2725
|
"agent": "global-only",
|
|
@@ -252,7 +2732,185 @@
|
|
|
252
2732
|
"artifactFormat": "Global CLI/config setting",
|
|
253
2733
|
"verification": "Inspect Hermes delegation configuration",
|
|
254
2734
|
"sourceUrl": "https://hermes-agent.nousresearch.com/docs/user-guide/features/delegation",
|
|
255
|
-
"verifiedAt": "2026-07-20"
|
|
2735
|
+
"verifiedAt": "2026-07-20",
|
|
2736
|
+
"workerHealthAdapter": {
|
|
2737
|
+
"version": 1,
|
|
2738
|
+
"id": "hermes",
|
|
2739
|
+
"provider": "hermes",
|
|
2740
|
+
"adapterVersion": "1",
|
|
2741
|
+
"supportedVersions": "0.21.6",
|
|
2742
|
+
"runtimeDriver": "installed:hermes",
|
|
2743
|
+
"catalogAdapter": {
|
|
2744
|
+
"kind": "file",
|
|
2745
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
2746
|
+
"parser": "existing-provider-catalog"
|
|
2747
|
+
},
|
|
2748
|
+
"invocation": {
|
|
2749
|
+
"kind": "process",
|
|
2750
|
+
"executable": "hermes",
|
|
2751
|
+
"argv": [
|
|
2752
|
+
"chat",
|
|
2753
|
+
"--query-file",
|
|
2754
|
+
"-",
|
|
2755
|
+
"--oneshot",
|
|
2756
|
+
"--quiet",
|
|
2757
|
+
"--ignore-user-config",
|
|
2758
|
+
"--ignore-rules",
|
|
2759
|
+
"--source",
|
|
2760
|
+
"tool",
|
|
2761
|
+
"--provider",
|
|
2762
|
+
"${provider}",
|
|
2763
|
+
"-m",
|
|
2764
|
+
"${model}",
|
|
2765
|
+
"--reasoning",
|
|
2766
|
+
"${effort}"
|
|
2767
|
+
],
|
|
2768
|
+
"stdin": "brief-text",
|
|
2769
|
+
"cwd": "${workspace}",
|
|
2770
|
+
"envAllowlist": [],
|
|
2771
|
+
"versionPattern": "^Hermes Agent v([0-9A-Za-z.+-]{1,128}) [^\\r\\n]{1,128}$",
|
|
2772
|
+
"versionArgv": [
|
|
2773
|
+
"--version"
|
|
2774
|
+
],
|
|
2775
|
+
"maxOutputBytes": 10485760
|
|
2776
|
+
},
|
|
2777
|
+
"capabilities": {
|
|
2778
|
+
"output": "text",
|
|
2779
|
+
"modelPin": "unsupported",
|
|
2780
|
+
"effort": "unsupported",
|
|
2781
|
+
"cancel": "none",
|
|
2782
|
+
"resume": false,
|
|
2783
|
+
"sandboxModes": [
|
|
2784
|
+
"external"
|
|
2785
|
+
],
|
|
2786
|
+
"nestedAgentsControllable": false,
|
|
2787
|
+
"nativeFallbackControllable": false,
|
|
2788
|
+
"hardBudget": []
|
|
2789
|
+
},
|
|
2790
|
+
"qualification": {
|
|
2791
|
+
"status": "unqualified"
|
|
2792
|
+
},
|
|
2793
|
+
"invocationProfiles": {
|
|
2794
|
+
"direct-shell": {
|
|
2795
|
+
"transport": "shell",
|
|
2796
|
+
"supportedVersions": "0.21.6",
|
|
2797
|
+
"controls": {
|
|
2798
|
+
"model": {
|
|
2799
|
+
"support": "unqualified",
|
|
2800
|
+
"mapping": "[-m/--model MODEL] declared directly on the chat subparser (_parser.py:248-249), same semantics as the top-level flag",
|
|
2801
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2802
|
+
},
|
|
2803
|
+
"effort": {
|
|
2804
|
+
"support": "unqualified",
|
|
2805
|
+
"mapping": "[--reasoning LEVEL] declared on the chat subparser (_parser.py:251-254); LEVEL in [none, minimal, low, medium, high, xhigh, max]; ultra is denied by the shared resolver guard, never emitted",
|
|
2806
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2807
|
+
},
|
|
2808
|
+
"sandbox": {
|
|
2809
|
+
"support": "unqualified",
|
|
2810
|
+
"mapping": "no sandbox flag exists for chat; this control routes through the shared resolver's external-boundary requirement for hermes (requiresWorkerExternalBoundary), not a CLI flag",
|
|
2811
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2812
|
+
},
|
|
2813
|
+
"approval": {
|
|
2814
|
+
"support": "unqualified",
|
|
2815
|
+
"mapping": "--ignore-user-config always emitted: falls back to the safe built-in defaults (approvals.mode: \"smart\", approvals.single_query_mode: \"deny\"; config_defaults.py:1679,1682) regardless of the host's config.yaml, defeating single_query_mode: approve/off/allow/yes (approval_context.py:298-304,313-315) and approvals.mode: off (approval.py:967). HERMES_YOLO_MODE is a process env var frozen at import (approval.py:46); defeated structurally by the empty envAllowlist and env -i renderer, not by a flag, and proven by an explicit assertion (HD10). Re-verified against hermes 0.21.6 (~/.hermes/hermes-agent): same semantics, refactored into tools/approval_context.py's _binary_approval_mode helper.",
|
|
2816
|
+
"evidence": "D: hermes 0.21.6 installed source (~/.hermes/hermes-agent: tools/approval.py:46,967; tools/approval_context.py:298-304,313-315; hermes_cli/config_defaults.py:1679,1682); never live-qualified"
|
|
2817
|
+
},
|
|
2818
|
+
"workdir": {
|
|
2819
|
+
"support": "unqualified",
|
|
2820
|
+
"mapping": "conductor process cwd only; chat also accepts --in DIR but this profile relies on the renderer's own `cd <workdir> &&` prefix instead",
|
|
2821
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2822
|
+
},
|
|
2823
|
+
"finalOutput": {
|
|
2824
|
+
"support": "unqualified",
|
|
2825
|
+
"mapping": "chat --quiet routes through _run_quiet_single_query (cli_single_query.py:199-343), which calls cli.agent.run_conversation() directly and prints stdout via `elif response: print(response)` only (cli_single_query.py:314-315); on failure stdout is empty and the error/session_id go to stderr (cli_single_query.py:310-313,341). No usage-file/JSON-report equivalent exists for chat (oneshot.py:215-324, -z only). On hermes 0.21.6, _single_query_exit_code (cli_single_query.py:152-194) now returns exit 1 whenever failed/partial/completed-is-False is set, which FIXES the 0.20.6 case where reasoning-budget exhaustion (then: agent/conversation_loop.py:3902; now: agent/turn_truncation.py:95-180's partial_result()) exited 0 with free text. parseWorkerFinal still also requires the final text to parse as a strict workerClaims JSON document (#2890) as defense in depth: a genuinely completed turn's model output is not guaranteed to be valid JSON regardless of exit code.",
|
|
2826
|
+
"evidence": "D: hermes 0.21.6 installed source (~/.hermes/hermes-agent: hermes_cli/cli_single_query.py:152-194,199-343,310-315,341; agent/turn_truncation.py:95-180; hermes_cli/oneshot.py:215-324); never live-qualified"
|
|
2827
|
+
},
|
|
2828
|
+
"stdin": {
|
|
2829
|
+
"support": "unqualified",
|
|
2830
|
+
"mapping": "[--query-file -] reads the single query from stdin to EOF, nothing shell-interpreted (_parser.py:235-242); dispatched at main.py:1711-1712 (args.query = sys.stdin.read()); the brief never enters argv",
|
|
2831
|
+
"evidence": "D: hermes 0.21.6 installed source (~/.hermes/hermes-agent: hermes_cli/main.py, hermes_cli/_parser.py, hermes_cli/cli_single_query.py, tools/approval.py); never live-qualified"
|
|
2832
|
+
},
|
|
2833
|
+
"structuredOutput": {
|
|
2834
|
+
"support": "unqualified",
|
|
2835
|
+
"mapping": "unavailable: hermes chat --help documents no structured/JSON output flag",
|
|
2836
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2837
|
+
},
|
|
2838
|
+
"stepCap": {
|
|
2839
|
+
"support": "unqualified",
|
|
2840
|
+
"mapping": "unavailable: hermes chat --help documents --max-turns for the seeded-interactive path only, not for the --oneshot single-query exit; not relied on by this profile",
|
|
2841
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2842
|
+
},
|
|
2843
|
+
"trust": {
|
|
2844
|
+
"support": "unqualified",
|
|
2845
|
+
"mapping": "unavailable: hermes chat --help documents no workspace-trust flag distinct from the deny-by-default single_query_mode approval gate",
|
|
2846
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2847
|
+
},
|
|
2848
|
+
"children": {
|
|
2849
|
+
"support": "unqualified",
|
|
2850
|
+
"mapping": "-t/--toolsets restricts enabled toolsets for the call; no nested-agent-specific control is documented",
|
|
2851
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation; supersedes the stale root /usr/local/lib/hermes-agent 0.20.6 copy); unqualified until live evidence"
|
|
2852
|
+
},
|
|
2853
|
+
"fallback": {
|
|
2854
|
+
"support": "unqualified",
|
|
2855
|
+
"mapping": "--provider PROVIDER pins the inference provider for this call; always emitted by this profile (never omitted) because --ignore-user-config removes the config.yaml provider fallback and the empty envAllowlist removes the HERMES_INFERENCE_PROVIDER fallback, so an omitted --provider resolves to the literal \"auto\" (resolve_requested_provider, runtime_provider.py:490-499) and silently picks whatever ambient credential Hermes finds; hermes fallback/moa subcommands configure persistent chains, not a per-call override",
|
|
2856
|
+
"evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation); confirmed by TWO live conductor smoke runs: 0.20.6 on 2026-10-09 (omitted --provider failed with \"No inference provider configured\" under --ignore-user-config) and 0.21.6 on 2026-10-10 (`--provider openrouter -m anthropic/claude-sonnet-4.6 --reasoning low` exited 0 with the exact instructed stdout) — still unqualified pending a repeatable, authorized live-qualification pass"
|
|
2857
|
+
}
|
|
2858
|
+
},
|
|
2859
|
+
"envAllowlist": [],
|
|
2860
|
+
"pitfalls": [
|
|
2861
|
+
"Documentation/help and installed-source reading are not authenticated live qualification.",
|
|
2862
|
+
"This profile deliberately does NOT use the top-level -z/--oneshot PROMPT path: that dest is argv-only (no stdin/file option) and oneshot.py unconditionally sets HERMES_YOLO_MODE=1 with no override, and its exit code can be 0 even when its own usage-file failed flag is true.",
|
|
2863
|
+
"Exit code 0 alone is still not treated as completion evidence by this profile, even though hermes 0.21.6 fixed the specific 0.20.6 bug this guarded against: on 0.20.6, reasoning-budget exhaustion (then agent/conversation_loop.py:3902) returned completed:false/partial:true with no \"failed\" key and still exited 0; on 0.21.6 the same case (now agent/turn_truncation.py:95-180's partial_result()) correctly exits 1 via _single_query_exit_code (cli_single_query.py:152-194). parseWorkerFinal keeps requiring a strict workerClaims JSON parse in addition to the exit-derived status, now as defense in depth against a completed turn whose model output simply isn't valid JSON.",
|
|
2864
|
+
"Approval policy is host config (approvals.mode, approvals.single_query_mode in config.yaml), not an argv flag; --ignore-user-config pins it to the safe built-in defaults, but this is read from source, not live-qualified, so the approval control stays unqualified.",
|
|
2865
|
+
"HERMES_YOLO_MODE (and any HERMES_* override) must never reach the worker process; this relies on the empty envAllowlist and the renderer's env -i, not on a CLI flag.",
|
|
2866
|
+
"chat --query-file - --oneshot --quiet has no --usage-file/JSON-report equivalent; final-output extraction is stdout-text-on-exit-0 PLUS a strict workerClaims parse, never exit code or stdout non-emptiness alone.",
|
|
2867
|
+
"A partial response can still print to stdout before a failed turn; only the exit code (not stdout non-emptiness) distinguishes that case from success, and even exit 0 is not sufficient (see above).",
|
|
2868
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
2869
|
+
"--provider defaults to \"auto\" (hermes_cli/runtime_provider.py:490-499) when omitted; under --ignore-user-config and the empty envAllowlist both of its fallbacks (config.yaml model.provider, HERMES_INFERENCE_PROVIDER) are unreachable, so this profile always emits an explicit --provider from the resolved selection and refuses a missing value or the literal \"auto\". Confirmed by live smoke runs on both 0.20.6 (failure) and 0.21.6 (success with --provider openrouter).",
|
|
2870
|
+
"On hermes 0.20.6, --quiet --oneshot could still print a startup diagnostic to stdout before the final response (that build's _ensure_tirith_security, the tirith-scanner-unavailable warning). On hermes 0.21.6 the tirith scanner was removed entirely (hermes_cli/config_migrations.py:686-702, \"the bundled tirith scanner left Hermes\") and a 2026-10-10 conductor smoke run on 0.21.6 confirmed the line no longer appears; a broader source grep across ~/.hermes/hermes-agent found no other bare-\"⚠\" _cprint site reachable from this profile's --quiet dispatch. parseWorkerFinal still strips that exact leading diagnostic shape as defensive, forward-compatible tolerance (harmless no-op on 0.21.6), and still fails on unrecognized preamble or a diagnostic appearing after the real final."
|
|
2871
|
+
],
|
|
2872
|
+
"health": {
|
|
2873
|
+
"version": 1,
|
|
2874
|
+
"handshake": "process-only",
|
|
2875
|
+
"outputFraming": "plain",
|
|
2876
|
+
"signalParser": "provider-hermes-health-v1",
|
|
2877
|
+
"sessionLogLocator": "hermes-session-correlated-v1",
|
|
2878
|
+
"progressEvidence": [
|
|
2879
|
+
"session/turn-correlated completed tool marker"
|
|
2880
|
+
],
|
|
2881
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
2882
|
+
"fixtureRef": "test/fixtures/providers/hermes/health/manifest.json",
|
|
2883
|
+
"qualifiedAt": null,
|
|
2884
|
+
"statusOperation": null,
|
|
2885
|
+
"cancelOperation": null,
|
|
2886
|
+
"coverage": "degraded",
|
|
2887
|
+
"qualificationTarget": "semantic",
|
|
2888
|
+
"evidenceGrades": [
|
|
2889
|
+
"H"
|
|
2890
|
+
],
|
|
2891
|
+
"provenance": [
|
|
2892
|
+
{
|
|
2893
|
+
"kind": "help",
|
|
2894
|
+
"ref": "tools/ralph-external/lib/hermes-adapter.mjs",
|
|
2895
|
+
"observedAt": "2026-10-10T00:00:00Z",
|
|
2896
|
+
"cliVersion": "0.21.6"
|
|
2897
|
+
}
|
|
2898
|
+
],
|
|
2899
|
+
"qualificationOwner": "B-OG-48",
|
|
2900
|
+
"qualification": {
|
|
2901
|
+
"status": "unqualified",
|
|
2902
|
+
"scopeDigest": null,
|
|
2903
|
+
"cliVersion": null,
|
|
2904
|
+
"accountScope": null,
|
|
2905
|
+
"profileRef": null,
|
|
2906
|
+
"modelKey": null,
|
|
2907
|
+
"effort": null,
|
|
2908
|
+
"authorizedLive": false
|
|
2909
|
+
}
|
|
2910
|
+
}
|
|
2911
|
+
}
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
256
2914
|
},
|
|
257
2915
|
"openhuman": {
|
|
258
2916
|
"agent": "compiled",
|
|
@@ -265,9 +2923,176 @@
|
|
|
265
2923
|
"artifactFormat": "Standalone TOML agent definition",
|
|
266
2924
|
"verification": "Parse against OpenHuman definition schema",
|
|
267
2925
|
"sourceUrl": "https://github.com/tinyhumansai/openhuman/blob/main/src/openhuman/agent/harness/definition.rs",
|
|
268
|
-
"verifiedAt": "2026-07-20"
|
|
2926
|
+
"verifiedAt": "2026-07-20",
|
|
2927
|
+
"workerHealthAdapter": {
|
|
2928
|
+
"version": 1,
|
|
2929
|
+
"id": "openhuman",
|
|
2930
|
+
"provider": "openhuman",
|
|
2931
|
+
"adapterVersion": "1",
|
|
2932
|
+
"supportedVersions": "0.64.14",
|
|
2933
|
+
"runtimeDriver": "installed:openhuman",
|
|
2934
|
+
"catalogAdapter": {
|
|
2935
|
+
"kind": "file",
|
|
2936
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
2937
|
+
"parser": "existing-provider-catalog"
|
|
2938
|
+
},
|
|
2939
|
+
"invocation": {
|
|
2940
|
+
"kind": "process",
|
|
2941
|
+
"executable": "openhuman-core",
|
|
2942
|
+
"argv": [
|
|
2943
|
+
"--model",
|
|
2944
|
+
"${model}",
|
|
2945
|
+
"call",
|
|
2946
|
+
"--method",
|
|
2947
|
+
"openhuman.agent_chat",
|
|
2948
|
+
"--params-stdin"
|
|
2949
|
+
],
|
|
2950
|
+
"stdin": "brief-json",
|
|
2951
|
+
"cwd": "${workspace}",
|
|
2952
|
+
"envAllowlist": [],
|
|
2953
|
+
"versionArgv": [
|
|
2954
|
+
"--help"
|
|
2955
|
+
],
|
|
2956
|
+
"maxOutputBytes": 10485760
|
|
2957
|
+
},
|
|
2958
|
+
"capabilities": {
|
|
2959
|
+
"output": "validated-file",
|
|
2960
|
+
"modelPin": "unsupported",
|
|
2961
|
+
"effort": "unsupported",
|
|
2962
|
+
"cancel": "none",
|
|
2963
|
+
"resume": false,
|
|
2964
|
+
"sandboxModes": [
|
|
2965
|
+
"external"
|
|
2966
|
+
],
|
|
2967
|
+
"nestedAgentsControllable": false,
|
|
2968
|
+
"nativeFallbackControllable": false,
|
|
2969
|
+
"hardBudget": []
|
|
2970
|
+
},
|
|
2971
|
+
"qualification": {
|
|
2972
|
+
"status": "unqualified"
|
|
2973
|
+
},
|
|
2974
|
+
"invocationProfiles": {
|
|
2975
|
+
"direct-shell": {
|
|
2976
|
+
"transport": "shell",
|
|
2977
|
+
"supportedVersions": "0.64.14",
|
|
2978
|
+
"controls": {
|
|
2979
|
+
"model": {
|
|
2980
|
+
"support": "unqualified",
|
|
2981
|
+
"mapping": "[\"--model\"] global flag before `call`, mirrored as params.model_override",
|
|
2982
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 core/cli.rs parse_launch_options and agent/schemas.rs agent.chat model_override; unqualified until live model-pin evidence"
|
|
2983
|
+
},
|
|
2984
|
+
"effort": {
|
|
2985
|
+
"support": "unqualified",
|
|
2986
|
+
"mapping": "unavailable: agent.chat exposes no effort or reasoning parameter",
|
|
2987
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 agent/schemas.rs; tasks requiring effort are blocked"
|
|
2988
|
+
},
|
|
2989
|
+
"sandbox": {
|
|
2990
|
+
"support": "unqualified",
|
|
2991
|
+
"mapping": "unavailable: no per-call sandbox flag; external boundary required",
|
|
2992
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32; SecurityPolicy autonomy is config-owned and unqualified"
|
|
2993
|
+
},
|
|
2994
|
+
"approval": {
|
|
2995
|
+
"support": "unqualified",
|
|
2996
|
+
"mapping": "unavailable: no per-call approval flag; external boundary required",
|
|
2997
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32; SecurityPolicy autonomy is config-owned and unqualified"
|
|
2998
|
+
},
|
|
2999
|
+
"workdir": {
|
|
3000
|
+
"support": "unqualified",
|
|
3001
|
+
"mapping": "conductor process cwd, mirrored as params.cwd (must be an existing directory)",
|
|
3002
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 agent/schemas.rs agent.chat cwd"
|
|
3003
|
+
},
|
|
3004
|
+
"finalOutput": {
|
|
3005
|
+
"support": "unqualified",
|
|
3006
|
+
"mapping": "pretty-printed JSON result on stdout after completion (final-json), captured to the stdout path",
|
|
3007
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 core/cli.rs:486 (to_string_pretty result on stdout)"
|
|
3008
|
+
},
|
|
3009
|
+
"stdin": {
|
|
3010
|
+
"support": "unqualified",
|
|
3011
|
+
"mapping": "brief-json: conductor-framed params JSON (message, model_override, cwd) piped on stdin and closed at EOF; brief text never enters argv",
|
|
3012
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 core/cli.rs:445-468 (--params-stdin reads stdin to EOF)"
|
|
3013
|
+
},
|
|
3014
|
+
"structuredOutput": {
|
|
3015
|
+
"support": "unqualified",
|
|
3016
|
+
"mapping": "unavailable: no output-schema parameter evidenced",
|
|
3017
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 agent/schemas.rs"
|
|
3018
|
+
},
|
|
3019
|
+
"stepCap": {
|
|
3020
|
+
"support": "unqualified",
|
|
3021
|
+
"mapping": "unavailable: no step or turn cap evidenced",
|
|
3022
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 agent/schemas.rs"
|
|
3023
|
+
},
|
|
3024
|
+
"trust": {
|
|
3025
|
+
"support": "unqualified",
|
|
3026
|
+
"mapping": "unknown: workspace trust behaviour not evidenced",
|
|
3027
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32; live qualification required"
|
|
3028
|
+
},
|
|
3029
|
+
"children": {
|
|
3030
|
+
"support": "unqualified",
|
|
3031
|
+
"mapping": "unknown: orchestrator may spawn subagents bounded only by MAX_SPAWN_DEPTH; no per-call disable evidenced",
|
|
3032
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32 mcp/server/subagent_depth.rs"
|
|
3033
|
+
},
|
|
3034
|
+
"fallback": {
|
|
3035
|
+
"support": "unqualified",
|
|
3036
|
+
"mapping": "unknown: provider/model fallback behaviour not evidenced",
|
|
3037
|
+
"evidence": "D: openhuman-core 0.64.14 source @216ea32; live qualification required"
|
|
3038
|
+
}
|
|
3039
|
+
},
|
|
3040
|
+
"envAllowlist": [],
|
|
3041
|
+
"pitfalls": [
|
|
3042
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
3043
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
3044
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
|
|
3045
|
+
"No version flag is evidenced in source; versionArgv runs the documented general help only, so installed-version identity stays unavailable until live qualification pins it.",
|
|
3046
|
+
"The brief travels only on stdin, inside the conductor-framed --params-stdin JSON (message, model_override, cwd); effort, step-cap, approval/sandbox and child-agent controls are unknown and block tasks requiring them.",
|
|
3047
|
+
"Native `openhuman-core mcp` agent.run_subagent accepts only agent_id and prompt and may nest subagents; it cannot stand in for a model-pinned worker call.",
|
|
3048
|
+
"Live qualification is an open S1 blocker: openhuman-core is not installed on an authorized host and its probe budget is only proposed."
|
|
3049
|
+
],
|
|
3050
|
+
"health": {
|
|
3051
|
+
"version": 1,
|
|
3052
|
+
"handshake": "process-only",
|
|
3053
|
+
"outputFraming": "final-json",
|
|
3054
|
+
"signalParser": "provider-openhuman-health-v1",
|
|
3055
|
+
"sessionLogLocator": null,
|
|
3056
|
+
"progressEvidence": [],
|
|
3057
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
3058
|
+
"fixtureRef": "test/fixtures/providers/openhuman/health/manifest.json",
|
|
3059
|
+
"qualifiedAt": null,
|
|
3060
|
+
"statusOperation": null,
|
|
3061
|
+
"cancelOperation": null,
|
|
3062
|
+
"coverage": "degraded",
|
|
3063
|
+
"qualificationTarget": "process-only",
|
|
3064
|
+
"evidenceGrades": [
|
|
3065
|
+
"D"
|
|
3066
|
+
],
|
|
3067
|
+
"provenance": [
|
|
3068
|
+
{
|
|
3069
|
+
"kind": "documentation",
|
|
3070
|
+
"ref": "https://github.com/tinyhumansai/openhuman/blob/216ea322a3c1269dada70751ac5c08eac7dc7596/crates/openhuman-core/src/core/cli.rs",
|
|
3071
|
+
"observedAt": "2026-10-08T00:00:00Z",
|
|
3072
|
+
"cliVersion": "0.64.14"
|
|
3073
|
+
}
|
|
3074
|
+
],
|
|
3075
|
+
"qualificationOwner": "B-OG-47",
|
|
3076
|
+
"qualification": {
|
|
3077
|
+
"status": "unqualified",
|
|
3078
|
+
"scopeDigest": null,
|
|
3079
|
+
"cliVersion": null,
|
|
3080
|
+
"accountScope": null,
|
|
3081
|
+
"profileRef": null,
|
|
3082
|
+
"modelKey": null,
|
|
3083
|
+
"effort": null,
|
|
3084
|
+
"authorizedLive": false
|
|
3085
|
+
}
|
|
3086
|
+
}
|
|
3087
|
+
}
|
|
3088
|
+
}
|
|
3089
|
+
}
|
|
269
3090
|
},
|
|
270
3091
|
"muse": {
|
|
3092
|
+
"sessionEnvAllowlist": [
|
|
3093
|
+
"AIWG_MUSE_STUB_SCENARIO",
|
|
3094
|
+
"AIWG_MUSE_STUB_RECEIPT"
|
|
3095
|
+
],
|
|
271
3096
|
"agent": "unsupported",
|
|
272
3097
|
"skill": "unsupported",
|
|
273
3098
|
"globalChild": "informational",
|
|
@@ -276,17 +3101,351 @@
|
|
|
276
3101
|
"invalidPinFallback": "muse exits 1 with run.terminal.failed (\"model `<id>` does not exist or you lack access\"); never falls back to another model",
|
|
277
3102
|
"configTarget": "$XDG_CONFIG_HOME/muse/settings.json `model` (read-only; AIWG never writes it)",
|
|
278
3103
|
"artifactFormat": "Meta provider model id (session-level only)",
|
|
279
|
-
"verification": "
|
|
3104
|
+
"verification": "run.model.configured is runtime-configured-only evidence, never backend identity; authenticated direct profile remains unqualified",
|
|
280
3105
|
"sourceUrl": "https://github.com/jmagly/aiwg/blob/main/docs/architecture/adr-muse-provider-target.md",
|
|
281
3106
|
"verifiedAt": "2026-09-25",
|
|
282
3107
|
"effortValues": [
|
|
3108
|
+
"none",
|
|
283
3109
|
"minimal",
|
|
284
3110
|
"low",
|
|
285
3111
|
"medium",
|
|
286
3112
|
"high",
|
|
287
3113
|
"xhigh",
|
|
288
|
-
"max"
|
|
289
|
-
|
|
3114
|
+
"max",
|
|
3115
|
+
"ultra"
|
|
3116
|
+
],
|
|
3117
|
+
"workerHealthAdapter": {
|
|
3118
|
+
"version": 1,
|
|
3119
|
+
"id": "muse",
|
|
3120
|
+
"provider": "muse",
|
|
3121
|
+
"adapterVersion": "1",
|
|
3122
|
+
"supportedVersions": ">=1.4.4-R5419.1 <2.0.0",
|
|
3123
|
+
"runtimeDriver": "tools/ralph-external/lib/muse-adapter.mjs",
|
|
3124
|
+
"catalogAdapter": {
|
|
3125
|
+
"kind": "file",
|
|
3126
|
+
"locator": "agentic/code/providers/model-catalog.v1.json",
|
|
3127
|
+
"parser": "existing-provider-catalog"
|
|
3128
|
+
},
|
|
3129
|
+
"invocation": {
|
|
3130
|
+
"kind": "process",
|
|
3131
|
+
"executable": "muse",
|
|
3132
|
+
"argv": [
|
|
3133
|
+
"exec",
|
|
3134
|
+
"--json",
|
|
3135
|
+
"--provider",
|
|
3136
|
+
"meta",
|
|
3137
|
+
"--model",
|
|
3138
|
+
"${model}",
|
|
3139
|
+
"--reasoning-effort",
|
|
3140
|
+
"${effort}",
|
|
3141
|
+
"--workspace",
|
|
3142
|
+
"${workspace}",
|
|
3143
|
+
"--approval-mode",
|
|
3144
|
+
"never",
|
|
3145
|
+
"--approval-judge",
|
|
3146
|
+
"off",
|
|
3147
|
+
"--max-model-steps",
|
|
3148
|
+
"${maxSteps}",
|
|
3149
|
+
"--output-schema",
|
|
3150
|
+
"${schema}",
|
|
3151
|
+
"--prompt-file",
|
|
3152
|
+
"${briefFile}"
|
|
3153
|
+
],
|
|
3154
|
+
"stdin": "closed",
|
|
3155
|
+
"cwd": "${workspace}",
|
|
3156
|
+
"envAllowlist": [],
|
|
3157
|
+
"versionPattern": "^Muse Code ([0-9A-Za-z.+-]{1,128}) \\([0-9A-Za-z.+-]{1,128}\\)$",
|
|
3158
|
+
"versionArgv": [
|
|
3159
|
+
"--version"
|
|
3160
|
+
],
|
|
3161
|
+
"maxOutputBytes": 10485760
|
|
3162
|
+
},
|
|
3163
|
+
"capabilities": {
|
|
3164
|
+
"output": "native-schema",
|
|
3165
|
+
"modelPin": "requested",
|
|
3166
|
+
"effort": "explicit",
|
|
3167
|
+
"cancel": "none",
|
|
3168
|
+
"resume": false,
|
|
3169
|
+
"sandboxModes": [
|
|
3170
|
+
"external"
|
|
3171
|
+
],
|
|
3172
|
+
"nestedAgentsControllable": false,
|
|
3173
|
+
"nativeFallbackControllable": false,
|
|
3174
|
+
"hardBudget": []
|
|
3175
|
+
},
|
|
3176
|
+
"qualification": {
|
|
3177
|
+
"status": "unqualified"
|
|
3178
|
+
},
|
|
3179
|
+
"invocationProfiles": {
|
|
3180
|
+
"direct-shell": {
|
|
3181
|
+
"transport": "shell",
|
|
3182
|
+
"supportedVersions": ">=1.4.4-R5419.1 <2.0.0",
|
|
3183
|
+
"controls": {
|
|
3184
|
+
"model": {
|
|
3185
|
+
"support": "unqualified",
|
|
3186
|
+
"mapping": "--model",
|
|
3187
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3188
|
+
},
|
|
3189
|
+
"effort": {
|
|
3190
|
+
"support": "unqualified",
|
|
3191
|
+
"mapping": "--reasoning-effort",
|
|
3192
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3193
|
+
},
|
|
3194
|
+
"sandbox": {
|
|
3195
|
+
"support": "unqualified",
|
|
3196
|
+
"mapping": "qualified external boundary; native sandbox remains enabled",
|
|
3197
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3198
|
+
},
|
|
3199
|
+
"approval": {
|
|
3200
|
+
"support": "unqualified",
|
|
3201
|
+
"mapping": "[\"--approval-mode\",\"never\",\"--approval-judge\",\"off\"]",
|
|
3202
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3203
|
+
},
|
|
3204
|
+
"workdir": {
|
|
3205
|
+
"support": "unqualified",
|
|
3206
|
+
"mapping": "--workspace",
|
|
3207
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3208
|
+
},
|
|
3209
|
+
"finalOutput": {
|
|
3210
|
+
"support": "unqualified",
|
|
3211
|
+
"mapping": "bounded stdout capture; strict Muse terminal normalization pending shared owner",
|
|
3212
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3213
|
+
},
|
|
3214
|
+
"stdin": {
|
|
3215
|
+
"support": "unqualified",
|
|
3216
|
+
"mapping": "closed EOF",
|
|
3217
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3218
|
+
},
|
|
3219
|
+
"structuredOutput": {
|
|
3220
|
+
"support": "unqualified",
|
|
3221
|
+
"mapping": "--output-schema",
|
|
3222
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3223
|
+
},
|
|
3224
|
+
"stepCap": {
|
|
3225
|
+
"support": "unqualified",
|
|
3226
|
+
"mapping": "--max-model-steps",
|
|
3227
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3228
|
+
},
|
|
3229
|
+
"trust": {
|
|
3230
|
+
"support": "unqualified",
|
|
3231
|
+
"mapping": "[]",
|
|
3232
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3233
|
+
},
|
|
3234
|
+
"children": {
|
|
3235
|
+
"support": "unqualified",
|
|
3236
|
+
"mapping": "qualified external boundary; no native child-denial flag assumed",
|
|
3237
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3238
|
+
},
|
|
3239
|
+
"fallback": {
|
|
3240
|
+
"support": "unqualified",
|
|
3241
|
+
"mapping": "qualified external boundary; no implicit model fallback",
|
|
3242
|
+
"evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
|
|
3243
|
+
}
|
|
3244
|
+
},
|
|
3245
|
+
"envAllowlist": [],
|
|
3246
|
+
"pitfalls": [
|
|
3247
|
+
"Live qualification is an open S1 blocker; installed help and synthetic/echo mechanics are not paid inference qualification.",
|
|
3248
|
+
"Configured-model events provide runtime-configured identity only, never backend attestation.",
|
|
3249
|
+
"Contributor data policy is explicit; shared policy denies contributor models and never silently selects the CLI default.",
|
|
3250
|
+
"Workspace trust defaults off; only a host-qualified trust mapping may load rules/skills. Approval-mode never and approval-judge off retain the sandbox. Muse requires a qualified external boundary.",
|
|
3251
|
+
"Host qualification must bind an absolute output-schema mapping and include that schema in runtimeFiles.",
|
|
3252
|
+
"Muse JSONL strict normalization needs the shared strict-parser hook; the MCP bridge must consume the selected provider parser. MSP is not MCP.",
|
|
3253
|
+
"Semantic step/tool completion grammar and native session-log layout remain unavailable; unrelated logs, deltas and CPU cannot establish progress.",
|
|
3254
|
+
"Shared version gate: installation requires the raw trimmed banner Muse Code 1.4.4 (1.4.4-R5419.1), but semver selection requires 1.4.4-R5419.1. No normalization exists; keep unqualified until the shared owner binds raw and normalized versions."
|
|
3255
|
+
],
|
|
3256
|
+
"health": {
|
|
3257
|
+
"version": 1,
|
|
3258
|
+
"handshake": "process-only",
|
|
3259
|
+
"outputFraming": "jsonl",
|
|
3260
|
+
"signalParser": "provider-muse-health-v1",
|
|
3261
|
+
"sessionLogLocator": null,
|
|
3262
|
+
"progressEvidence": [],
|
|
3263
|
+
"stopEvidence": "owned process identity and observed exit; terminal text alone is insufficient",
|
|
3264
|
+
"fixtureRef": "test/fixtures/providers/muse/health/manifest.json",
|
|
3265
|
+
"qualifiedAt": null,
|
|
3266
|
+
"statusOperation": null,
|
|
3267
|
+
"cancelOperation": null,
|
|
3268
|
+
"coverage": "degraded",
|
|
3269
|
+
"qualificationTarget": "semantic",
|
|
3270
|
+
"evidenceGrades": [
|
|
3271
|
+
"H",
|
|
3272
|
+
"R"
|
|
3273
|
+
],
|
|
3274
|
+
"provenance": [
|
|
3275
|
+
{
|
|
3276
|
+
"kind": "help",
|
|
3277
|
+
"ref": "tools/ralph-external/lib/muse-adapter.mjs",
|
|
3278
|
+
"observedAt": "2026-10-09T00:00:00Z",
|
|
3279
|
+
"cliVersion": "1.4.4-R5419.1"
|
|
3280
|
+
},
|
|
3281
|
+
{
|
|
3282
|
+
"kind": "repository",
|
|
3283
|
+
"ref": "tools/ralph-external/lib/muse-adapter.mjs",
|
|
3284
|
+
"observedAt": "2026-10-07T00:00:00Z",
|
|
3285
|
+
"cliVersion": null
|
|
3286
|
+
}
|
|
3287
|
+
],
|
|
3288
|
+
"qualificationOwner": "B-OG-08",
|
|
3289
|
+
"qualification": {
|
|
3290
|
+
"status": "unqualified",
|
|
3291
|
+
"scopeDigest": null,
|
|
3292
|
+
"cliVersion": null,
|
|
3293
|
+
"accountScope": null,
|
|
3294
|
+
"profileRef": null,
|
|
3295
|
+
"modelKey": null,
|
|
3296
|
+
"effort": null,
|
|
3297
|
+
"authorizedLive": false
|
|
3298
|
+
}
|
|
3299
|
+
}
|
|
3300
|
+
}
|
|
3301
|
+
}
|
|
3302
|
+
}
|
|
3303
|
+
}
|
|
3304
|
+
},
|
|
3305
|
+
"workerHealthAdapters": {
|
|
3306
|
+
"local-http": {
|
|
3307
|
+
"version": 1,
|
|
3308
|
+
"id": "local-http",
|
|
3309
|
+
"provider": "ollama",
|
|
3310
|
+
"adapterVersion": "1",
|
|
3311
|
+
"supportedVersions": "*",
|
|
3312
|
+
"runtimeDriver": "unavailable",
|
|
3313
|
+
"catalogAdapter": {
|
|
3314
|
+
"kind": "http",
|
|
3315
|
+
"locator": "/api/tags",
|
|
3316
|
+
"parser": "ollama-model-list-v1",
|
|
3317
|
+
"timeoutSeconds": 10,
|
|
3318
|
+
"maxBytes": 65536
|
|
3319
|
+
},
|
|
3320
|
+
"invocation": {
|
|
3321
|
+
"kind": "http",
|
|
3322
|
+
"protocol": "ollama",
|
|
3323
|
+
"healthPath": "/api/version",
|
|
3324
|
+
"modelsPath": "/api/tags",
|
|
3325
|
+
"generatePath": "/api/generate",
|
|
3326
|
+
"timeoutSeconds": 1800,
|
|
3327
|
+
"maxOutputBytes": 10485760
|
|
3328
|
+
},
|
|
3329
|
+
"capabilities": {
|
|
3330
|
+
"output": "validated-file",
|
|
3331
|
+
"modelPin": "unsupported",
|
|
3332
|
+
"effort": "not-applicable",
|
|
3333
|
+
"cancel": "none",
|
|
3334
|
+
"resume": false,
|
|
3335
|
+
"sandboxModes": [
|
|
3336
|
+
"external"
|
|
3337
|
+
],
|
|
3338
|
+
"nestedAgentsControllable": false,
|
|
3339
|
+
"nativeFallbackControllable": false,
|
|
3340
|
+
"hardBudget": []
|
|
3341
|
+
},
|
|
3342
|
+
"qualification": {
|
|
3343
|
+
"status": "unqualified"
|
|
3344
|
+
},
|
|
3345
|
+
"invocationProfiles": {
|
|
3346
|
+
"direct-http": {
|
|
3347
|
+
"transport": "shell",
|
|
3348
|
+
"supportedVersions": "*",
|
|
3349
|
+
"controls": {
|
|
3350
|
+
"model": {
|
|
3351
|
+
"support": "unqualified",
|
|
3352
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3353
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3354
|
+
},
|
|
3355
|
+
"effort": {
|
|
3356
|
+
"support": "unqualified",
|
|
3357
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3358
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3359
|
+
},
|
|
3360
|
+
"sandbox": {
|
|
3361
|
+
"support": "unqualified",
|
|
3362
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3363
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3364
|
+
},
|
|
3365
|
+
"approval": {
|
|
3366
|
+
"support": "unqualified",
|
|
3367
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3368
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3369
|
+
},
|
|
3370
|
+
"workdir": {
|
|
3371
|
+
"support": "unqualified",
|
|
3372
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3373
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3374
|
+
},
|
|
3375
|
+
"finalOutput": {
|
|
3376
|
+
"support": "unqualified",
|
|
3377
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3378
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3379
|
+
},
|
|
3380
|
+
"stdin": {
|
|
3381
|
+
"support": "unqualified",
|
|
3382
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3383
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3384
|
+
},
|
|
3385
|
+
"structuredOutput": {
|
|
3386
|
+
"support": "unqualified",
|
|
3387
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3388
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3389
|
+
},
|
|
3390
|
+
"stepCap": {
|
|
3391
|
+
"support": "unqualified",
|
|
3392
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3393
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3394
|
+
},
|
|
3395
|
+
"trust": {
|
|
3396
|
+
"support": "unqualified",
|
|
3397
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3398
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3399
|
+
},
|
|
3400
|
+
"children": {
|
|
3401
|
+
"support": "unqualified",
|
|
3402
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3403
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3404
|
+
},
|
|
3405
|
+
"fallback": {
|
|
3406
|
+
"support": "unqualified",
|
|
3407
|
+
"mapping": "unavailable pending installed profile qualification",
|
|
3408
|
+
"evidence": "synthetic health fixtures do not qualify invocation controls"
|
|
3409
|
+
}
|
|
3410
|
+
},
|
|
3411
|
+
"envAllowlist": [],
|
|
3412
|
+
"pitfalls": [
|
|
3413
|
+
"Documentation/help and synthetic observations are not authenticated live qualification.",
|
|
3414
|
+
"Unknown model, effort, permission or required step mappings block dispatch.",
|
|
3415
|
+
"Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority."
|
|
3416
|
+
],
|
|
3417
|
+
"health": {
|
|
3418
|
+
"version": 1,
|
|
3419
|
+
"handshake": "unobserved",
|
|
3420
|
+
"outputFraming": "http-stream",
|
|
3421
|
+
"signalParser": "provider-local-http-health-v1",
|
|
3422
|
+
"sessionLogLocator": null,
|
|
3423
|
+
"progressEvidence": [
|
|
3424
|
+
"distinct request-bound response content"
|
|
3425
|
+
],
|
|
3426
|
+
"stopEvidence": "request-bound completion; cancellation uncertain",
|
|
3427
|
+
"fixtureRef": "test/fixtures/providers/local-http/health/manifest.json",
|
|
3428
|
+
"qualifiedAt": null,
|
|
3429
|
+
"statusOperation": null,
|
|
3430
|
+
"cancelOperation": null,
|
|
3431
|
+
"coverage": "degraded",
|
|
3432
|
+
"qualificationTarget": "unobserved",
|
|
3433
|
+
"evidenceGrades": [],
|
|
3434
|
+
"provenance": [],
|
|
3435
|
+
"qualificationOwner": "B-OG-09",
|
|
3436
|
+
"qualification": {
|
|
3437
|
+
"status": "unqualified",
|
|
3438
|
+
"scopeDigest": null,
|
|
3439
|
+
"cliVersion": null,
|
|
3440
|
+
"accountScope": null,
|
|
3441
|
+
"profileRef": null,
|
|
3442
|
+
"modelKey": null,
|
|
3443
|
+
"effort": null,
|
|
3444
|
+
"authorizedLive": false
|
|
3445
|
+
}
|
|
3446
|
+
}
|
|
3447
|
+
}
|
|
3448
|
+
}
|
|
290
3449
|
}
|
|
291
3450
|
}
|
|
292
3451
|
}
|