@yanlinglabs/winter-provider-catalog 0.0.1

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.
@@ -0,0 +1,2383 @@
1
+ {
2
+ "$comment": "HAND-AUTHORED overlay layer — the Winter-reviewed provider rows. WS-13 §7: overlay evidence is never silently overwritten by upstream extraction or live discovery, so this file is the durable half of the catalog and `generated/catalog.json` is the merge product. A re-sync NEVER writes this file (scripts/provider-source-sync.ts has no code path that opens it for writing, and a test asserts a re-run leaves it byte-identical). The eight OmniRoute-derived rows now carry the REAL pinned commit and the repository-relative paths their upstream counterparts were read from — WS-13 §13's \"per-row source paths + commit\". `azure-openai` names only a product-catalog path: at v3.8.50 it has NO backend RegistryEntry, so upstream contributes its identity and nothing executable (see generated/rejections.json, class `no-registry-entry`), and its endpoints and auth are Winter-authored here. `codex-oauth` and the twelve local ids keep `project: \"winter\"` with an EMPTY commit, which is the honest marker for a row no extraction produced. Endpoints stay Winter-authored base URLs rather than upstream's full chat paths (upstream's `baseUrl` for openai is `.../v1/chat/completions`); the extracted verbatim values live in generated/upstream-layer.json, and PROVENANCE.md records the divergence as a local override.",
3
+ "providers": [
4
+ {
5
+ "id": "aihorde",
6
+ "displayName": "AI Horde",
7
+ "protocols": [
8
+ "openai-chat-completions"
9
+ ],
10
+ "$comment": "WS-13b §8.4 / audit §5.1: a KEYLESS row. THE ANONYMOUS KEY IS NOT EMBEDDED ANYWHERE — not here, not in an adapter, not in a fixture. The catalog records only that a documented anonymous default EXISTS and cites the document that names it; supplying it (or, preferably, a registered key, which buys queue priority) is the HOST's act through the ordinary credential path, which is why `authKinds` is `api-key` rather than a keyless kind. WS-13 §6 is categorical that descriptors never contain secrets, and `scanForSecrets` fails the build on the shape regardless. The adapter must send `Client-Agent: <product>:<version>:<contact>` (all three tokens substituted at request time from the running brand profile) — the vendor's own honest-identity field — which is lane L's to assert on a recorded request; nothing in this row can enforce it. Latency is MINUTES (a shared volunteer queue), throughput depends on how many workers are online rather than on a quota, and audit §5.1 notes workers are community-shared: exclude from any sensitive-content floor.",
11
+ "authKinds": [
12
+ "api-key"
13
+ ],
14
+ "defaultEndpoints": {
15
+ "api": "https://oai.aihorde.net/v1"
16
+ },
17
+ "modelDiscovery": "openai-models",
18
+ "liveCatalogAuthority": "unknown",
19
+ "adapterId": "winter.openai-chat-completions",
20
+ "family": "openai",
21
+ "upstream": {
22
+ "project": "winter",
23
+ "commit": "",
24
+ "sourcePaths": []
25
+ },
26
+ "risk": {
27
+ "class": "review-required",
28
+ "reasons": [
29
+ "community-shared volunteer workers see prompt content: audit §5.1 says to exclude this provider from any sensitive-content floor, and nothing in the catalog can enforce that",
30
+ "no tool calling at all — the workers run raw text-completion backends, and upstream sets a provider-wide `unsupportedParams` of tools/tool_choice/parallel_tool_calls",
31
+ "latency is minutes rather than seconds and throughput is not a quota; a host that treats it like a metered API will misjudge both"
32
+ ]
33
+ },
34
+ "pricingBasis": "free",
35
+ "admission": {
36
+ "basis": "keyless-documented",
37
+ "citation": "audit:§2.2 `aihorde` / §5.1 — AI Horde's published Swagger (aihorde.net/api/swagger.json) and site (aihorde.net), retrieved 2026-09-06: security scheme is an `apikey` header (\"The API Key corresponding to a registered user\"), and the site documents connecting ANONYMOUSLY with a published default key at reduced priority. Free and crowdsourced: \"volunteers share spare computer power\". Endpoints accept an optional `Client-Agent` header — an honest client-identity field.",
38
+ "tier": "audit"
39
+ },
40
+ "scope": "llm",
41
+ "identityHeaders": {
42
+ "Client-Agent": "<product>:<version>:<contact>"
43
+ }
44
+ },
45
+ {
46
+ "id": "aion",
47
+ "displayName": "Aion Labs",
48
+ "protocols": [
49
+ "openai-chat-completions"
50
+ ],
51
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
52
+ "authKinds": [
53
+ "api-key"
54
+ ],
55
+ "defaultEndpoints": {
56
+ "api": "https://api.aionlabs.ai/v1"
57
+ },
58
+ "modelDiscovery": "openai-models",
59
+ "liveCatalogAuthority": "unknown",
60
+ "adapterId": "winter.openai-chat-completions",
61
+ "family": "openai",
62
+ "upstream": {
63
+ "project": "winter",
64
+ "commit": "",
65
+ "sourcePaths": []
66
+ },
67
+ "risk": {
68
+ "class": "review-required",
69
+ "reasons": [
70
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
71
+ ]
72
+ },
73
+ "pricingBasis": "token",
74
+ "admission": {
75
+ "basis": "api-key",
76
+ "citation": "https://www.aionlabs.ai/docs — the vendor's own documentation, retrieved 2026-09-06: the docs page's own text names the OpenAI-compatible base `https://api.aionlabs.ai/v1`.",
77
+ "tier": "fetched-document"
78
+ },
79
+ "scope": "llm"
80
+ },
81
+ {
82
+ "id": "anthropic",
83
+ "$comment": "REVIEWED (P6 fix wave, ruling F-4): `liveCatalogAuthority` re-stamped `unknown` -> `authoritative`, and `modelDiscovery` `none` -> `provider-native`. EVIDENCE CLASS, the same one the openai and google rows carry: Anthropic's live Models endpoint enumerates every model the credential can use, so an id absent from it does not exist. The adapter serves that endpoint (`adapters/anthropic/messages.ts` `listModels`, paginated over `/v1/models` by `last_id`/`after_id`), which is why `modelDiscovery: \"none\"` was wrong in the first place -- Lane B's own corpus catalog already declares this provider `provider-native`. WHAT IT CHANGES: `authoritative` is R6-F's precondition read the other way round, so the `allowUnlisted` pass-through CLOSES for this provider (registry.ts step 2 / `resolveWithin`) and an unlisted anthropic id is now a definitive `unknown-model` instead of an id passed through to the wire -- which is the whole-branch review's M-5. The `modelDiscovery` value is production-inert: the one reader (`runtime/src/provider/session-provider.ts`, `=== \"local\"`) treats every non-local value alike. NO registry code changed. `azure-openai` and `codex-oauth` deliberately stay `unknown`: an Azure deployment name is user-chosen and will never be catalogued, so `allowUnlisted` is their normal configuration and the door stays open for them. P6.5 LANE A2 (D20): `authKinds` gains `oauth-approved` -- an Anthropic Console OAuth login (PKCE, loopback) is a SECOND way to authenticate this SAME row, not a second provider: a Console token speaks the ordinary Messages dialect to the ordinary endpoint, so the adapter gained an arm rather than a sibling. `pricingBasis` stays `token` BECAUSE THAT IS WHAT THE FLOW IS -- a Console organisation is billed per token exactly as an API key is, so R6-H cost still applies; the login changes who proves the request, never how it is priced. `admission` MOVES to `oauth-documented` / `spec:WS-13b §0 D20`, which is the point of that field on a two-path row: it names the path that NEEDED the ruling, not the easiest one to justify. This row would ship on its api-key path with no ruling at all; what a reviewer must be able to find is the decision that admitted the OAuth path, exactly as `azure-openai` names `cloud-credential` rather than its key. The pricing URL that used to sit here was evidence about PRICING, which is a different question from admission and is already answered by `pricingBasis`. The flow's constants are derived from the pinned public artifact and recorded in `packages/conformance/compat/anthropic/0.3.250/derived-shapes-p6b.md`, which also records what Winter refuses from that artifact's OAuth surface: the consumer subscription authorize host (D13/D14), the two `claude_cli`-scoped endpoints, the vendor's own product beta, and the default scope union carrying its application's entitlements (D21).",
84
+ "displayName": "Anthropic",
85
+ "protocols": [
86
+ "anthropic-messages"
87
+ ],
88
+ "authKinds": [
89
+ "api-key",
90
+ "oauth-approved"
91
+ ],
92
+ "defaultEndpoints": {
93
+ "api": "https://api.anthropic.com"
94
+ },
95
+ "modelDiscovery": "provider-native",
96
+ "liveCatalogAuthority": "authoritative",
97
+ "adapterId": "winter.anthropic-messages",
98
+ "family": "anthropic",
99
+ "upstream": {
100
+ "project": "OmniRoute",
101
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
102
+ "sourcePaths": [
103
+ "open-sse/config/providers/registry/anthropic/index.ts",
104
+ "src/shared/constants/providers/apikey/index.ts"
105
+ ]
106
+ },
107
+ "risk": {
108
+ "class": "approved",
109
+ "reasons": []
110
+ },
111
+ "pricingBasis": "token",
112
+ "admission": {
113
+ "basis": "oauth-documented",
114
+ "citation": "spec:WS-13b §0 D20",
115
+ "tier": "spec-ruling"
116
+ },
117
+ "scope": "llm"
118
+ },
119
+ {
120
+ "id": "anyapi",
121
+ "displayName": "AnyAPI AI",
122
+ "protocols": [
123
+ "openai-chat-completions"
124
+ ],
125
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
126
+ "authKinds": [
127
+ "api-key"
128
+ ],
129
+ "defaultEndpoints": {
130
+ "api": "https://api.anyapi.ai/v1"
131
+ },
132
+ "modelDiscovery": "openai-models",
133
+ "liveCatalogAuthority": "unknown",
134
+ "adapterId": "winter.openai-chat-completions",
135
+ "family": "openai",
136
+ "upstream": {
137
+ "project": "winter",
138
+ "commit": "",
139
+ "sourcePaths": []
140
+ },
141
+ "risk": {
142
+ "class": "review-required",
143
+ "reasons": [
144
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
145
+ ]
146
+ },
147
+ "pricingBasis": "token",
148
+ "admission": {
149
+ "basis": "api-key",
150
+ "citation": "https://docs.anyapi.ai — the vendor's own documentation, retrieved 2026-09-06: the docs home documents `https://api.anyapi.ai/v1/chat/completions` with `Authorization: Bearer $ANYAPI_KEY`.",
151
+ "tier": "fetched-document"
152
+ },
153
+ "scope": "llm"
154
+ },
155
+ {
156
+ "id": "arcee-ai",
157
+ "displayName": "Arcee AI",
158
+ "protocols": [
159
+ "openai-chat-completions"
160
+ ],
161
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
162
+ "authKinds": [
163
+ "api-key"
164
+ ],
165
+ "defaultEndpoints": {
166
+ "api": "https://api.arcee.ai/api/v1"
167
+ },
168
+ "modelDiscovery": "openai-models",
169
+ "liveCatalogAuthority": "unknown",
170
+ "adapterId": "winter.openai-chat-completions",
171
+ "family": "openai",
172
+ "upstream": {
173
+ "project": "winter",
174
+ "commit": "",
175
+ "sourcePaths": []
176
+ },
177
+ "risk": {
178
+ "class": "review-required",
179
+ "reasons": [
180
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it",
181
+ "NO backend RegistryEntry exists at the pin — the vendor's document is the ONLY source for this row, with no pinned-tree value to cross-check it against"
182
+ ]
183
+ },
184
+ "pricingBasis": "token",
185
+ "admission": {
186
+ "basis": "api-key",
187
+ "citation": "https://docs.arcee.ai/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.arcee.ai/api/v1` with `Authorization: Bearer api-key`.",
188
+ "tier": "fetched-document"
189
+ },
190
+ "scope": "llm"
191
+ },
192
+ {
193
+ "id": "azure-ai",
194
+ "displayName": "Azure AI Foundry",
195
+ "protocols": [
196
+ "openai-chat-completions"
197
+ ],
198
+ "$comment": "P7a (WS-13b §2/§10, user ruling 2026-09-06): THE FIRST PER-TENANT ROW. P6.5 refused this id under the ledger class `endpoint-not-derivable` for one reason only — its base URL is the OPERATOR'S OWN Foundry resource (`https://<resource>.services.ai.azure.com/openai/v1`, or the `<resource>.openai.azure.com` spelling), and `defaultEndpoints.api` is immutable generated data (R6-11), so a template is not an endpoint. The user's ruling replaced the deferred adapter shape with a USER-ENTERED ENDPOINT FIELD, which is what `requiresUserEndpoint` is: the row ships NO endpoint, the host supplies one through `connection.baseUrl`, and the runtime refuses with a typed `endpoint-required` naming `endpointTemplate` when it is absent. THE TEMPLATE IS NEVER SENT and is never parsed as a URL — it is documentation, and the only thing the refusal has to show a user. The host's endpoint is evaluated as a USER endpoint (`endpointOrigin: \"user\"`), so no privileged header ever rides it (WS-13 §5 / R6-L). NO MODEL ROWS are authored: a per-tenant surface serves whatever deployments the operator created, which no document this repository has read enumerates — a host reaches them with `allowUnlisted` (the row is `liveCatalogAuthority: \"unknown\"`, so the door is open), and inventing seed rows here would be a claim about somebody else's tenant. `modelDiscovery` is `\"none\"` for the same reason `azure-openai`'s is: whether the Foundry v1 surface answers `/models` is not something this repository has confirmed, and a wrong `openai-models` would send a discovery request the operator never asked for.",
199
+ "authKinds": [
200
+ "api-key"
201
+ ],
202
+ "defaultEndpoints": {},
203
+ "requiresUserEndpoint": true,
204
+ "endpointTemplate": "https://<resource>.services.ai.azure.com/openai/v1",
205
+ "modelDiscovery": "none",
206
+ "liveCatalogAuthority": "unknown",
207
+ "adapterId": "winter.openai-chat-completions",
208
+ "family": "openai",
209
+ "upstream": {
210
+ "project": "winter",
211
+ "commit": "",
212
+ "sourcePaths": []
213
+ },
214
+ "risk": {
215
+ "class": "review-required",
216
+ "reasons": [
217
+ "admission is a SPEC RULING, not a fetched document: the vendor page named in the citation has not been read for content by this repository, so the endpoint template and the api-key path are carried from this id's own P6.5 ledger entry rather than re-confirmed. Promotion needs the fetched page AND a live-gate pass",
218
+ "the endpoint is the OPERATOR'S OWN and is never reviewed by Winter — it is evaluated as a user endpoint, so no privileged header rides it and no descriptor vouches for where it points",
219
+ "no model row and no live gate case: nothing here has been driven against a real tenant, and the OpenAI-compatible dialect at this base is the vendor's documented claim rather than an observed one"
220
+ ]
221
+ },
222
+ "pricingBasis": "token",
223
+ "admission": {
224
+ "basis": "api-key",
225
+ "citation": "spec:WS-13b §10 — user ruling, 2026-09-06: \"`azure-ai` and `oci` are per-tenant endpoints → Winter exposes a USER-ENTERED ENDPOINT FIELD for them (a settings/credential-time value, the row stays on the shared adapter)\". The credential is the operator's own key against their own Azure AI Foundry resource, a user-minted key against a public documented API, which triggers none of WS-13b §1's exclusions. Vendor documentation: https://learn.microsoft.com/azure/ai-foundry. EVIDENCE TIER: spec-ruling — the ruling admits the PATH; the endpoint template is transcribed verbatim from this id's own P6.5 allowlist ledger entry (2026-09-06), and THIS repository has not fetched the vendor page for content. Upgrading to `fetched-document` is a reviewed commit that reads the page.",
226
+ "tier": "spec-ruling"
227
+ },
228
+ "scope": "llm"
229
+ },
230
+ {
231
+ "id": "azure-openai",
232
+ "displayName": "Azure OpenAI",
233
+ "protocols": [
234
+ "azure-openai",
235
+ "openai-responses"
236
+ ],
237
+ "authKinds": [
238
+ "api-key",
239
+ "cloud-credential-chain"
240
+ ],
241
+ "defaultEndpoints": {},
242
+ "modelDiscovery": "none",
243
+ "liveCatalogAuthority": "unknown",
244
+ "adapterId": "winter.azure-openai",
245
+ "family": "openai",
246
+ "upstream": {
247
+ "project": "OmniRoute",
248
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
249
+ "sourcePaths": [
250
+ "src/shared/constants/providers/apikey/index.ts"
251
+ ]
252
+ },
253
+ "risk": {
254
+ "class": "review-required",
255
+ "reasons": [
256
+ "native cloud (R6-16): deployment-path/api-version identity and Entra-vs-key auth each need their own request-serialization proof before promotion"
257
+ ]
258
+ },
259
+ "pricingBasis": "token",
260
+ "admission": {
261
+ "basis": "cloud-credential",
262
+ "citation": "https://azure.microsoft.com/products/ai-services/openai-service — the vendor's own product page as OmniRoute's product catalog records it at 5458026. The credential is the OPERATOR'S OWN Azure subscription key against their own resource endpoint, which is why the basis is cloud-credential rather than api-key. EVIDENCE TIER: pinned-upstream — see PROVENANCE.md \"Two tiers of admission citation\".",
263
+ "tier": "pinned-upstream"
264
+ },
265
+ "scope": "llm"
266
+ },
267
+ {
268
+ "id": "bedrock",
269
+ "displayName": "AWS Bedrock",
270
+ "protocols": [
271
+ "bedrock-converse"
272
+ ],
273
+ "authKinds": [
274
+ "cloud-credential-chain"
275
+ ],
276
+ "defaultEndpoints": {},
277
+ "modelDiscovery": "provider-native",
278
+ "liveCatalogAuthority": "partial",
279
+ "adapterId": "winter.bedrock-converse",
280
+ "family": "bedrock",
281
+ "upstream": {
282
+ "project": "OmniRoute",
283
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
284
+ "sourcePaths": [
285
+ "open-sse/config/providers/registry/bedrock/index.ts",
286
+ "src/shared/constants/providers/apikey/index.ts"
287
+ ]
288
+ },
289
+ "risk": {
290
+ "class": "review-required",
291
+ "reasons": [
292
+ "native cloud (R6-16): hand-rolled SigV4 and AWS event-stream decoding need their own signing/streaming proof; credentials are env + shared-credentials-file only this phase (no IMDS/STS)"
293
+ ]
294
+ },
295
+ "pricingBasis": "token",
296
+ "admission": {
297
+ "basis": "cloud-credential",
298
+ "citation": "https://aws.amazon.com/bedrock — the vendor's own product page as OmniRoute's product catalog records it at 5458026. The credential is the OPERATOR'S OWN AWS account, signed with SigV4, which is why the basis is cloud-credential rather than api-key. EVIDENCE TIER: pinned-upstream — see PROVENANCE.md \"Two tiers of admission citation\".",
299
+ "tier": "pinned-upstream"
300
+ },
301
+ "scope": "llm"
302
+ },
303
+ {
304
+ "id": "cline",
305
+ "displayName": "Cline",
306
+ "protocols": [
307
+ "openai-chat-completions"
308
+ ],
309
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). audit §5.2 (docs/research/Provider-third-party-access-audit.md, all citations retrieved 2026-09-06): the vendor's OAuth half is a first-party product sign-in with no third-party client registration documented, so it is DROPPED; the documented third-party route is the API key the user mints in their own account, and that is what this row carries. The upstream id sits in a category whose disposition is `blocked`, so the reviewed overlay is the only door (WS-13 §3 step 7 refuses the class transition outright).",
310
+ "authKinds": [
311
+ "api-key"
312
+ ],
313
+ "defaultEndpoints": {
314
+ "api": "https://api.cline.bot/api/v1"
315
+ },
316
+ "modelDiscovery": "openai-models",
317
+ "liveCatalogAuthority": "unknown",
318
+ "adapterId": "winter.openai-chat-completions",
319
+ "family": "openai",
320
+ "upstream": {
321
+ "project": "winter",
322
+ "commit": "",
323
+ "sourcePaths": []
324
+ },
325
+ "risk": {
326
+ "class": "review-required",
327
+ "reasons": [
328
+ "audit OQ-7: Cline's ToS forbids using the Service \"in competition with us, to develop competing products or services\", and whether that clause reaches a general-purpose agent host consuming the documented public API is unresolved — a vendor clarification, not a document search, settles it",
329
+ "no live gate case has run"
330
+ ]
331
+ },
332
+ "pricingBasis": "token",
333
+ "admission": {
334
+ "basis": "api-key",
335
+ "citation": "audit:§2.1 `cline` / §5.2 — Cline's public API reference (docs.cline.bot/api/overview, retrieved 2026-09-06): OpenAI-compatible Chat Completions at `https://api.cline.bot/api/v1/chat/completions`, `Authorization: Bearer YOUR_API_KEY`, keys from Settings -> API Keys in app.cline.bot; Cline-provider billing is pay-as-you-go credits.",
336
+ "tier": "audit"
337
+ },
338
+ "scope": "llm"
339
+ },
340
+ {
341
+ "id": "clinepass",
342
+ "displayName": "ClinePass",
343
+ "protocols": [
344
+ "openai-chat-completions"
345
+ ],
346
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). audit §5.2 (docs/research/Provider-third-party-access-audit.md, all citations retrieved 2026-09-06): the vendor's OAuth half is a first-party product sign-in with no third-party client registration documented, so it is DROPPED; the documented third-party route is the API key the user mints in their own account, and that is what this row carries. The upstream id sits in a category whose disposition is `blocked`, so the reviewed overlay is the only door (WS-13 §3 step 7 refuses the class transition outright). SUBSCRIPTION-priced (WS-13b §1, audit §5.6(3)): it shares an endpoint and a key with the token-priced `cline` row but not a billing model, so it is a SEPARATE row — one `pricingBasis` per row is the whole mechanism by which `priceUsage` stays silent here and speaks for `cline`.",
347
+ "authKinds": [
348
+ "api-key"
349
+ ],
350
+ "defaultEndpoints": {
351
+ "api": "https://api.cline.bot/api/v1"
352
+ },
353
+ "modelDiscovery": "openai-models",
354
+ "liveCatalogAuthority": "unknown",
355
+ "adapterId": "winter.openai-chat-completions",
356
+ "family": "openai",
357
+ "upstream": {
358
+ "project": "winter",
359
+ "commit": "",
360
+ "sourcePaths": []
361
+ },
362
+ "risk": {
363
+ "class": "review-required",
364
+ "reasons": [
365
+ "audit OQ-7: the same Cline competing-products clause applies",
366
+ "subscription-priced: throughput is a plan entitlement Winter does not model, and no live gate case has run"
367
+ ]
368
+ },
369
+ "pricingBasis": "subscription",
370
+ "admission": {
371
+ "basis": "api-key",
372
+ "citation": "audit:§2.1 `clinepass` / §5.2 — ClinePass docs (docs.cline.bot/getting-started/clinepass, retrieved 2026-09-06), which permit third-party use in terms: \"You can use ClinePass models from your own scripts, apps, or automation\". Same base and same API keys as `cline`; \"ClinePass is a flat monthly subscription\" ($9.99/mo), NOT token-priced.",
373
+ "tier": "audit"
374
+ },
375
+ "scope": "llm"
376
+ },
377
+ {
378
+ "id": "codex-oauth",
379
+ "displayName": "Codex (OAuth)",
380
+ "protocols": [
381
+ "openai-responses"
382
+ ],
383
+ "authKinds": [
384
+ "oauth-approved"
385
+ ],
386
+ "defaultEndpoints": {
387
+ "api": "https://chatgpt.com/backend-api/codex"
388
+ },
389
+ "modelDiscovery": "none",
390
+ "liveCatalogAuthority": "unknown",
391
+ "adapterId": "winter.codex-oauth",
392
+ "family": "openai",
393
+ "upstream": {
394
+ "project": "winter",
395
+ "commit": "",
396
+ "sourcePaths": []
397
+ },
398
+ "risk": {
399
+ "class": "approved",
400
+ "reasons": [
401
+ "carried over per D11 with `originator: \"winter\"` — deliberately non-first-party (WS-01 §3); that identification must never be reverted to a first-party value"
402
+ ]
403
+ },
404
+ "pricingBasis": "subscription",
405
+ "admission": {
406
+ "basis": "oauth-documented",
407
+ "citation": "audit:§1 — the third-party-access audit's codex reference model: a vendor's public product OAuth client used with an HONEST originator (`originator: \"winter\"`, D11 / WS-01 §3), which is the shape D21 admits.",
408
+ "tier": "audit"
409
+ },
410
+ "scope": "llm"
411
+ },
412
+ {
413
+ "id": "deepseek",
414
+ "displayName": "DeepSeek",
415
+ "protocols": [
416
+ "openai-chat-completions",
417
+ "openai-responses"
418
+ ],
419
+ "$comment": "`openai-responses` was ADDED by Lane X, and it is a correction rather than an expansion. Upstream's deepseek entry at v3.8.50 is `format: \"openai-responses\"` with `baseUrl: \"https://api.deepseek.com/responses\"`, so every extracted deepseek model row lands `endpoints: [\"responses\"]`; beneath a provider declaring only Chat Completions, those rows were a responses-only model pointed at a Chat Completions adapter — a contradiction the frozen validator cannot see, because it checks one row at a time while the merge is row-level. `scripts/provider-source-sync.ts --offline` now fails on exactly that shape. `adapterId` deliberately stays `winter.openai-chat-completions`: WS-13 §8.2 warns that DeepSeek's Responses-compatible endpoint accepts `reasoning.summary` without generating one and supports neither `include` nor `previous_response_id`, so \"OpenAI-compatible\" is not the capability test and which surface Lane A drives is its proof to make, not this file's. Listing more protocols than the assigned adapter speaks is the existing shape here (`openai` and `openrouter` both do).",
420
+ "authKinds": [
421
+ "api-key"
422
+ ],
423
+ "defaultEndpoints": {
424
+ "api": "https://api.deepseek.com"
425
+ },
426
+ "modelDiscovery": "openai-models",
427
+ "liveCatalogAuthority": "partial",
428
+ "adapterId": "winter.openai-chat-completions",
429
+ "family": "openai",
430
+ "upstream": {
431
+ "project": "OmniRoute",
432
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
433
+ "sourcePaths": [
434
+ "open-sse/config/providers/registry/deepseek/index.ts",
435
+ "src/shared/constants/providers/apikey/index.ts"
436
+ ]
437
+ },
438
+ "risk": {
439
+ "class": "review-required",
440
+ "reasons": [
441
+ "reasoning continuity is tool-loop fragile: WS-13 §8.2 records a hard 400 when reasoning state is missing mid-tool-loop, so the tool-loop corpus must pass before promotion"
442
+ ]
443
+ },
444
+ "pricingBasis": "token",
445
+ "admission": {
446
+ "basis": "api-key",
447
+ "citation": "https://platform.deepseek.com — the vendor's own developer platform as OmniRoute's product catalog records it at 5458026; the api-key path is attested by the pinned RegistryEntry: authType \"apikey\", OpenAI Responses at https://api.deepseek.com. EVIDENCE TIER: pinned-upstream — see PROVENANCE.md \"Two tiers of admission citation\". The audit covers the OAuth/keyless ids and carries no citation for this one.",
448
+ "tier": "pinned-upstream"
449
+ },
450
+ "scope": "llm"
451
+ },
452
+ {
453
+ "id": "deepseek-anthropic",
454
+ "displayName": "DeepSeek (Anthropic dialect)",
455
+ "protocols": [
456
+ "anthropic-messages"
457
+ ],
458
+ "$comment": "R6b-5 (WS-13b §2): a DIALECT SIBLING. The vendor documents two wire dialects at two different base URLs, and a provider row carries exactly one `adapterId`, so two dialects are two rows — each with its own `defaultEndpoints.api`, its own model keys, and the dialect in its `displayName`. `winter.anthropic-messages` is multi-provider in fact, measured rather than assumed: `runtime/src/provider/catalog-endpoint-shape.test.ts` drives two sibling rows against a loopback fake and each reaches ITS OWN `<root>/v1/messages`. A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). The Anthropic half of DeepSeek; the OpenAI half is the extracted `deepseek` row. The model rows are duplicated from that row's upstream facts with their own `deepseek-anthropic/*` keys, per R6b-5.",
459
+ "authKinds": [
460
+ "api-key"
461
+ ],
462
+ "defaultEndpoints": {
463
+ "api": "https://api.deepseek.com/anthropic"
464
+ },
465
+ "modelDiscovery": "openai-models",
466
+ "liveCatalogAuthority": "unknown",
467
+ "adapterId": "winter.anthropic-messages",
468
+ "family": "anthropic",
469
+ "upstream": {
470
+ "project": "winter",
471
+ "commit": "",
472
+ "sourcePaths": []
473
+ },
474
+ "risk": {
475
+ "class": "review-required",
476
+ "reasons": [
477
+ "reasoning continuity is tool-loop fragile: WS-13 §8.2 records a hard 400 when reasoning state is missing mid-tool-loop, and the Anthropic dialect's own continuity contract for this vendor is unproven — the tool-loop corpus must pass before promotion",
478
+ "admission is fetched-document but the DIALECT'S behaviour is untested: no live gate case has run against this endpoint"
479
+ ]
480
+ },
481
+ "pricingBasis": "token",
482
+ "admission": {
483
+ "basis": "api-key",
484
+ "citation": "https://api-docs.deepseek.com/guides/anthropic_api — DeepSeek's own guide, retrieved 2026-09-06: \"our API has added support for the Anthropic API format, with the base_url being https://api.deepseek.com/anthropic\", and `export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic`. Same user-minted API key as the `deepseek` row.",
485
+ "tier": "fetched-document"
486
+ },
487
+ "scope": "llm"
488
+ },
489
+ {
490
+ "id": "digitalocean",
491
+ "displayName": "DigitalOcean Gradient (Serverless Inference)",
492
+ "protocols": [
493
+ "openai-chat-completions"
494
+ ],
495
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
496
+ "authKinds": [
497
+ "api-key"
498
+ ],
499
+ "defaultEndpoints": {
500
+ "api": "https://inference.do-ai.run/v1"
501
+ },
502
+ "modelDiscovery": "openai-models",
503
+ "liveCatalogAuthority": "unknown",
504
+ "adapterId": "winter.openai-chat-completions",
505
+ "family": "openai",
506
+ "upstream": {
507
+ "project": "winter",
508
+ "commit": "",
509
+ "sourcePaths": []
510
+ },
511
+ "risk": {
512
+ "class": "review-required",
513
+ "reasons": [
514
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
515
+ ]
516
+ },
517
+ "pricingBasis": "token",
518
+ "admission": {
519
+ "basis": "api-key",
520
+ "citation": "https://docs.digitalocean.com/products/gradient-ai-platform/reference/api/serverless-inference/ — the vendor's own documentation, retrieved 2026-09-06: DigitalOcean documents Serverless Inference on its own base `https://inference.do-ai.run`, independent of the control-plane API, with chat at `https://inference.do-ai.run/v1/chat/completions` and an inference key as a Bearer token.",
521
+ "tier": "fetched-document"
522
+ },
523
+ "scope": "llm"
524
+ },
525
+ {
526
+ "id": "docker-model-runner",
527
+ "displayName": "Docker Model Runner (local)",
528
+ "$comment": "All twelve local rows now name `winter.local-openai` — the DEFAULT id Lane A's `createLocalOpenAIAdapter` exports — where they previously named `winter.openai-chat-completions`. That was not merely a mismatch: a registry resolves an adapter BY ID, so registering the local adapter under the chat-completions id (which is what Lane A's wiring line had to do to match this file) SHADOWED the real Chat Completions adapter for openai, openrouter and deepseek. Lane A can now drop the `id:` override from `createLocalOpenAIAdapter({ descriptors })`.",
529
+ "protocols": [
530
+ "openai-chat-completions"
531
+ ],
532
+ "authKinds": [
533
+ "local-none"
534
+ ],
535
+ "defaultEndpoints": {
536
+ "api": "http://127.0.0.1:12434/engines/v1"
537
+ },
538
+ "modelDiscovery": "local",
539
+ "liveCatalogAuthority": "unknown",
540
+ "adapterId": "winter.local-openai",
541
+ "family": "local-openai",
542
+ "upstream": {
543
+ "project": "winter",
544
+ "commit": "",
545
+ "sourcePaths": []
546
+ },
547
+ "risk": {
548
+ "class": "approved",
549
+ "reasons": []
550
+ },
551
+ "pricingBasis": "free",
552
+ "admission": {
553
+ "basis": "local",
554
+ "citation": "local",
555
+ "tier": "local"
556
+ },
557
+ "scope": "llm"
558
+ },
559
+ {
560
+ "id": "dxnt",
561
+ "displayName": "DXNT",
562
+ "protocols": [
563
+ "openai-chat-completions"
564
+ ],
565
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
566
+ "authKinds": [
567
+ "api-key"
568
+ ],
569
+ "defaultEndpoints": {
570
+ "api": "https://www.dxnt.com/v1"
571
+ },
572
+ "modelDiscovery": "openai-models",
573
+ "liveCatalogAuthority": "unknown",
574
+ "adapterId": "winter.openai-chat-completions",
575
+ "family": "openai",
576
+ "upstream": {
577
+ "project": "winter",
578
+ "commit": "",
579
+ "sourcePaths": []
580
+ },
581
+ "risk": {
582
+ "class": "review-required",
583
+ "reasons": [
584
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
585
+ ]
586
+ },
587
+ "pricingBasis": "token",
588
+ "admission": {
589
+ "basis": "api-key",
590
+ "citation": "https://www.dxnt.com/docs — the vendor's own documentation, retrieved 2026-09-06: the vendor's own API documentation names the OpenAI-compatible base `https://www.dxnt.com/v1`.",
591
+ "tier": "fetched-document"
592
+ },
593
+ "scope": "llm"
594
+ },
595
+ {
596
+ "id": "electronhub",
597
+ "displayName": "ElectronHub",
598
+ "protocols": [
599
+ "openai-chat-completions"
600
+ ],
601
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
602
+ "authKinds": [
603
+ "api-key"
604
+ ],
605
+ "defaultEndpoints": {
606
+ "api": "https://api.electronhub.ai/v1"
607
+ },
608
+ "modelDiscovery": "openai-models",
609
+ "liveCatalogAuthority": "unknown",
610
+ "adapterId": "winter.openai-chat-completions",
611
+ "family": "openai",
612
+ "upstream": {
613
+ "project": "winter",
614
+ "commit": "",
615
+ "sourcePaths": []
616
+ },
617
+ "risk": {
618
+ "class": "review-required",
619
+ "reasons": [
620
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
621
+ ]
622
+ },
623
+ "pricingBasis": "token",
624
+ "admission": {
625
+ "basis": "api-key",
626
+ "citation": "https://docs.electronhub.ai/api-reference/chat/completions — the vendor's own documentation, retrieved 2026-09-06: the chat-completions reference documents base `https://api.electronhub.ai/v1` with `Authorization: Bearer YOUR_API_KEY` (keys prefixed `ek-`).",
627
+ "tier": "fetched-document"
628
+ },
629
+ "scope": "llm"
630
+ },
631
+ {
632
+ "id": "fastrouter",
633
+ "displayName": "FastRouter",
634
+ "protocols": [
635
+ "openai-chat-completions"
636
+ ],
637
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
638
+ "authKinds": [
639
+ "api-key"
640
+ ],
641
+ "defaultEndpoints": {
642
+ "api": "https://api.fastrouter.ai/api/v1"
643
+ },
644
+ "modelDiscovery": "openai-models",
645
+ "liveCatalogAuthority": "unknown",
646
+ "adapterId": "winter.openai-chat-completions",
647
+ "family": "openai",
648
+ "upstream": {
649
+ "project": "winter",
650
+ "commit": "",
651
+ "sourcePaths": []
652
+ },
653
+ "risk": {
654
+ "class": "review-required",
655
+ "reasons": [
656
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
657
+ ]
658
+ },
659
+ "pricingBasis": "token",
660
+ "admission": {
661
+ "basis": "api-key",
662
+ "citation": "https://docs.fastrouter.ai/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.fastrouter.ai/api/v1` as a drop-in OpenAI SDK replacement.",
663
+ "tier": "fetched-document"
664
+ },
665
+ "scope": "llm"
666
+ },
667
+ {
668
+ "id": "freeinference",
669
+ "displayName": "FreeInference",
670
+ "protocols": [
671
+ "openai-chat-completions"
672
+ ],
673
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
674
+ "authKinds": [
675
+ "api-key"
676
+ ],
677
+ "defaultEndpoints": {
678
+ "api": "https://freeinference.org/v1"
679
+ },
680
+ "modelDiscovery": "openai-models",
681
+ "liveCatalogAuthority": "unknown",
682
+ "adapterId": "winter.openai-chat-completions",
683
+ "family": "openai",
684
+ "upstream": {
685
+ "project": "winter",
686
+ "commit": "",
687
+ "sourcePaths": []
688
+ },
689
+ "risk": {
690
+ "class": "review-required",
691
+ "reasons": [
692
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it",
693
+ "the vendor's terms permit prompt/response LOGGING and publication of anonymized research data — a host must surface that before any session touches this provider (upstream's own `apiHint` says the same)"
694
+ ]
695
+ },
696
+ "pricingBasis": "token",
697
+ "admission": {
698
+ "basis": "api-key",
699
+ "citation": "https://freeinference.org — the vendor's own documentation, retrieved 2026-09-06: the site's own documentation names `https://freeinference.org/v1/chat/completions`.",
700
+ "tier": "fetched-document"
701
+ },
702
+ "scope": "llm"
703
+ },
704
+ {
705
+ "id": "google",
706
+ "displayName": "Google Gemini API",
707
+ "protocols": [
708
+ "google-generate-content"
709
+ ],
710
+ "authKinds": [
711
+ "api-key"
712
+ ],
713
+ "defaultEndpoints": {
714
+ "api": "https://generativelanguage.googleapis.com"
715
+ },
716
+ "modelDiscovery": "provider-native",
717
+ "liveCatalogAuthority": "authoritative",
718
+ "adapterId": "winter.google-generate-content",
719
+ "family": "google",
720
+ "upstream": {
721
+ "project": "OmniRoute",
722
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
723
+ "sourcePaths": [
724
+ "open-sse/config/providers/registry/gemini/index.ts",
725
+ "src/shared/constants/providers/apikey/index.ts"
726
+ ]
727
+ },
728
+ "risk": {
729
+ "class": "approved",
730
+ "reasons": []
731
+ },
732
+ "pricingBasis": "token",
733
+ "admission": {
734
+ "basis": "api-key",
735
+ "citation": "https://ai.google.dev/gemini-api/docs/pricing",
736
+ "tier": "fetched-document"
737
+ },
738
+ "scope": "llm"
739
+ },
740
+ {
741
+ "id": "helyxai",
742
+ "displayName": "Helyx AI",
743
+ "protocols": [
744
+ "openai-chat-completions"
745
+ ],
746
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
747
+ "authKinds": [
748
+ "api-key"
749
+ ],
750
+ "defaultEndpoints": {
751
+ "api": "https://helyxai.space/v1"
752
+ },
753
+ "modelDiscovery": "openai-models",
754
+ "liveCatalogAuthority": "unknown",
755
+ "adapterId": "winter.openai-chat-completions",
756
+ "family": "openai",
757
+ "upstream": {
758
+ "project": "winter",
759
+ "commit": "",
760
+ "sourcePaths": []
761
+ },
762
+ "risk": {
763
+ "class": "review-required",
764
+ "reasons": [
765
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
766
+ ]
767
+ },
768
+ "pricingBasis": "token",
769
+ "admission": {
770
+ "basis": "api-key",
771
+ "citation": "https://helyxai.space — the vendor's own documentation, retrieved 2026-09-06: the vendor's own site documents `https://helyxai.space/v1/chat/completions`.",
772
+ "tier": "fetched-document"
773
+ },
774
+ "scope": "llm"
775
+ },
776
+ {
777
+ "id": "kilocode",
778
+ "displayName": "Kilo Code (AI Gateway)",
779
+ "protocols": [
780
+ "openai-chat-completions"
781
+ ],
782
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). audit §5.2 (docs/research/Provider-third-party-access-audit.md, all citations retrieved 2026-09-06): the vendor's OAuth half is a first-party product sign-in with no third-party client registration documented, so it is DROPPED; the documented third-party route is the API key the user mints in their own account, and that is what this row carries. The upstream id sits in a category whose disposition is `blocked`, so the reviewed overlay is the only door (WS-13 §3 step 7 refuses the class transition outright). The base is the VENDOR'S documented gateway root, which differs from upstream's `https://api.kilo.ai/api/openrouter/...` path — the fetched document wins over the pinned tree where they disagree, and the disagreement is recorded here rather than resolved silently.",
783
+ "authKinds": [
784
+ "api-key"
785
+ ],
786
+ "defaultEndpoints": {
787
+ "api": "https://api.kilo.ai/api/gateway"
788
+ },
789
+ "modelDiscovery": "openai-models",
790
+ "liveCatalogAuthority": "unknown",
791
+ "adapterId": "winter.openai-chat-completions",
792
+ "family": "openai",
793
+ "upstream": {
794
+ "project": "winter",
795
+ "commit": "",
796
+ "sourcePaths": []
797
+ },
798
+ "risk": {
799
+ "class": "review-required",
800
+ "reasons": [
801
+ "the fetched vendor base URL DISAGREES with the pinned upstream entry (`/api/gateway` vs `/api/openrouter`); the document is the stronger evidence but the live gate is what settles it",
802
+ "vendor ToS forbids sending HIPAA/PCI-DSS/GLBA-regulated data, which is a deployment constraint a host must surface (audit §2.1)"
803
+ ]
804
+ },
805
+ "pricingBasis": "token",
806
+ "admission": {
807
+ "basis": "api-key",
808
+ "citation": "audit:§2.1 `kilocode` / §5.2 — Kilo Gateway authentication docs (kilo.ai/docs/gateway/authentication, retrieved 2026-09-06): OpenAI-compatible API at base `https://api.kilo.ai/api/gateway`, \"Bearer token passed in the Authorization header\", organization tokens via `X-KiloCode-OrganizationId`, per-token pricing with free credits.",
809
+ "tier": "audit"
810
+ },
811
+ "scope": "llm"
812
+ },
813
+ {
814
+ "id": "kimi-coding",
815
+ "displayName": "Kimi Code (Anthropic dialect)",
816
+ "protocols": [
817
+ "anthropic-messages"
818
+ ],
819
+ "$comment": "R6b-5 (WS-13b §2): a DIALECT SIBLING. The vendor documents two wire dialects at two different base URLs, and a provider row carries exactly one `adapterId`, so two dialects are two rows — each with its own `defaultEndpoints.api`, its own model keys, and the dialect in its `displayName`. `winter.anthropic-messages` is multi-provider in fact, measured rather than assumed: `runtime/src/provider/catalog-endpoint-shape.test.ts` drives two sibling rows against a loopback fake and each reaches ITS OWN `<root>/v1/messages`. A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). SUBSCRIPTION-priced (WS-13b §1): `priceUsage` returns nothing for this row, so a Kimi Code session never reports `total_cost_usd` — a membership seat has no per-token price and reporting one would be a fabricated number. The OAuth half of this id is DROPPED per audit §5.2 (no third-party OAuth is documented); the key row is what ships. Endpoint is the ROOT: the adapter appends `/v1/messages`, reproducing the documented `https://api.kimi.com/coding/v1/messages`.",
820
+ "authKinds": [
821
+ "api-key"
822
+ ],
823
+ "defaultEndpoints": {
824
+ "api": "https://api.kimi.com/coding"
825
+ },
826
+ "modelDiscovery": "openai-models",
827
+ "liveCatalogAuthority": "unknown",
828
+ "adapterId": "winter.anthropic-messages",
829
+ "family": "anthropic",
830
+ "upstream": {
831
+ "project": "winter",
832
+ "commit": "",
833
+ "sourcePaths": []
834
+ },
835
+ "risk": {
836
+ "class": "review-required",
837
+ "reasons": [
838
+ "subscription-priced with vendor rate limiting: throughput is a seat entitlement, not a quota Winter can model, and no live gate case has run",
839
+ "the audit found no clause restricting the coding-plan key to Moonshot's own clients and the docs name third-party clients affirmatively, but no terms page was read for this plan (audit §2.1)"
840
+ ]
841
+ },
842
+ "pricingBasis": "subscription",
843
+ "admission": {
844
+ "basis": "api-key",
845
+ "citation": "https://www.kimi.com/code/docs/en/ — Kimi Code's own docs, retrieved 2026-09-06: Anthropic-compatible base `https://api.kimi.com/coding/`, OpenAI-compatible `https://api.kimi.com/coding/v1`; \"Kimi members can create and manage API Keys in the Kimi Code Console\"; billing is a membership subscription (monthly/annual) with rate limiting, expressly contrasted with the platform's pay-as-you-go; the docs NAME Claude Code, OpenCode and Codex as clients. Audit §4/§5.2.",
846
+ "tier": "fetched-document"
847
+ },
848
+ "scope": "llm"
849
+ },
850
+ {
851
+ "id": "lemonade",
852
+ "displayName": "Lemonade Server (local)",
853
+ "protocols": [
854
+ "openai-chat-completions"
855
+ ],
856
+ "authKinds": [
857
+ "local-none"
858
+ ],
859
+ "defaultEndpoints": {
860
+ "api": "http://127.0.0.1:8000/api/v1"
861
+ },
862
+ "modelDiscovery": "local",
863
+ "liveCatalogAuthority": "unknown",
864
+ "adapterId": "winter.local-openai",
865
+ "family": "local-openai",
866
+ "upstream": {
867
+ "project": "winter",
868
+ "commit": "",
869
+ "sourcePaths": []
870
+ },
871
+ "risk": {
872
+ "class": "approved",
873
+ "reasons": []
874
+ },
875
+ "pricingBasis": "free",
876
+ "admission": {
877
+ "basis": "local",
878
+ "citation": "local",
879
+ "tier": "local"
880
+ },
881
+ "scope": "llm"
882
+ },
883
+ {
884
+ "id": "literouter",
885
+ "displayName": "LiteRouter",
886
+ "protocols": [
887
+ "openai-chat-completions"
888
+ ],
889
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
890
+ "authKinds": [
891
+ "api-key"
892
+ ],
893
+ "defaultEndpoints": {
894
+ "api": "https://api.literouter.com/v1"
895
+ },
896
+ "modelDiscovery": "openai-models",
897
+ "liveCatalogAuthority": "unknown",
898
+ "adapterId": "winter.openai-chat-completions",
899
+ "family": "openai",
900
+ "upstream": {
901
+ "project": "winter",
902
+ "commit": "",
903
+ "sourcePaths": []
904
+ },
905
+ "risk": {
906
+ "class": "review-required",
907
+ "reasons": [
908
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
909
+ ]
910
+ },
911
+ "pricingBasis": "token",
912
+ "admission": {
913
+ "basis": "api-key",
914
+ "citation": "https://docs.literouter.com — the vendor's own documentation, retrieved 2026-09-06: the docs introduction names the OpenAI-compatible base `https://api.literouter.com/v1`.",
915
+ "tier": "fetched-document"
916
+ },
917
+ "scope": "llm"
918
+ },
919
+ {
920
+ "id": "llama-cpp",
921
+ "displayName": "llama.cpp server (local)",
922
+ "protocols": [
923
+ "openai-chat-completions"
924
+ ],
925
+ "authKinds": [
926
+ "local-none"
927
+ ],
928
+ "defaultEndpoints": {
929
+ "api": "http://127.0.0.1:8080/v1"
930
+ },
931
+ "modelDiscovery": "local",
932
+ "liveCatalogAuthority": "unknown",
933
+ "adapterId": "winter.local-openai",
934
+ "family": "local-openai",
935
+ "upstream": {
936
+ "project": "winter",
937
+ "commit": "",
938
+ "sourcePaths": []
939
+ },
940
+ "risk": {
941
+ "class": "approved",
942
+ "reasons": []
943
+ },
944
+ "pricingBasis": "free",
945
+ "admission": {
946
+ "basis": "local",
947
+ "citation": "local",
948
+ "tier": "local"
949
+ },
950
+ "scope": "llm"
951
+ },
952
+ {
953
+ "id": "llamafile",
954
+ "displayName": "llamafile (local)",
955
+ "protocols": [
956
+ "openai-chat-completions"
957
+ ],
958
+ "authKinds": [
959
+ "local-none"
960
+ ],
961
+ "defaultEndpoints": {
962
+ "api": "http://127.0.0.1:8080/v1"
963
+ },
964
+ "modelDiscovery": "local",
965
+ "liveCatalogAuthority": "unknown",
966
+ "adapterId": "winter.local-openai",
967
+ "family": "local-openai",
968
+ "upstream": {
969
+ "project": "winter",
970
+ "commit": "",
971
+ "sourcePaths": []
972
+ },
973
+ "risk": {
974
+ "class": "approved",
975
+ "reasons": []
976
+ },
977
+ "pricingBasis": "free",
978
+ "admission": {
979
+ "basis": "local",
980
+ "citation": "local",
981
+ "tier": "local"
982
+ },
983
+ "scope": "llm"
984
+ },
985
+ {
986
+ "id": "llm-kiwi",
987
+ "displayName": "llm.kiwi",
988
+ "protocols": [
989
+ "openai-chat-completions"
990
+ ],
991
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
992
+ "authKinds": [
993
+ "api-key"
994
+ ],
995
+ "defaultEndpoints": {
996
+ "api": "https://api.llm.kiwi/v1"
997
+ },
998
+ "modelDiscovery": "openai-models",
999
+ "liveCatalogAuthority": "unknown",
1000
+ "adapterId": "winter.openai-chat-completions",
1001
+ "family": "openai",
1002
+ "upstream": {
1003
+ "project": "winter",
1004
+ "commit": "",
1005
+ "sourcePaths": []
1006
+ },
1007
+ "risk": {
1008
+ "class": "review-required",
1009
+ "reasons": [
1010
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1011
+ ]
1012
+ },
1013
+ "pricingBasis": "token",
1014
+ "admission": {
1015
+ "basis": "api-key",
1016
+ "citation": "https://docs.llm.kiwi/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.llm.kiwi/v1` with `Authorization: Bearer YOUR_API_KEY` (keys prefixed `sk_kiwi_`).",
1017
+ "tier": "fetched-document"
1018
+ },
1019
+ "scope": "llm"
1020
+ },
1021
+ {
1022
+ "id": "llmgateway",
1023
+ "displayName": "LLM Gateway",
1024
+ "protocols": [
1025
+ "openai-chat-completions"
1026
+ ],
1027
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1028
+ "authKinds": [
1029
+ "api-key"
1030
+ ],
1031
+ "defaultEndpoints": {
1032
+ "api": "https://api.llmgateway.io/v1"
1033
+ },
1034
+ "modelDiscovery": "openai-models",
1035
+ "liveCatalogAuthority": "unknown",
1036
+ "adapterId": "winter.openai-chat-completions",
1037
+ "family": "openai",
1038
+ "upstream": {
1039
+ "project": "winter",
1040
+ "commit": "",
1041
+ "sourcePaths": []
1042
+ },
1043
+ "risk": {
1044
+ "class": "review-required",
1045
+ "reasons": [
1046
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it",
1047
+ "the fetched docs home names the base URL but does not spell the auth HEADER; the adapter's OpenAI-family bearer default is an assumption until the live gate runs"
1048
+ ]
1049
+ },
1050
+ "pricingBasis": "token",
1051
+ "admission": {
1052
+ "basis": "api-key",
1053
+ "citation": "https://docs.llmgateway.io/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.llmgateway.io/v1` (or a self-hosted instance) authenticated with an LLM Gateway API key.",
1054
+ "tier": "fetched-document"
1055
+ },
1056
+ "scope": "llm"
1057
+ },
1058
+ {
1059
+ "id": "lm-studio",
1060
+ "displayName": "LM Studio (local)",
1061
+ "protocols": [
1062
+ "openai-chat-completions"
1063
+ ],
1064
+ "authKinds": [
1065
+ "local-none"
1066
+ ],
1067
+ "defaultEndpoints": {
1068
+ "api": "http://127.0.0.1:1234/v1"
1069
+ },
1070
+ "modelDiscovery": "local",
1071
+ "liveCatalogAuthority": "unknown",
1072
+ "adapterId": "winter.local-openai",
1073
+ "family": "local-openai",
1074
+ "upstream": {
1075
+ "project": "winter",
1076
+ "commit": "",
1077
+ "sourcePaths": []
1078
+ },
1079
+ "risk": {
1080
+ "class": "approved",
1081
+ "reasons": []
1082
+ },
1083
+ "pricingBasis": "free",
1084
+ "admission": {
1085
+ "basis": "local",
1086
+ "citation": "local",
1087
+ "tier": "local"
1088
+ },
1089
+ "scope": "llm"
1090
+ },
1091
+ {
1092
+ "id": "logfare",
1093
+ "displayName": "Logfare",
1094
+ "protocols": [
1095
+ "openai-chat-completions"
1096
+ ],
1097
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1098
+ "authKinds": [
1099
+ "api-key"
1100
+ ],
1101
+ "defaultEndpoints": {
1102
+ "api": "https://logfare.ai/v1"
1103
+ },
1104
+ "modelDiscovery": "openai-models",
1105
+ "liveCatalogAuthority": "unknown",
1106
+ "adapterId": "winter.openai-chat-completions",
1107
+ "family": "openai",
1108
+ "upstream": {
1109
+ "project": "winter",
1110
+ "commit": "",
1111
+ "sourcePaths": []
1112
+ },
1113
+ "risk": {
1114
+ "class": "review-required",
1115
+ "reasons": [
1116
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it",
1117
+ "the vendor logs prompts, completions and metadata for research (opt-out at logfare.ai/consent) — a host must surface that before use"
1118
+ ]
1119
+ },
1120
+ "pricingBasis": "token",
1121
+ "admission": {
1122
+ "basis": "api-key",
1123
+ "citation": "https://logfare.ai/docs — the vendor's own documentation, retrieved 2026-09-06: the API docs name base `https://logfare.ai/v1` and enumerate `/chat/completions`, `/messages`, `/models`.",
1124
+ "tier": "fetched-document"
1125
+ },
1126
+ "scope": "llm"
1127
+ },
1128
+ {
1129
+ "id": "meganova-ai",
1130
+ "displayName": "MegaNova AI",
1131
+ "protocols": [
1132
+ "openai-chat-completions"
1133
+ ],
1134
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1135
+ "authKinds": [
1136
+ "api-key"
1137
+ ],
1138
+ "defaultEndpoints": {
1139
+ "api": "https://api.meganova.ai/v1"
1140
+ },
1141
+ "modelDiscovery": "openai-models",
1142
+ "liveCatalogAuthority": "unknown",
1143
+ "adapterId": "winter.openai-chat-completions",
1144
+ "family": "openai",
1145
+ "upstream": {
1146
+ "project": "winter",
1147
+ "commit": "",
1148
+ "sourcePaths": []
1149
+ },
1150
+ "risk": {
1151
+ "class": "review-required",
1152
+ "reasons": [
1153
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1154
+ ]
1155
+ },
1156
+ "pricingBasis": "token",
1157
+ "admission": {
1158
+ "basis": "api-key",
1159
+ "citation": "https://docs.meganova.ai — the vendor's own documentation, retrieved 2026-09-06: the docs overview names the OpenAI-compatible base `https://api.meganova.ai/v1`.",
1160
+ "tier": "fetched-document"
1161
+ },
1162
+ "scope": "llm"
1163
+ },
1164
+ {
1165
+ "id": "minimax-anthropic",
1166
+ "displayName": "MiniMax (Anthropic dialect)",
1167
+ "protocols": [
1168
+ "anthropic-messages"
1169
+ ],
1170
+ "$comment": "R6b-5 (WS-13b §2): a DIALECT SIBLING. The vendor documents two wire dialects at two different base URLs, and a provider row carries exactly one `adapterId`, so two dialects are two rows — each with its own `defaultEndpoints.api`, its own model keys, and the dialect in its `displayName`. `winter.anthropic-messages` is multi-provider in fact, measured rather than assumed: `runtime/src/provider/catalog-endpoint-shape.test.ts` drives two sibling rows against a loopback fake and each reaches ITS OWN `<root>/v1/messages`. A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). The Anthropic half of MiniMax; the OpenAI half is the extracted `minimax` row (`https://api.minimax.io/v1`). The vendor's page states this dialect serves a SUBSET of its models, and the five rows below are the intersection of that list with what the pinned tree catalogues — Winter carries no model it cannot source from a document or the pin.",
1171
+ "authKinds": [
1172
+ "api-key"
1173
+ ],
1174
+ "defaultEndpoints": {
1175
+ "api": "https://api.minimax.io/anthropic"
1176
+ },
1177
+ "modelDiscovery": "openai-models",
1178
+ "liveCatalogAuthority": "unknown",
1179
+ "adapterId": "winter.anthropic-messages",
1180
+ "family": "anthropic",
1181
+ "upstream": {
1182
+ "project": "winter",
1183
+ "commit": "",
1184
+ "sourcePaths": []
1185
+ },
1186
+ "risk": {
1187
+ "class": "review-required",
1188
+ "reasons": [
1189
+ "admission is fetched-document, but no live gate case has run against this endpoint; the vendor documents a narrower model list for this dialect than for its OpenAI one"
1190
+ ]
1191
+ },
1192
+ "pricingBasis": "token",
1193
+ "admission": {
1194
+ "basis": "api-key",
1195
+ "citation": "https://platform.minimax.io/docs/api-reference/text-anthropic-api — MiniMax's own Anthropic-SDK reference, retrieved 2026-09-06: base URL `https://api.minimax.io/anthropic`, used through `client.messages.create()`, so the Messages route is `/anthropic/v1/messages`. Same user-minted key as the `minimax` row.",
1196
+ "tier": "fetched-document"
1197
+ },
1198
+ "scope": "llm"
1199
+ },
1200
+ {
1201
+ "id": "mlx-gemma",
1202
+ "displayName": "MLX (Gemma) server (local)",
1203
+ "protocols": [
1204
+ "openai-chat-completions"
1205
+ ],
1206
+ "authKinds": [
1207
+ "local-none"
1208
+ ],
1209
+ "defaultEndpoints": {
1210
+ "api": "http://127.0.0.1:8080/v1"
1211
+ },
1212
+ "modelDiscovery": "local",
1213
+ "liveCatalogAuthority": "unknown",
1214
+ "adapterId": "winter.local-openai",
1215
+ "family": "local-openai",
1216
+ "upstream": {
1217
+ "project": "winter",
1218
+ "commit": "",
1219
+ "sourcePaths": []
1220
+ },
1221
+ "risk": {
1222
+ "class": "approved",
1223
+ "reasons": []
1224
+ },
1225
+ "pricingBasis": "free",
1226
+ "admission": {
1227
+ "basis": "local",
1228
+ "citation": "local",
1229
+ "tier": "local"
1230
+ },
1231
+ "scope": "llm"
1232
+ },
1233
+ {
1234
+ "id": "mlx-qwen",
1235
+ "displayName": "MLX (Qwen) server (local)",
1236
+ "protocols": [
1237
+ "openai-chat-completions"
1238
+ ],
1239
+ "authKinds": [
1240
+ "local-none"
1241
+ ],
1242
+ "defaultEndpoints": {
1243
+ "api": "http://127.0.0.1:8080/v1"
1244
+ },
1245
+ "modelDiscovery": "local",
1246
+ "liveCatalogAuthority": "unknown",
1247
+ "adapterId": "winter.local-openai",
1248
+ "family": "local-openai",
1249
+ "upstream": {
1250
+ "project": "winter",
1251
+ "commit": "",
1252
+ "sourcePaths": []
1253
+ },
1254
+ "risk": {
1255
+ "class": "approved",
1256
+ "reasons": []
1257
+ },
1258
+ "pricingBasis": "free",
1259
+ "admission": {
1260
+ "basis": "local",
1261
+ "citation": "local",
1262
+ "tier": "local"
1263
+ },
1264
+ "scope": "llm"
1265
+ },
1266
+ {
1267
+ "id": "mnn-ai",
1268
+ "displayName": "MNN AI",
1269
+ "protocols": [
1270
+ "openai-chat-completions"
1271
+ ],
1272
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1273
+ "authKinds": [
1274
+ "api-key"
1275
+ ],
1276
+ "defaultEndpoints": {
1277
+ "api": "https://api.mnnai.ru/v1"
1278
+ },
1279
+ "modelDiscovery": "openai-models",
1280
+ "liveCatalogAuthority": "unknown",
1281
+ "adapterId": "winter.openai-chat-completions",
1282
+ "family": "openai",
1283
+ "upstream": {
1284
+ "project": "winter",
1285
+ "commit": "",
1286
+ "sourcePaths": []
1287
+ },
1288
+ "risk": {
1289
+ "class": "review-required",
1290
+ "reasons": [
1291
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it",
1292
+ "jurisdiction: a Russian-domiciled endpoint; upstream's own `apiHint` says to review privacy and regional data-transfer requirements before use"
1293
+ ]
1294
+ },
1295
+ "pricingBasis": "token",
1296
+ "admission": {
1297
+ "basis": "api-key",
1298
+ "citation": "https://mnnai.ru/docs — the vendor's own documentation, retrieved 2026-09-06: the docs name the primary OpenAI-compatible base `https://api.mnnai.ru/v1` with `/chat/completions` and `/models`.",
1299
+ "tier": "fetched-document"
1300
+ },
1301
+ "scope": "llm"
1302
+ },
1303
+ {
1304
+ "id": "moonshot",
1305
+ "displayName": "Moonshot AI (Kimi platform)",
1306
+ "protocols": [
1307
+ "openai-chat-completions"
1308
+ ],
1309
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). Upstream's `moonshot` entry states this same base URL but drives it through a bespoke `moonshot` executor, which Winter does not represent — an unknown executor FAILS the extraction run rather than defaulting, so the id is in `blocked` and the row is authored here. This is the TOKEN-PRICED platform API; `kimi-coding` is the separate SUBSCRIPTION plan, and audit §5.6(3) is explicit that conflating the two silently misreports cost.",
1310
+ "authKinds": [
1311
+ "api-key"
1312
+ ],
1313
+ "defaultEndpoints": {
1314
+ "api": "https://api.moonshot.ai/v1"
1315
+ },
1316
+ "modelDiscovery": "openai-models",
1317
+ "liveCatalogAuthority": "unknown",
1318
+ "adapterId": "winter.openai-chat-completions",
1319
+ "family": "openai",
1320
+ "upstream": {
1321
+ "project": "winter",
1322
+ "commit": "",
1323
+ "sourcePaths": []
1324
+ },
1325
+ "risk": {
1326
+ "class": "review-required",
1327
+ "reasons": [
1328
+ "upstream drives this vendor through a bespoke executor Winter does not represent, so no extracted row cross-checks these values; no live gate case has run"
1329
+ ]
1330
+ },
1331
+ "pricingBasis": "token",
1332
+ "admission": {
1333
+ "basis": "api-key",
1334
+ "citation": "audit:§4 / §2.1 `kimi-coding` — docs/research/Provider-third-party-access-audit.md, retrieved 2026-09-06: \"the token-priced platform API (https://api.moonshot.ai/v1, MOONSHOT_API_KEY, OpenAI- and Anthropic-format compatible) remains an ordinary api-key provider\", citing platform.kimi.ai/docs/overview.",
1335
+ "tier": "audit"
1336
+ },
1337
+ "scope": "llm"
1338
+ },
1339
+ {
1340
+ "id": "naga-ai",
1341
+ "displayName": "NagaAI",
1342
+ "protocols": [
1343
+ "openai-chat-completions"
1344
+ ],
1345
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1346
+ "authKinds": [
1347
+ "api-key"
1348
+ ],
1349
+ "defaultEndpoints": {
1350
+ "api": "https://api.naga.ac/v1"
1351
+ },
1352
+ "modelDiscovery": "openai-models",
1353
+ "liveCatalogAuthority": "unknown",
1354
+ "adapterId": "winter.openai-chat-completions",
1355
+ "family": "openai",
1356
+ "upstream": {
1357
+ "project": "winter",
1358
+ "commit": "",
1359
+ "sourcePaths": []
1360
+ },
1361
+ "risk": {
1362
+ "class": "review-required",
1363
+ "reasons": [
1364
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1365
+ ]
1366
+ },
1367
+ "pricingBasis": "token",
1368
+ "admission": {
1369
+ "basis": "api-key",
1370
+ "citation": "https://docs.naga.ac/api-reference/overview — the vendor's own documentation, retrieved 2026-09-06: the API-reference overview documents `baseURL` `https://api.naga.ac/v1` with `Authorization: Bearer YOUR_API_KEY` (an `x-api-key` alternative is offered for inference endpoints).",
1371
+ "tier": "fetched-document"
1372
+ },
1373
+ "scope": "llm"
1374
+ },
1375
+ {
1376
+ "id": "nebius",
1377
+ "displayName": "Nebius Token Factory",
1378
+ "protocols": [
1379
+ "openai-chat-completions"
1380
+ ],
1381
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1382
+ "authKinds": [
1383
+ "api-key"
1384
+ ],
1385
+ "defaultEndpoints": {
1386
+ "api": "https://api.tokenfactory.nebius.com/v1"
1387
+ },
1388
+ "modelDiscovery": "openai-models",
1389
+ "liveCatalogAuthority": "unknown",
1390
+ "adapterId": "winter.openai-chat-completions",
1391
+ "family": "openai",
1392
+ "upstream": {
1393
+ "project": "winter",
1394
+ "commit": "",
1395
+ "sourcePaths": []
1396
+ },
1397
+ "risk": {
1398
+ "class": "review-required",
1399
+ "reasons": [
1400
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1401
+ ]
1402
+ },
1403
+ "pricingBasis": "token",
1404
+ "admission": {
1405
+ "basis": "api-key",
1406
+ "citation": "https://docs.tokenfactory.nebius.com/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.tokenfactory.nebius.com/v1/` with `Authorization: Bearer $NEBIUS_API_KEY`.",
1407
+ "tier": "fetched-document"
1408
+ },
1409
+ "scope": "llm"
1410
+ },
1411
+ {
1412
+ "id": "oci",
1413
+ "displayName": "OCI Generative AI",
1414
+ "protocols": [
1415
+ "openai-chat-completions"
1416
+ ],
1417
+ "$comment": "P7a (WS-13b §2/§10, user ruling 2026-09-06): the SECOND per-tenant row, and the same shape as `azure-ai` for the same reason — OCI Generative AI's base URL carries the operator's own REGION (`https://inference.generativeai.<region>.oci.oraclecloud.com/openai/v1`), so P6.5 refused it as `endpoint-not-derivable` rather than ship a template in `defaultEndpoints.api`. See `azure-ai`'s comment for the mechanism; everything said there applies here unchanged. What differs is only what the operator fills in: a REGION rather than a resource name, which is why the two are separate rows with separate templates instead of one row with a note. NO MODEL ROWS and `modelDiscovery: \"none\"` for the same reason as `azure-ai`.",
1418
+ "authKinds": [
1419
+ "api-key"
1420
+ ],
1421
+ "defaultEndpoints": {},
1422
+ "requiresUserEndpoint": true,
1423
+ "endpointTemplate": "https://inference.generativeai.<region>.oci.oraclecloud.com/openai/v1",
1424
+ "modelDiscovery": "none",
1425
+ "liveCatalogAuthority": "unknown",
1426
+ "adapterId": "winter.openai-chat-completions",
1427
+ "family": "openai",
1428
+ "upstream": {
1429
+ "project": "winter",
1430
+ "commit": "",
1431
+ "sourcePaths": []
1432
+ },
1433
+ "risk": {
1434
+ "class": "review-required",
1435
+ "reasons": [
1436
+ "admission is a SPEC RULING, not a fetched document: the vendor page named in the citation has not been read for content by this repository, so the endpoint template and the api-key path are carried from this id's own P6.5 ledger entry rather than re-confirmed. Promotion needs the fetched page AND a live-gate pass",
1437
+ "the endpoint is the OPERATOR'S OWN and is never reviewed by Winter — it is evaluated as a user endpoint, so no privileged header rides it and no descriptor vouches for where it points",
1438
+ "no model row and no live gate case: nothing here has been driven against a real tenant, and the OpenAI-compatible dialect at this base is the vendor's documented claim rather than an observed one"
1439
+ ]
1440
+ },
1441
+ "pricingBasis": "token",
1442
+ "admission": {
1443
+ "basis": "api-key",
1444
+ "citation": "spec:WS-13b §10 — user ruling, 2026-09-06: \"`azure-ai` and `oci` are per-tenant endpoints → Winter exposes a USER-ENTERED ENDPOINT FIELD for them (a settings/credential-time value, the row stays on the shared adapter)\". The credential is the operator's own key against their own OCI tenancy, a user-minted key against a public documented API, which triggers none of WS-13b §1's exclusions. Vendor documentation: https://www.oracle.com/artificial-intelligence/generative-ai. EVIDENCE TIER: spec-ruling — the ruling admits the PATH; the endpoint template is transcribed verbatim from this id's own P6.5 allowlist ledger entry (2026-09-06), and THIS repository has not fetched the vendor page for content. Upgrading to `fetched-document` is a reviewed commit that reads the page.",
1445
+ "tier": "spec-ruling"
1446
+ },
1447
+ "scope": "llm"
1448
+ },
1449
+ {
1450
+ "id": "ofoxai",
1451
+ "displayName": "OfoxAI",
1452
+ "protocols": [
1453
+ "openai-chat-completions"
1454
+ ],
1455
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1456
+ "authKinds": [
1457
+ "api-key"
1458
+ ],
1459
+ "defaultEndpoints": {
1460
+ "api": "https://api.ofox.ai/v1"
1461
+ },
1462
+ "modelDiscovery": "openai-models",
1463
+ "liveCatalogAuthority": "unknown",
1464
+ "adapterId": "winter.openai-chat-completions",
1465
+ "family": "openai",
1466
+ "upstream": {
1467
+ "project": "winter",
1468
+ "commit": "",
1469
+ "sourcePaths": []
1470
+ },
1471
+ "risk": {
1472
+ "class": "review-required",
1473
+ "reasons": [
1474
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it",
1475
+ "the same vendor documents an Anthropic-dialect base (`https://api.ofox.ai/anthropic/v1/messages`) and a Gemini one; only the OpenAI dialect ships, so an `ofoxai-anthropic` sibling is available work (R6b-5) and not a defect in this row"
1476
+ ]
1477
+ },
1478
+ "pricingBasis": "token",
1479
+ "admission": {
1480
+ "basis": "api-key",
1481
+ "citation": "https://docs.ofox.ai — the vendor's own documentation, retrieved 2026-09-06: the docs name the OpenAI-compatible base `https://api.ofox.ai/v1` and `/chat/completions`.",
1482
+ "tier": "fetched-document"
1483
+ },
1484
+ "scope": "llm"
1485
+ },
1486
+ {
1487
+ "id": "ollama-local",
1488
+ "displayName": "Ollama (local)",
1489
+ "protocols": [
1490
+ "openai-chat-completions"
1491
+ ],
1492
+ "authKinds": [
1493
+ "local-none"
1494
+ ],
1495
+ "defaultEndpoints": {
1496
+ "api": "http://127.0.0.1:11434/v1"
1497
+ },
1498
+ "modelDiscovery": "local",
1499
+ "liveCatalogAuthority": "unknown",
1500
+ "adapterId": "winter.local-openai",
1501
+ "family": "local-openai",
1502
+ "upstream": {
1503
+ "project": "winter",
1504
+ "commit": "",
1505
+ "sourcePaths": []
1506
+ },
1507
+ "risk": {
1508
+ "class": "approved",
1509
+ "reasons": []
1510
+ },
1511
+ "pricingBasis": "free",
1512
+ "admission": {
1513
+ "basis": "local",
1514
+ "citation": "local",
1515
+ "tier": "local"
1516
+ },
1517
+ "scope": "llm"
1518
+ },
1519
+ {
1520
+ "id": "oobabooga",
1521
+ "displayName": "Text generation web UI (local)",
1522
+ "protocols": [
1523
+ "openai-chat-completions"
1524
+ ],
1525
+ "authKinds": [
1526
+ "local-none"
1527
+ ],
1528
+ "defaultEndpoints": {
1529
+ "api": "http://127.0.0.1:5000/v1"
1530
+ },
1531
+ "modelDiscovery": "local",
1532
+ "liveCatalogAuthority": "unknown",
1533
+ "adapterId": "winter.local-openai",
1534
+ "family": "local-openai",
1535
+ "upstream": {
1536
+ "project": "winter",
1537
+ "commit": "",
1538
+ "sourcePaths": []
1539
+ },
1540
+ "risk": {
1541
+ "class": "approved",
1542
+ "reasons": []
1543
+ },
1544
+ "pricingBasis": "free",
1545
+ "admission": {
1546
+ "basis": "local",
1547
+ "citation": "local",
1548
+ "tier": "local"
1549
+ },
1550
+ "scope": "llm"
1551
+ },
1552
+ {
1553
+ "id": "openai",
1554
+ "displayName": "OpenAI",
1555
+ "protocols": [
1556
+ "openai-responses",
1557
+ "openai-chat-completions"
1558
+ ],
1559
+ "authKinds": [
1560
+ "api-key"
1561
+ ],
1562
+ "defaultEndpoints": {
1563
+ "api": "https://api.openai.com/v1"
1564
+ },
1565
+ "modelDiscovery": "openai-models",
1566
+ "liveCatalogAuthority": "authoritative",
1567
+ "adapterId": "winter.openai-responses",
1568
+ "family": "openai",
1569
+ "upstream": {
1570
+ "project": "OmniRoute",
1571
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
1572
+ "sourcePaths": [
1573
+ "open-sse/config/providers/registry/openai/index.ts",
1574
+ "src/shared/constants/providers/apikey/index.ts"
1575
+ ]
1576
+ },
1577
+ "risk": {
1578
+ "class": "approved",
1579
+ "reasons": []
1580
+ },
1581
+ "pricingBasis": "token",
1582
+ "admission": {
1583
+ "basis": "api-key",
1584
+ "citation": "https://developers.openai.com/api/docs/pricing",
1585
+ "tier": "fetched-document"
1586
+ },
1587
+ "scope": "llm"
1588
+ },
1589
+ {
1590
+ "id": "opencode",
1591
+ "displayName": "OpenCode Zen",
1592
+ "protocols": [
1593
+ "openai-chat-completions"
1594
+ ],
1595
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). audit §5.2 (docs/research/Provider-third-party-access-audit.md, all citations retrieved 2026-09-06): the vendor's OAuth half is a first-party product sign-in with no third-party client registration documented, so it is DROPPED; the documented third-party route is the API key the user mints in their own account, and that is what this row carries. The upstream id sits in a category whose disposition is `blocked`, so the reviewed overlay is the only door (WS-13 §3 step 7 refuses the class transition outright). Upstream splits this vendor across `opencode`/`opencode-zen`/`opencode-go`, all on a bespoke `opencode` executor Winter does not represent; all three are in `blocked` pointing here. Zen serves `/responses` as well, but this row binds Chat Completions only: audit OQ-6 records that no Zen ToS or AUP was located and no statement that keys may be used from arbitrary third-party tools, so the narrower binding is the honest one until the live gate says otherwise.",
1596
+ "authKinds": [
1597
+ "api-key"
1598
+ ],
1599
+ "defaultEndpoints": {
1600
+ "api": "https://opencode.ai/zen/v1"
1601
+ },
1602
+ "modelDiscovery": "openai-models",
1603
+ "liveCatalogAuthority": "unknown",
1604
+ "adapterId": "winter.openai-chat-completions",
1605
+ "family": "openai",
1606
+ "upstream": {
1607
+ "project": "winter",
1608
+ "commit": "",
1609
+ "sourcePaths": []
1610
+ },
1611
+ "risk": {
1612
+ "class": "review-required",
1613
+ "reasons": [
1614
+ "audit OQ-6: no Zen terms of service or acceptable-use page was located, and no vendor statement that Zen keys may be used from clients other than the `opencode` CLI — the docs show standard AI-SDK usage, which implies it, but implication is not documentation",
1615
+ "free-tier models carry a data-collection caveat (\"During its free period, collected data may be used to improve the model\"; NVIDIA-backed free endpoints log usage under NVIDIA's own trial terms) that a host must surface"
1616
+ ]
1617
+ },
1618
+ "pricingBasis": "token",
1619
+ "admission": {
1620
+ "basis": "api-key",
1621
+ "citation": "audit:§2.2 `opencode` / §5.2 — OpenCode Zen docs (opencode.ai/docs/zen/, retrieved 2026-09-06): base `https://opencode.ai/zen/v1/` with `/responses`, `/messages`, `/chat/completions` and `/models/[model-id]`; key issued on signing up for Zen; pay-as-you-go per 1M tokens, several models temporarily free.",
1622
+ "tier": "audit"
1623
+ },
1624
+ "scope": "llm"
1625
+ },
1626
+ {
1627
+ "id": "openference",
1628
+ "displayName": "Openference",
1629
+ "protocols": [
1630
+ "openai-chat-completions"
1631
+ ],
1632
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). audit §5.2 (docs/research/Provider-third-party-access-audit.md, all citations retrieved 2026-09-06): the vendor's OAuth half is a first-party product sign-in with no third-party client registration documented, so it is DROPPED; the documented third-party route is the API key the user mints in their own account, and that is what this row carries. The upstream id sits in a category whose disposition is `blocked`, so the reviewed overlay is the only door (WS-13 §3 step 7 refuses the class transition outright). The vendor names client-identity spoofing as a violation in terms — \"Do not spoof your User-Agent to bypass the check\" — which is the rule WS-13b §1 already imposes on Winter from the other direction. Winter sends `winter-agent-sdk/<version>` here as it does everywhere (`identity.ts`), so the honest-identity requirement and the vendor's own are the same requirement.",
1633
+ "authKinds": [
1634
+ "api-key"
1635
+ ],
1636
+ "defaultEndpoints": {
1637
+ "api": "https://api.openference.com/v1"
1638
+ },
1639
+ "modelDiscovery": "openai-models",
1640
+ "liveCatalogAuthority": "unknown",
1641
+ "adapterId": "winter.openai-chat-completions",
1642
+ "family": "openai",
1643
+ "upstream": {
1644
+ "project": "winter",
1645
+ "commit": "",
1646
+ "sourcePaths": []
1647
+ },
1648
+ "risk": {
1649
+ "class": "review-required",
1650
+ "reasons": [
1651
+ "audit §2.1: \"Requests identified as autonomous or automated from Free accounts may require a paid plan\" — a free-tier account may not be usable for agent traffic at all, and a host must say so on the setup screen",
1652
+ "audit OQ-4: openference.com/terms-of-service renders client-side and returned no text on 2026-09-06, so the quotes above come from the docs FAQ, which cites the ToS but is not the ToS"
1653
+ ]
1654
+ },
1655
+ "pricingBasis": "token",
1656
+ "admission": {
1657
+ "basis": "api-key",
1658
+ "citation": "audit:§2.1 `openference` / §5.2 — Openference's own docs (docs.openference.com/introduction + /faq, retrieved 2026-09-06): curated OpenAI-compatible gateway at `https://api.openference.com/v1`, key from the dashboard, and the docs instruct the reader to \"Point any supported coding tool… to https://api.openference.com/v1\", naming Cursor, Claude Code, Cline, Codex, OpenCode and Pi.",
1659
+ "tier": "audit"
1660
+ },
1661
+ "scope": "llm"
1662
+ },
1663
+ {
1664
+ "id": "openrouter",
1665
+ "displayName": "OpenRouter",
1666
+ "protocols": [
1667
+ "openai-chat-completions",
1668
+ "openai-responses"
1669
+ ],
1670
+ "authKinds": [
1671
+ "api-key"
1672
+ ],
1673
+ "defaultEndpoints": {
1674
+ "api": "https://openrouter.ai/api/v1"
1675
+ },
1676
+ "modelDiscovery": "openai-models",
1677
+ "liveCatalogAuthority": "partial",
1678
+ "adapterId": "winter.openai-chat-completions",
1679
+ "family": "openai",
1680
+ "upstream": {
1681
+ "project": "OmniRoute",
1682
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
1683
+ "sourcePaths": [
1684
+ "open-sse/config/providers/registry/openrouter/index.ts",
1685
+ "src/shared/constants/providers/apikey/index.ts"
1686
+ ]
1687
+ },
1688
+ "risk": {
1689
+ "class": "review-required",
1690
+ "reasons": [
1691
+ "gateway: capability parity is model-by-model (WS-13 §14.4), and per-request provider/data-policy controls must be preserved before any row here is promoted past `candidate`"
1692
+ ]
1693
+ },
1694
+ "$comment": "liveCatalogAuthority is \"partial\", not \"authoritative\": a gateway routes hundreds of models that change constantly, and which of them a given key can actually reach depends on upstream routing and data-policy settings the list does not express. R6-F's own wording anticipates this (\"local/gateway providers with a non-authoritative live catalog\"). Marking it authoritative made an absent id a definitive fact, which closed the `allowUnlisted` door on exactly the provider whose real ids are other vendors' qualified ids.",
1695
+ "pricingBasis": "token",
1696
+ "admission": {
1697
+ "basis": "api-key",
1698
+ "citation": "https://openrouter.ai — the vendor's own site as OmniRoute's product catalog records it at 5458026; the api-key path is attested by the pinned RegistryEntry: authType \"apikey\", OpenAI Chat Completions at https://openrouter.ai/api/v1. EVIDENCE TIER: pinned-upstream — see PROVENANCE.md \"Two tiers of admission citation\". The audit (docs/research/Provider-third-party-access-audit.md) covers the OAuth/keyless ids and carries NO citation for this one, so its 51 references cannot upgrade this row.",
1699
+ "tier": "pinned-upstream"
1700
+ },
1701
+ "scope": "llm"
1702
+ },
1703
+ {
1704
+ "id": "poolside",
1705
+ "displayName": "Poolside",
1706
+ "protocols": [
1707
+ "openai-chat-completions"
1708
+ ],
1709
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1710
+ "authKinds": [
1711
+ "api-key"
1712
+ ],
1713
+ "defaultEndpoints": {
1714
+ "api": "https://inference.poolside.ai/v1"
1715
+ },
1716
+ "modelDiscovery": "openai-models",
1717
+ "liveCatalogAuthority": "unknown",
1718
+ "adapterId": "winter.openai-chat-completions",
1719
+ "family": "openai",
1720
+ "upstream": {
1721
+ "project": "winter",
1722
+ "commit": "",
1723
+ "sourcePaths": []
1724
+ },
1725
+ "risk": {
1726
+ "class": "review-required",
1727
+ "reasons": [
1728
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1729
+ ]
1730
+ },
1731
+ "pricingBasis": "token",
1732
+ "admission": {
1733
+ "basis": "api-key",
1734
+ "citation": "https://docs.poolside.ai/api/overview — the vendor's own documentation, retrieved 2026-09-06: the API overview documents base `https://inference.poolside.ai/v1` with `Authorization: Bearer <api-key>`.",
1735
+ "tier": "fetched-document"
1736
+ },
1737
+ "scope": "llm"
1738
+ },
1739
+ {
1740
+ "id": "requesty",
1741
+ "displayName": "Requesty Router",
1742
+ "protocols": [
1743
+ "openai-chat-completions"
1744
+ ],
1745
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1746
+ "authKinds": [
1747
+ "api-key"
1748
+ ],
1749
+ "defaultEndpoints": {
1750
+ "api": "https://router.requesty.ai/v1"
1751
+ },
1752
+ "modelDiscovery": "openai-models",
1753
+ "liveCatalogAuthority": "unknown",
1754
+ "adapterId": "winter.openai-chat-completions",
1755
+ "family": "openai",
1756
+ "upstream": {
1757
+ "project": "winter",
1758
+ "commit": "",
1759
+ "sourcePaths": []
1760
+ },
1761
+ "risk": {
1762
+ "class": "review-required",
1763
+ "reasons": [
1764
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1765
+ ]
1766
+ },
1767
+ "pricingBasis": "token",
1768
+ "admission": {
1769
+ "basis": "api-key",
1770
+ "citation": "https://docs.requesty.ai/quickstart — the vendor's own documentation, retrieved 2026-09-06: the quickstart documents base `https://router.requesty.ai/v1` with `Authorization: Bearer $REQUESTY_API_KEY`, as a drop-in OpenAI replacement.",
1771
+ "tier": "fetched-document"
1772
+ },
1773
+ "scope": "llm"
1774
+ },
1775
+ {
1776
+ "id": "routeway",
1777
+ "displayName": "Routeway",
1778
+ "protocols": [
1779
+ "openai-chat-completions"
1780
+ ],
1781
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1782
+ "authKinds": [
1783
+ "api-key"
1784
+ ],
1785
+ "defaultEndpoints": {
1786
+ "api": "https://api.routeway.ai/v1"
1787
+ },
1788
+ "modelDiscovery": "openai-models",
1789
+ "liveCatalogAuthority": "unknown",
1790
+ "adapterId": "winter.openai-chat-completions",
1791
+ "family": "openai",
1792
+ "upstream": {
1793
+ "project": "winter",
1794
+ "commit": "",
1795
+ "sourcePaths": []
1796
+ },
1797
+ "risk": {
1798
+ "class": "review-required",
1799
+ "reasons": [
1800
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1801
+ ]
1802
+ },
1803
+ "pricingBasis": "token",
1804
+ "admission": {
1805
+ "basis": "api-key",
1806
+ "citation": "https://docs.routeway.ai/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.routeway.ai/v1` with `Authorization: Bearer $ROUTEWAY_API_KEY`.",
1807
+ "tier": "fetched-document"
1808
+ },
1809
+ "scope": "llm"
1810
+ },
1811
+ {
1812
+ "id": "sealion",
1813
+ "displayName": "SEA-LION",
1814
+ "protocols": [
1815
+ "openai-chat-completions"
1816
+ ],
1817
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1818
+ "authKinds": [
1819
+ "api-key"
1820
+ ],
1821
+ "defaultEndpoints": {
1822
+ "api": "https://api.sea-lion.ai/v1"
1823
+ },
1824
+ "modelDiscovery": "openai-models",
1825
+ "liveCatalogAuthority": "unknown",
1826
+ "adapterId": "winter.openai-chat-completions",
1827
+ "family": "openai",
1828
+ "upstream": {
1829
+ "project": "winter",
1830
+ "commit": "",
1831
+ "sourcePaths": []
1832
+ },
1833
+ "risk": {
1834
+ "class": "review-required",
1835
+ "reasons": [
1836
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1837
+ ]
1838
+ },
1839
+ "pricingBasis": "token",
1840
+ "admission": {
1841
+ "basis": "api-key",
1842
+ "citation": "https://docs.sea-lion.ai/guides/inferencing/api/ — the vendor's own documentation, retrieved 2026-09-06: the inferencing guide documents base `https://api.sea-lion.ai/v1` with `Authorization: Bearer YOUR_API_KEY`.",
1843
+ "tier": "fetched-document"
1844
+ },
1845
+ "scope": "llm"
1846
+ },
1847
+ {
1848
+ "id": "siliconflow",
1849
+ "displayName": "SiliconFlow",
1850
+ "protocols": [
1851
+ "openai-chat-completions"
1852
+ ],
1853
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1854
+ "authKinds": [
1855
+ "api-key"
1856
+ ],
1857
+ "defaultEndpoints": {
1858
+ "api": "https://api.siliconflow.com/v1"
1859
+ },
1860
+ "modelDiscovery": "openai-models",
1861
+ "liveCatalogAuthority": "unknown",
1862
+ "adapterId": "winter.openai-chat-completions",
1863
+ "family": "openai",
1864
+ "upstream": {
1865
+ "project": "winter",
1866
+ "commit": "",
1867
+ "sourcePaths": []
1868
+ },
1869
+ "risk": {
1870
+ "class": "review-required",
1871
+ "reasons": [
1872
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1873
+ ]
1874
+ },
1875
+ "pricingBasis": "token",
1876
+ "admission": {
1877
+ "basis": "api-key",
1878
+ "citation": "https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions — the vendor's own documentation, retrieved 2026-09-06: the API reference's own OpenAPI `servers` block is `url: https://api.siliconflow.com/v1` with path `/chat/completions`, `bearerAuth: type: http, scheme: bearer`.",
1879
+ "tier": "fetched-document"
1880
+ },
1881
+ "scope": "llm"
1882
+ },
1883
+ {
1884
+ "id": "speka",
1885
+ "displayName": "Speka AI",
1886
+ "protocols": [
1887
+ "openai-chat-completions"
1888
+ ],
1889
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1890
+ "authKinds": [
1891
+ "api-key"
1892
+ ],
1893
+ "defaultEndpoints": {
1894
+ "api": "https://speka.me/v1"
1895
+ },
1896
+ "modelDiscovery": "openai-models",
1897
+ "liveCatalogAuthority": "unknown",
1898
+ "adapterId": "winter.openai-chat-completions",
1899
+ "family": "openai",
1900
+ "upstream": {
1901
+ "project": "winter",
1902
+ "commit": "",
1903
+ "sourcePaths": []
1904
+ },
1905
+ "risk": {
1906
+ "class": "review-required",
1907
+ "reasons": [
1908
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1909
+ ]
1910
+ },
1911
+ "pricingBasis": "token",
1912
+ "admission": {
1913
+ "basis": "api-key",
1914
+ "citation": "https://speka.me/docs — the vendor's own documentation, retrieved 2026-09-06: the API reference is titled \"OpenAI-Compatible AI API Docs\" and names base `https://speka.me/v1`.",
1915
+ "tier": "fetched-document"
1916
+ },
1917
+ "scope": "llm"
1918
+ },
1919
+ {
1920
+ "id": "together",
1921
+ "displayName": "Together AI",
1922
+ "protocols": [
1923
+ "openai-chat-completions"
1924
+ ],
1925
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
1926
+ "authKinds": [
1927
+ "api-key"
1928
+ ],
1929
+ "defaultEndpoints": {
1930
+ "api": "https://api.together.ai/v1"
1931
+ },
1932
+ "modelDiscovery": "openai-models",
1933
+ "liveCatalogAuthority": "unknown",
1934
+ "adapterId": "winter.openai-chat-completions",
1935
+ "family": "openai",
1936
+ "upstream": {
1937
+ "project": "winter",
1938
+ "commit": "",
1939
+ "sourcePaths": []
1940
+ },
1941
+ "risk": {
1942
+ "class": "review-required",
1943
+ "reasons": [
1944
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
1945
+ ]
1946
+ },
1947
+ "pricingBasis": "token",
1948
+ "admission": {
1949
+ "basis": "api-key",
1950
+ "citation": "https://docs.together.ai/docs/chat-overview — the vendor's own documentation, retrieved 2026-09-06: the chat-overview page documents `https://api.together.ai/v1/chat/completions` with `Authorization: Bearer $TOGETHER_API_KEY`.",
1951
+ "tier": "fetched-document"
1952
+ },
1953
+ "scope": "llm"
1954
+ },
1955
+ {
1956
+ "id": "triton",
1957
+ "displayName": "NVIDIA Triton Inference Server (local)",
1958
+ "protocols": [
1959
+ "openai-chat-completions"
1960
+ ],
1961
+ "authKinds": [
1962
+ "local-none"
1963
+ ],
1964
+ "defaultEndpoints": {
1965
+ "api": "http://127.0.0.1:9000/v1"
1966
+ },
1967
+ "modelDiscovery": "local",
1968
+ "liveCatalogAuthority": "unknown",
1969
+ "adapterId": "winter.local-openai",
1970
+ "family": "local-openai",
1971
+ "upstream": {
1972
+ "project": "winter",
1973
+ "commit": "",
1974
+ "sourcePaths": []
1975
+ },
1976
+ "risk": {
1977
+ "class": "approved",
1978
+ "reasons": []
1979
+ },
1980
+ "pricingBasis": "free",
1981
+ "admission": {
1982
+ "basis": "local",
1983
+ "citation": "local",
1984
+ "tier": "local"
1985
+ },
1986
+ "scope": "llm"
1987
+ },
1988
+ {
1989
+ "id": "uncloseai",
1990
+ "displayName": "uncloseai",
1991
+ "protocols": [
1992
+ "openai-chat-completions"
1993
+ ],
1994
+ "$comment": "WS-13b §8.4 / audit §5.1: a KEYLESS row, and the only one whose vendor requires no credential at all. `authKinds: [\"custom\"]` is the honest encoding: `local-none` is reserved for a LOCAL installation (the twelve WS-13 §12 rows), and this is a public REMOTE endpoint — labelling it `local-none` would tell `connectionFrom` to stamp `local: true` and hand a non-loopback https host the local-endpoint policy. `custom` says \"this provider's credential rule is its own\", which is exactly the state: no key needed, an optional one accepted. One of the three documented hosts is bound; the others are a host's `connection.baseUrl` to choose.",
1995
+ "authKinds": [
1996
+ "custom"
1997
+ ],
1998
+ "defaultEndpoints": {
1999
+ "api": "https://hermes.ai.unturf.com/v1"
2000
+ },
2001
+ "modelDiscovery": "openai-models",
2002
+ "liveCatalogAuthority": "unknown",
2003
+ "adapterId": "winter.openai-chat-completions",
2004
+ "family": "openai",
2005
+ "upstream": {
2006
+ "project": "winter",
2007
+ "commit": "",
2008
+ "sourcePaths": []
2009
+ },
2010
+ "risk": {
2011
+ "class": "review-required",
2012
+ "reasons": [
2013
+ "hobby-grade: audit §5.1 records no availability guarantee, and the ToU's one real constraint is not degrading service — a host must rate-limit conservatively",
2014
+ "the ToU prohibits developing \"competing machine learning services without attribution\", which is a term a host embedding this provider should read before shipping"
2015
+ ]
2016
+ },
2017
+ "pricingBasis": "free",
2018
+ "admission": {
2019
+ "basis": "keyless-documented",
2020
+ "citation": "audit:§2.2 `uncloseai` / §5.1 — uncloseai.com and its terms of use (uncloseai.com/terms-of-use.html), retrieved 2026-09-06: OpenAI-compatible endpoints at `hermes.ai.unturf.com/v1`, `qwen.ai.unturf.com/v1`, `speech.ai.unturf.com/v1`; the service states it does NOT require a valid API key and is \"completely public domain\"; third-party clients are explicitly encouraged (\"open source client implementations in 42+ programming languages\").",
2021
+ "tier": "audit"
2022
+ },
2023
+ "scope": "llm"
2024
+ },
2025
+ {
2026
+ "id": "vertex",
2027
+ "displayName": "Google Vertex AI",
2028
+ "protocols": [
2029
+ "google-generate-content"
2030
+ ],
2031
+ "authKinds": [
2032
+ "cloud-credential-chain"
2033
+ ],
2034
+ "defaultEndpoints": {},
2035
+ "modelDiscovery": "provider-native",
2036
+ "liveCatalogAuthority": "partial",
2037
+ "adapterId": "winter.vertex-gemini",
2038
+ "$comment": "`adapterId` is Lane B's `VERTEX_ADAPTER_ID`, read from p6/lane-b's adapters/google/vertex.ts. It was `winter.google-generate-content` — the plain Gemini adapter's id — which the registry resolves BY ID, so a Vertex session would have been served by the Gemini API adapter: no location-scoped URL, no ADC credential, and the Gemini API endpoint on the wire. `family` stays `google` deliberately: Vertex is a TRANSPORT over the same GenerateContent wire mapping (ruling R6-A), not a second dialect.",
2039
+ "family": "google",
2040
+ "upstream": {
2041
+ "project": "OmniRoute",
2042
+ "commit": "5458026c216f77a3da68ea49152dc33470cfe2cb",
2043
+ "sourcePaths": [
2044
+ "open-sse/config/providers/registry/vertex/index.ts",
2045
+ "src/shared/constants/providers/apikey/index.ts"
2046
+ ]
2047
+ },
2048
+ "risk": {
2049
+ "class": "review-required",
2050
+ "reasons": [
2051
+ "native cloud (R6-16): project/location endpoints and ADC (service-account RS256 JWT exchange or an explicit access-token ref) need their own auth proof"
2052
+ ]
2053
+ },
2054
+ "pricingBasis": "token",
2055
+ "admission": {
2056
+ "basis": "cloud-credential",
2057
+ "citation": "https://cloud.google.com/vertex-ai — the vendor's own product page as OmniRoute's product catalog records it at 5458026. The credential is the OPERATOR'S OWN GCP project via Application Default Credentials, which is why the basis is cloud-credential rather than api-key. EVIDENCE TIER: pinned-upstream — see PROVENANCE.md \"Two tiers of admission citation\".",
2058
+ "tier": "pinned-upstream"
2059
+ },
2060
+ "scope": "llm"
2061
+ },
2062
+ {
2063
+ "id": "vllm",
2064
+ "displayName": "vLLM (local)",
2065
+ "protocols": [
2066
+ "openai-chat-completions"
2067
+ ],
2068
+ "authKinds": [
2069
+ "local-none"
2070
+ ],
2071
+ "defaultEndpoints": {
2072
+ "api": "http://127.0.0.1:8000/v1"
2073
+ },
2074
+ "modelDiscovery": "local",
2075
+ "liveCatalogAuthority": "unknown",
2076
+ "adapterId": "winter.local-openai",
2077
+ "family": "local-openai",
2078
+ "upstream": {
2079
+ "project": "winter",
2080
+ "commit": "",
2081
+ "sourcePaths": []
2082
+ },
2083
+ "risk": {
2084
+ "class": "approved",
2085
+ "reasons": []
2086
+ },
2087
+ "pricingBasis": "free",
2088
+ "admission": {
2089
+ "basis": "local",
2090
+ "citation": "local",
2091
+ "tier": "local"
2092
+ },
2093
+ "scope": "llm"
2094
+ },
2095
+ {
2096
+ "id": "void-ai",
2097
+ "displayName": "VoidAI",
2098
+ "protocols": [
2099
+ "openai-chat-completions"
2100
+ ],
2101
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (a) — docs URL and base URL confirmed by the round-1 reviewer, then RE-FETCHED by this lane). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). The base is the one the vendor's page states. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
2102
+ "authKinds": [
2103
+ "api-key"
2104
+ ],
2105
+ "defaultEndpoints": {
2106
+ "api": "https://api.voidai.app/v1"
2107
+ },
2108
+ "modelDiscovery": "openai-models",
2109
+ "liveCatalogAuthority": "unknown",
2110
+ "adapterId": "winter.openai-chat-completions",
2111
+ "family": "openai",
2112
+ "upstream": {
2113
+ "project": "winter",
2114
+ "commit": "",
2115
+ "sourcePaths": []
2116
+ },
2117
+ "risk": {
2118
+ "class": "review-required",
2119
+ "reasons": [
2120
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
2121
+ ]
2122
+ },
2123
+ "pricingBasis": "token",
2124
+ "admission": {
2125
+ "basis": "api-key",
2126
+ "citation": "https://docs.voidai.app/ — the vendor's own documentation, retrieved 2026-09-06: the docs home documents base `https://api.voidai.app/v1` with `Authorization: Bearer sk-voidai-…`.",
2127
+ "tier": "fetched-document"
2128
+ },
2129
+ "scope": "llm"
2130
+ },
2131
+ {
2132
+ "id": "xai",
2133
+ "displayName": "xAI (Grok)",
2134
+ "protocols": [
2135
+ "openai-chat-completions"
2136
+ ],
2137
+ "$comment": "A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). WS-13b §2: xAI ships as its documented api-key row AND (lane O) as the `xai-oauth` SUBSCRIPTION row — two different commercial relationships, and R6-H must not read one as the other. Upstream's `xai` entry states this same base but drives it through a bespoke `xai` executor Winter does not represent, so the id is in `blocked` and this row is authored from the vendor's own docs. The two `targetFormat: \"openai-responses\"` models upstream lists (`grok-4.6`, `grok-4.20-multi-agent-0309`) are DELIBERATELY ABSENT: a responses-only row under a Chat Completions adapter is the contradiction `provider-source-sync --offline` fails on, and declaring `endpoints: [\"chat\",\"responses\"]` for them would be a guess about a surface nothing here has proven.",
2138
+ "authKinds": [
2139
+ "api-key"
2140
+ ],
2141
+ "defaultEndpoints": {
2142
+ "api": "https://api.x.ai/v1"
2143
+ },
2144
+ "modelDiscovery": "openai-models",
2145
+ "liveCatalogAuthority": "unknown",
2146
+ "adapterId": "winter.openai-chat-completions",
2147
+ "family": "openai",
2148
+ "upstream": {
2149
+ "project": "winter",
2150
+ "commit": "",
2151
+ "sourcePaths": []
2152
+ },
2153
+ "risk": {
2154
+ "class": "review-required",
2155
+ "reasons": [
2156
+ "upstream drives this vendor through a bespoke executor Winter does not represent, so no extracted row cross-checks these values; no live gate case has run",
2157
+ "audit OQ-2: x.ai/legal/* returned HTTP 403 on 2026-09-06, so the acceptable-use and terms pages were never rendered — the api-key admission does not depend on them, but no terms clause has been read"
2158
+ ]
2159
+ },
2160
+ "pricingBasis": "token",
2161
+ "admission": {
2162
+ "basis": "api-key",
2163
+ "citation": "https://docs.x.ai/docs/overview — xAI's own developer overview, retrieved 2026-09-06: `\"base_url\": \"https://api.x.ai/v1\"` with `Authorization: Bearer $XAI_API_KEY`, driven through the OpenAI client. Audit §2.1/§2.5 records the same base and that this key path is token-priced, distinct from the subscription OAuth flow.",
2164
+ "tier": "fetched-document"
2165
+ },
2166
+ "scope": "llm"
2167
+ },
2168
+ {
2169
+ "id": "xinference",
2170
+ "displayName": "Xinference (local)",
2171
+ "protocols": [
2172
+ "openai-chat-completions"
2173
+ ],
2174
+ "authKinds": [
2175
+ "local-none"
2176
+ ],
2177
+ "defaultEndpoints": {
2178
+ "api": "http://127.0.0.1:9997/v1"
2179
+ },
2180
+ "modelDiscovery": "local",
2181
+ "liveCatalogAuthority": "unknown",
2182
+ "adapterId": "winter.local-openai",
2183
+ "family": "local-openai",
2184
+ "upstream": {
2185
+ "project": "winter",
2186
+ "commit": "",
2187
+ "sourcePaths": []
2188
+ },
2189
+ "risk": {
2190
+ "class": "approved",
2191
+ "reasons": []
2192
+ },
2193
+ "pricingBasis": "free",
2194
+ "admission": {
2195
+ "basis": "local",
2196
+ "citation": "local",
2197
+ "tier": "local"
2198
+ },
2199
+ "scope": "llm"
2200
+ },
2201
+ {
2202
+ "id": "yolo-auto",
2203
+ "displayName": "Yolo-Auto",
2204
+ "protocols": [
2205
+ "openai-chat-completions"
2206
+ ],
2207
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
2208
+ "authKinds": [
2209
+ "api-key"
2210
+ ],
2211
+ "defaultEndpoints": {
2212
+ "api": "https://yolo-auto.com/v1"
2213
+ },
2214
+ "modelDiscovery": "openai-models",
2215
+ "liveCatalogAuthority": "unknown",
2216
+ "adapterId": "winter.openai-chat-completions",
2217
+ "family": "openai",
2218
+ "upstream": {
2219
+ "project": "winter",
2220
+ "commit": "",
2221
+ "sourcePaths": []
2222
+ },
2223
+ "risk": {
2224
+ "class": "review-required",
2225
+ "reasons": [
2226
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
2227
+ ]
2228
+ },
2229
+ "pricingBasis": "token",
2230
+ "admission": {
2231
+ "basis": "api-key",
2232
+ "citation": "https://yolo-auto.com/docs — the vendor's own documentation, retrieved 2026-09-06: the docs are titled \"OpenAI-Compatible API Docs\" and name base `https://yolo-auto.com/v1` with `/models`.",
2233
+ "tier": "fetched-document"
2234
+ },
2235
+ "scope": "llm"
2236
+ },
2237
+ {
2238
+ "id": "zai",
2239
+ "displayName": "Z.AI GLM Coding (OpenAI dialect)",
2240
+ "protocols": [
2241
+ "openai-chat-completions"
2242
+ ],
2243
+ "$comment": "R6b-5 (WS-13b §2): a DIALECT SIBLING. The vendor documents two wire dialects at two different base URLs, and a provider row carries exactly one `adapterId`, so two dialects are two rows — each with its own `defaultEndpoints.api`, its own model keys, and the dialect in its `displayName`. `winter.anthropic-messages` is multi-provider in fact, measured rather than assumed: `runtime/src/provider/catalog-endpoint-shape.test.ts` drives two sibling rows against a loopback fake and each reaches ITS OWN `<root>/v1/messages`. A WINTER-OWNED row (`upstream.project: \"winter\"`, empty commit): it is not extracted, so nothing here came from the pinned tree's executable half. The endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 — the `fetched-document` citation tier (PROVENANCE.md). The OPENAI half of z.ai's GLM Coding Plan. Its Anthropic sibling is the EXTRACTED `zai-anthropic` row — upstream's own `zai` entry is `format: \"claude\"` at `https://api.z.ai/api/anthropic/v1/messages`, which z.ai's Claude-client doc confirms verbatim, so the allowlist admits that id under the sibling id rather than under `zai` (the `gemini` -> `google` precedent). Upstream's `glm`/`glm-cn`/`glmt` ids reach this same endpoint through a bespoke `glm` executor Winter does not represent; they are in `blocked` pointing here.",
2244
+ "authKinds": [
2245
+ "api-key"
2246
+ ],
2247
+ "defaultEndpoints": {
2248
+ "api": "https://api.z.ai/api/coding/paas/v4"
2249
+ },
2250
+ "modelDiscovery": "openai-models",
2251
+ "liveCatalogAuthority": "unknown",
2252
+ "adapterId": "winter.openai-chat-completions",
2253
+ "family": "openai",
2254
+ "upstream": {
2255
+ "project": "winter",
2256
+ "commit": "",
2257
+ "sourcePaths": []
2258
+ },
2259
+ "risk": {
2260
+ "class": "review-required",
2261
+ "reasons": [
2262
+ "admission is fetched-document, but no live gate case has run against this endpoint; the model roster is the sibling's and is unverified on this dialect"
2263
+ ]
2264
+ },
2265
+ "pricingBasis": "token",
2266
+ "admission": {
2267
+ "basis": "api-key",
2268
+ "citation": "https://docs.z.ai/devpack/tool/others — z.ai's own GLM Coding Plan docs, retrieved 2026-09-06: the \"Coding Endpoint\" table lists `https://api.z.ai/api/coding/paas/v4` under \"OpenAI Chat Completions\", and the Cline configuration example repeats it.",
2269
+ "tier": "fetched-document"
2270
+ },
2271
+ "scope": "llm"
2272
+ },
2273
+ {
2274
+ "id": "zerolimitai",
2275
+ "displayName": "ZeroLimitAI",
2276
+ "protocols": [
2277
+ "openai-chat-completions"
2278
+ ],
2279
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
2280
+ "authKinds": [
2281
+ "api-key"
2282
+ ],
2283
+ "defaultEndpoints": {
2284
+ "api": "https://www.zerolimitai.com/api/v1"
2285
+ },
2286
+ "modelDiscovery": "openai-models",
2287
+ "liveCatalogAuthority": "unknown",
2288
+ "adapterId": "winter.openai-chat-completions",
2289
+ "family": "openai",
2290
+ "upstream": {
2291
+ "project": "winter",
2292
+ "commit": "",
2293
+ "sourcePaths": []
2294
+ },
2295
+ "risk": {
2296
+ "class": "review-required",
2297
+ "reasons": [
2298
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
2299
+ ]
2300
+ },
2301
+ "pricingBasis": "token",
2302
+ "admission": {
2303
+ "basis": "api-key",
2304
+ "citation": "https://www.zerolimitai.com — the vendor's own documentation, retrieved 2026-09-06: the vendor's own site names the OpenAI-compatible base `https://www.zerolimitai.com/api/v1`.",
2305
+ "tier": "fetched-document"
2306
+ },
2307
+ "scope": "llm"
2308
+ },
2309
+ {
2310
+ "id": "zylo-api",
2311
+ "displayName": "Zylo AI",
2312
+ "protocols": [
2313
+ "openai-chat-completions"
2314
+ ],
2315
+ "$comment": "WS-13b §2 / round-1 finding I-1 (reviewer list (e) — this lane's own documentation probe). A WINTER-OWNED row: its upstream entry is built by a HELPER CALL the literal extractor refuses to evaluate, so NOTHING here was transcribed from the pinned tree's executable half — the endpoint and dialect are the VENDOR'S OWN documented values, fetched and read on 2026-09-06 (the `fetched-document` citation tier, PROVENANCE.md). TWO INDEPENDENT SOURCES agree on the base: the vendor's documentation page, and the base upstream's product catalog states in its own `apiHint` at the pin. Neither was taken on the other's word. `defaultEndpoints.api` is the API ROOT: the adapter appends `/chat/completions` itself (WS-13b §2).",
2316
+ "authKinds": [
2317
+ "api-key"
2318
+ ],
2319
+ "defaultEndpoints": {
2320
+ "api": "https://api.zyloai.net/v1"
2321
+ },
2322
+ "modelDiscovery": "openai-models",
2323
+ "liveCatalogAuthority": "unknown",
2324
+ "adapterId": "winter.openai-chat-completions",
2325
+ "family": "openai",
2326
+ "upstream": {
2327
+ "project": "winter",
2328
+ "commit": "",
2329
+ "sourcePaths": []
2330
+ },
2331
+ "risk": {
2332
+ "class": "review-required",
2333
+ "reasons": [
2334
+ "admission is a FETCHED vendor document, but no live gate case has run against this endpoint and no terms page was read for it"
2335
+ ]
2336
+ },
2337
+ "pricingBasis": "token",
2338
+ "admission": {
2339
+ "basis": "api-key",
2340
+ "citation": "https://zyloai.net/docs — the vendor's own documentation, retrieved 2026-09-06: the docs name the OpenAI-compatible base `https://api.zyloai.net/v1`.",
2341
+ "tier": "fetched-document"
2342
+ },
2343
+ "scope": "llm"
2344
+ },
2345
+ {
2346
+ "id": "xai-oauth",
2347
+ "displayName": "Grok (xAI OAuth)",
2348
+ "$comment": "WINTER-OWNED, and the only row in this catalog admitted on vendor CONDUCT rather than vendor documentation (audit §2.5, D21 prong 2 — the codex shape). Winter performs its OWN device login against xAI's public, secret-less, Apache-2.0-published OAuth client and sends its own name in the flow's `referrer` field; it never reads the vendor CLI's `~/.grok/auth.json` (that is the excluded `grok-cli` id). SUBSCRIPTION-PRICED: the flow spends a SuperGrok / X Premium entitlement, not the metered API, so it never feeds R6-H cost. The endpoint is the subscription PROXY, not `https://api.x.ai/v1` — that is the separate token-priced api-key row, and the correction is derived in packages/conformance/compat/xai/grok-build/derived-shapes-p6b-xai.md §4. Ships behind `settings.providers[\"xai-oauth\"].enabled` (default true, restrictive-only across tiers per R6b-9) so the §2.5 reversion condition can be applied without a release.",
2349
+ "protocols": [
2350
+ "openai-chat-completions"
2351
+ ],
2352
+ "authKinds": [
2353
+ "oauth-approved"
2354
+ ],
2355
+ "defaultEndpoints": {
2356
+ "api": "https://cli-chat-proxy.grok.com/v1"
2357
+ },
2358
+ "modelDiscovery": "none",
2359
+ "liveCatalogAuthority": "unknown",
2360
+ "adapterId": "winter.xai-oauth",
2361
+ "family": "openai",
2362
+ "upstream": {
2363
+ "project": "winter",
2364
+ "commit": "",
2365
+ "sourcePaths": []
2366
+ },
2367
+ "risk": {
2368
+ "class": "approved",
2369
+ "reasons": [
2370
+ "prong 2 (vendor conduct, not vendor documentation): xAI documents API keys only, and the permission for third-party agents on this flow is an announcement plus an Apache-2.0 client release. Audit §2.5 leaves three residuals open — the docs are silent, and server-side identity validation is untested. REVERSION CONDITION (WS-13b §4): if xAI rejects an honest unregistered agent identity, that is a partner allowlist in fact and this row reverts to impersonation-required.",
2371
+ "the vendor's consent page may name \"Grok Build\" rather than Winter, because the flow uses xAI's shared public client. Not impersonation by Winter, but a user-facing misattribution a host must disclose — `XAI_CONSENT_DISCLOSURE` is exported for exactly that."
2372
+ ]
2373
+ },
2374
+ "pricingBasis": "subscription",
2375
+ "admission": {
2376
+ "basis": "oauth-documented",
2377
+ "citation": "audit:2.5 — vendor announcement https://x.ai/news/grok-opencode (\"More open-source agents and integrations are coming soon\") + xAI's own public client, Apache-2.0, https://github.com/xai-org/grok-build at commit 72a61251fcffb464bcc687aeb5a998e5a98ec0c9; constants derived in packages/conformance/compat/xai/grok-build/derived-shapes-p6b-xai.md",
2378
+ "tier": "audit"
2379
+ },
2380
+ "scope": "llm"
2381
+ }
2382
+ ]
2383
+ }