Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/product-technical-gap-baseline.md
Original file line number Diff line number Diff line change
Expand Up @@ -2627,3 +2627,17 @@ Higgins, S. S., Crepalde, N., & Fernandes, L. (2021). Segmented multiplexity: A
**900-second clarification.** The historical `NoemaRepairDeadlineExceeded` from the html4tree incident came from the retired caller repair path. The three literal `timeout --kill-after=20 900` invocations still present in `opencode-review-dispatch.yml` are separate containment limits for untrusted test-measurement commands; they are not model or Noema inference timeouts. Telemetry and runbooks must report the command class and phase separately.

**Evidence / acceptance.** Permanent tests forbid retry/deadline/sampling symbols in the caller and prove one gateway request, one attempt annotation, control-character-safe telemetry, missing-value rejection, valid trailing-comma normalization, and exact changed-line guidance. Fresh exact-head repository checks and reviews remain the admission authority; predecessor-head evidence is not transferable. The remaining runtime work is to preserve distinct `request_too_large`, discovery, rate-limit, provider transport, malformed-output, stale-head, and sandbox-command-timeout categories in hosted logs.

## OpenCode Go is not a registered provider source — confirmed gap, deferred implementation (2026-09-02)

**Status:** Confirmed gap, not yet implemented. Recorded here per this session's throttle agreement (org-wide GitHub Actions capacity at the 60-concurrent-runner plan ceiling) — implementation deferred to a later, non-urgent iteration rather than opened as a new PR immediately.

**Question investigated.** Whether OpenCode Go shares credentials/discovery with the already-registered `opencode_zen` provider source in `contextual-orchestrator`, or needs its own.

**Evidence, independently verified from two sources:**
1. `contextual_orchestrator/model_discovery.py` on `contextual-orchestrator`'s protected `main` (fetched directly, not via code search) registers `opencode_zen` (`credential_name="OPENCODE_ZEN_API_KEY"`) as a `ProviderModelSource`. No `opencode_go`, `OPENCODE_GO`, or "OpenCode Go" string exists anywhere in the repository (verified by direct grep of the fetched source; a code-search cross-check returned the same zero count).
2. OpenCode's own documentation (`opencode.ai/docs/go`, fetched directly) states Go requires signing in to Zen, then *subscribing to Go separately* to obtain a distinct API key ("You sign in to OpenCode Zen, subscribe to Go, and copy your API key") — a paid ($10/month) subscription, not an automatic Zen entitlement. Go's endpoints are also distinct: `https://opencode.ai/zen/go/v1/{responses,chat/completions,messages}`, versus Zen's own `https://opencode.ai/zen/v1/...` paths, and OpenCode configs address Go models with a distinct `opencode-go/<model-id>` identifier.
Comment thread
github-actions[bot] marked this conversation as resolved.
Outdated

**Conclusion.** This is a genuine gap, not a naming/discovery oversight: OpenCode Go is a separate paid product requiring its own credential and its own `ProviderModelSource` registration (own `credential_name`, e.g. `OPENCODE_GO_API_KEY`, and the `/zen/go/v1/...` base URL) — it cannot be reached through the existing `opencode_zen` registration regardless of what's configured. No `.env`/secret currently exists for it either.

**Next step (deferred, not urgent).** Add a `ProviderModelSource` for `opencode_go` in `contextual_orchestrator/model_discovery.py` following the same pattern as `opencode_zen`, gated on an `OPENCODE_GO_API_KEY` secret being present (absent-by-default, matching this repo's existing fail-closed provider-registration convention). Requires a Go subscription and its API key to actually exercise in CI; until then this stays a documented, deferred gap rather than a blocking one.
Loading