Skip to content

Docs audit — 2026-08-21 (PR #2748) #94

Description

@SebConejo

Audited: mnfst/manifest PR #2748 (1 merged PR, the only one merged to main since #2743), against the docs at 01ec345.

Findings

1 · [WRONG] The suggested wording queued on issue #93 finding 11 names two protocols for OpenCode Go. Manifest now uses three.

Page: https://manifest.build/docs/providers/subscription-based-providers (the OpenCode Go tab)

What actually happens:

  1. You click Connect on the OpenCode Go card, under Providers, Subscriptions. The panel asks for your OpenCode subscription token.
  2. You send a request to an OpenCode Go model.
  3. Manifest sends it to opencode.ai/zen/go and chooses the protocol for that model on the spot.
  4. Some OpenCode Go models take a third protocol shape.
  5. You never choose the protocol.

Options:

  1. Answer issue Docs audit — providers (api keys, subscriptions, local, custom) — 2026-08-21 #93 finding 11 with its option 2: keep the host, drop the protocol claim. Recommended (a plumbing fact no reader acts on).
  2. Replace the draft in issue Docs audit — providers (api keys, subscriptions, local, custom) — 2026-08-21 #93 finding 11 with a sentence that says Manifest picks the protocol per model, without listing the protocols.
  3. Keep the draft in issue Docs audit — providers (api keys, subscriptions, local, custom) — 2026-08-21 #93 finding 11 and add the third protocol to its list.

Suggested wording (option 1):

  <Tab title="OpenCode Go">
    Paste the subscription token from your OpenCode account. Requests route to
    `opencode.ai/zen/go`.
  </Tab>

Suggested wording (option 2):

  <Tab title="OpenCode Go">
    Paste the subscription token from your OpenCode account. Requests route to
    `opencode.ai/zen/go`. Manifest picks the protocol for each model, and you
    never set it.
  </Tab>

Any list of protocols in the docs goes stale the next time the provider moves a model, and the routing decision is not driven by a model list Manifest maintains. What decides the split is banned from the docs (Seb's 2026-08-20 ruling), so option 3 also has to state the list without being able to explain it.

Evidence (for the agent)
  • Doc: providers/subscription-based-providers.mdx:90-92 — "Paste the subscription token from your OpenCode account. Requests use the Anthropic protocol against opencode.ai/zen/go, authenticated via the x-api-key header."
  • Code: packages/backend/src/routing/proxy/provider-endpoints.ts:536-559 — one user-facing provider, three routes on the same base URL (:140): opencode-go (format openai, /v1/chat/completions, Authorization: Bearer), opencode-go-anthropic (/v1/messages, x-api-key), and opencode-go-responses (/v1/responses, format chatgpt, Authorization: Bearer). The third route is new in PR #2748.
  • Code: packages/backend/src/routing/proxy/provider-client.ts:503-514 — the route is resolved per request, per model, at forward time. The responses branch reads a mapping Manifest refreshes out of band and has no hardcoded model list, unlike the hardcoded Anthropic families at :554-556.
  • Step 1: packages/frontend/src/services/providers.ts:437-449 — the OpenCode Go card, subscriptionOnly: true, placeholder "Paste your OpenCode API key". Route /providers/subscriptions at packages/frontend/src/index.tsx:88. The Connect button on the card is packages/frontend/src/pages/providers/ProviderConnectionsPage.tsx:84 (addLabel: 'Connect'), rendered at :917-924, opening the panel via openModal(provider.id). Token auth mode at packages/shared/src/subscription/configs.ts:239-251.
  • Step 5: no connect screen, model picker or routing screen carries a protocol control. The request drawer's Request Headers section shows the CALLER's headers (proxy.controller.ts:241 sanitizeRequestHeaders(req.headers) → proxy-message-recorder.ts:382), never Manifest's upstream headers. The wire shape reaches the user only through the drawer's Raw tab, which prints the recorded upstream request body (RequestMessages.tsx:510-515, recording built at attempt-recording-capture.ts:44-52), and only when request recording is on.
  • PR #2748 and its changeset .changeset/opencode-go-responses-routing.md name the models moved to the third route: Grok 4.5, GPT 5.6 Luna, Muse Spark. These names belong in this block only. They must never reach a suggested wording.
  • Relation to issue Docs audit — providers (api keys, subscriptions, local, custom) — 2026-08-21 #93 finding 11: that finding was written against 061d351f5, where the provider had two routes, and its option 1 draft reads "most models take the OpenAI format, some take the Anthropic format". PR #2748 merged at 2026-08-21T07:27:57Z, after that window. This finding does not restate finding 11. It reports that the platform moved under finding 11's premise, which is the condition under which a raised finding may be revisited.
  • This finding withdraws the harness's own earlier recommendation on issue Docs audit — providers (api keys, subscriptions, local, custom) — 2026-08-21 #93 finding 11. No revised derivation is owed: finding 11 is raised with no verdict from Seb (decisions.md:192), and the reversal protocol governs recorded decisions, not the harness's own pending suggestions.
  • Impact: a reader who opens a request's Raw tab finds the tab wrong for most models today, and the queued fix would still leave it wrong for the Responses-only ones. Nothing the reader does changes the routing.
  • Rationale for the recommendation: no user action depends on the upstream protocol, so removing the claim beats extending it, on the line Seb took three times on 2026-08-20 (decisions.md:174, :175, :176).
  • Not reproduced against a live instance: the request needs a connected OpenCode Go subscription token, which this run has no access to. Every statement above is read from code at ca21b978d.

Reply with the finding number and the chosen option
(e.g. "3 → option 2", or "3: other idea, let's discuss").
PRs are then made manually with the agent, never by the harness.
Rejected findings: reply "N → reject" and they will never be re-raised.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    docs-syncFiled by the docs-sync harnesswrongDocs say it incorrectly

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions