Skip to content

chore(sync): update core ZenMux model families - #7451

Open
Alcatraz-Zhang wants to merge 6 commits into
anomalyco:devfrom
Alcatraz-Zhang:chore/zenmux-core-families
Open

Alcatraz-Zhang wants to merge 6 commits into
anomalyco:devfrom
Alcatraz-Zhang:chore/zenmux-core-families

Conversation

@Alcatraz-Zhang

Copy link
Copy Markdown
Contributor

Summary

  • reconcile ZenMux Claude, GPT, Gemini, Kimi, and DeepSeek entries with the live models-page allowlist
  • factor third-party routes through lab metadata, adding only the nine missing complete lab definitions
  • refresh USD per-million-token prices and context tiers while omitting per-second/per-request pricing and preserving complex conditional prices
  • align reasoning controls with current first-party peers and documented ZenMux wire paths

Sources

Validation

  • bun validate
  • bun run compare:migrations
  • git diff --check dev...HEAD --
  • live allowlist reconciliation: 84 remote / 84 local, 0 missing, 0 extra
  • independent pricing/base-model/reasoning/override audit: 0 issues
  • 108 changed files, below the reviewer 300-file limit

Test note

The broad bun test command is not green on the current dev baseline because of missing SDK effect/snapshot artifacts and existing unrelated weights-link, Hyper, and DeepInfra expectation failures. The targeted open-weight check confirms neither newly added DeepSeek metadata entry remains in its missing-weights list.

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as ready for review September 18, 2026 22:32
@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/zenmux/models/google/gemini-3-pro-image.toml:3 - Check: reasoning = true models must keep correct host reasoning_options (lab + first-party peer). Why: Lab google/gemini-3-pro-image and first-party providers/google/models/gemini-3-pro-image.toml are reasoning models with effort low/high. This route forces reasoning = false, so the catalog drops caller controls and mislabels the model. Action: Remove reasoning = false and author the ZenMux-supported effort set (or [] only if this host truly has no control), matching lab/first-party baseline.
  • [high] [violation] providers/zenmux/models/google/gemini-2.5-flash-image.toml:3 - Check: Do not override a lab reasoner to non-reasoning without a real host delta. Why: Lab and first-party Google keep reasoning = true with reasoning_options = [] (always-on / no control). Setting reasoning = false contradicts that and breaks the resolved capability. Action: Drop reasoning = false; use reasoning_options = [] if ZenMux exposes no control, or the host’s real controls if present.
  • [high] [violation] providers/zenmux/models/google/gemma-4-31b-it.toml:2 - Check: Relay of a lab reasoner must not invent reasoning = false / omit cost. Why: Lab gemma-4-31b-it is reasoning = true; first-party Google and OpenRouter keep reasoning with a toggle. This file sets reasoning = false and has no [cost], so pricing and reasoning controls are both wrong/missing. Action: Restore reasoning + toggle (or documented host controls), add USD/MTok cost from ZenMux pricing, and keep only real deltas.
  • [high] [violation] providers/zenmux/models/google/gemma-4-26b-a4b-it.toml:2 - Check: Same Gemma reasoner baseline as peers. Why: Lab is reasoning; OpenRouter uses toggle. Forcing reasoning = false misrepresents the model on this relay. Action: Align with lab/peer reasoning controls instead of disabling reasoning.
  • [high] [violation] providers/zenmux/models/deepseek/deepseek-v4.1-flash.toml:1 - Check: Provider models need host cost (and DeepSeek V4 surface fields when applicable). Why: New paid DeepSeek V4.1 Flash entry has only base_model + reasoning options—no [cost], and no interleaved.reasoning_content that ZenMux V4 peers and first-party DeepSeek use. Action: Add ZenMux USD/MTok pricing and the same interleaved/reasoning surface as the other ZenMux DeepSeek V4 routes unless this ID is intentionally free/unpriced.
  • [high] [violation] providers/zenmux/models/openai/gpt-transcribe.toml:1 - Check: Resolved provider models should author cost unless request-only / no public price. Why: File is only base_model = "openai/gpt-transcribe" with no cost or other host fields; a catalogued API model without price is incomplete relative to AGENTS provider requirements and the PR’s pricing refresh. Action: Add ZenMux pricing, or document in a leading comment that this route is intentionally unpriced/request-only.
  • [medium] [violation] providers/zenmux/models/openai/chat-latest.toml:2 - Check: reasoning override must match the underlying model. Why: base_model = "openai/gpt-5.5-instant" is reasoning = true in lab metadata, but this route sets reasoning = false (and drops reasoning_options). That is a hard capability flip, not a display rename. Action: Keep inherited reasoning + host effort controls, or point base_model at a true non-reasoning lab identity if Chat Latest is a different product.
  • [medium] [possible mistake] providers/zenmux/models/deepseek/deepseek-v3.2.toml:17 - Check: Limit overrides must be real host deltas. Why: Lab deepseek-v3.2 output is 64_000; this sets output = 8_000, an 8× cut that looks like a bad default rather than documented ZenMux max. Action: Verify against ZenMux model docs/API and restore 64_000 (or the true served max) if 8k is wrong.
  • [medium] [possible mistake] providers/zenmux/models/openai/text-embedding-3-large.toml:9 - Check: Embedding limit.output is vector dimensions, not a second context window. Why: New lab metadata and first-party OpenAI use output = 3_072 for large; this override sets context = 8_192 / output = 8_192, which misstates embedding size. Same pattern on text-embedding-3-small (1_536 expected). Action: Match lab/OpenAI dimension limits (or omit identical values) and only override real ZenMux deltas.
  • [medium] [possible mistake] providers/zenmux/models/anthropic/claude-sonnet-5.toml:24 - Check: Output-limit override vs lab. Why: Lab/first-party Sonnet 5 use output = 128_000; this forces 64_000 without a cited host cap. Action: Confirm ZenMux’s max output; remove the override if it matches the lab.
  • [medium] [possible mistake] models/google/veo-3.1-generate-001.toml:12 - Check: Date fields must be YYYY-MM or YYYY-MM-DD. Why: last_updated = "2026-01" is valid month form, but paired provider Veo files omit cost while only bumping context to 100_000 against lab 1_024—inconsistent and hard to trust without a mapped pricing/limit citation. Action: Normalize dates if a full day is known; add cost or an explicit top-of-file note that Veo is non-token / intentionally unpriced; justify the 100k context override from ZenMux docs.
  • [low] [possible mistake] providers/zenmux/models/deepseek/deepseek-chat-v3.1.toml:3 - Check: Hybrid DeepSeek V3.1 reasoning flag. Why: Lab deepseek-v3.1 is reasoning = true (thinking/non-thinking). This route sets reasoning = false under a generic “DeepSeek V3.1” name, which may be correct for a non-thinking SKU but is easy to misread. Action: Confirm this ID is non-thinking-only; if not, keep reasoning + toggle; if yes, say so in the display name/comment.
  • [low] [possible mistake] providers/zenmux/models/openai/gpt-5-codex.toml:4 - Check: Override-only attachment must differ from base. Why: Lab gpt-5-codex has attachment = false; this sets attachment = true (and similar image/pdf modality restates appear on several GPT routes). That may be a real ZenMux delta or accidental copy. Action: Verify multimodal input on ZenMux for each overridden GPT id; drop redundant fields that match the lab.

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as draft September 18, 2026 22:37
@Alcatraz-Zhang

Copy link
Copy Markdown
Contributor Author

Addressed the automated review in 6921d68. Applied the two substantive fixes: embedding output dimensions now inherit 3072/1536 from lab metadata, and DeepSeek V4.1 Flash now records its reasoning side channel plus the discounted base token rates (with a time-band limitation note). Added source comments for intentional ZenMux host deltas and for non-token/unavailable pricing instead of changing them to contradict the live ZenMux protocol catalogs. Re-ran bun validate, compare:migrations, diff check, and the exact live/local 84-model set comparison; all pass.

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as ready for review September 18, 2026 22:43
@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [possible mistake] providers/zenmux/models/moonshotai/kimi-k2.8-preview.toml:19 - Check: Provider limit overrides must be real host deltas, not context-window copies. Why: The file sets limit.output = 1_048_576, equal to the model context. Lab metadata has no output cap, and the established Kimi Code peer for this model uses 32_768 output. Treating max completion as the full 1M context is very likely wrong and will mislead clients. Action: Verify ZenMux’s actual max output for kimi-k2.8-preview from the host model list/docs and set limit.output to that value (or omit if it matches an inherited/default you can document).
  • [high] [possible mistake] providers/zenmux/models/moonshotai/kimi-k2.8-preview.toml:1 - Check: Relay reasoners that expose thinking side channels should author interleaved like same-host peers. Why: This route adds toggle + effort and cites ZenMux reasoning docs, but omits [interleaved]. On the same provider, kimi-k2.6 and kimi-k3 set field = "reasoning_content", and the Kimi Code peer for K2.8 also does. Missing interleaved understates the host response shape. Action: Add [interleaved] field = "reasoning_content" if ZenMux returns that field, or document why this route differs.
  • [high] [possible mistake] providers/zenmux/models/google/gemini-3.1-flash-lite-image.toml:15 - Check: Output limits after base_model must match the host, not invent a middle value. Why: Lab metadata is output = 4_096; Google first-party overrides to 65_536. ZenMux sets 32_768, which matches neither baseline and looks like a confused merge of image/token limits. Action: Confirm ZenMux’s listed max output for this route and align limit.output (or drop the override if the lab value is correct for this host).
  • [medium] [possible mistake] providers/zenmux/models/anthropic/claude-opus-4.5.toml:19 - Check: Output-limit overrides need host evidence when they cut lab defaults. Why: Lab/base_model resolve to 64_000 output; this PR overrides to 32_000 with no leading comment explaining a ZenMux-only cap (unlike the documented Sonnet 5 / DeepSeek V3.2 overrides). Action: Cite the ZenMux model-list value that caps Opus 4.5 at 32k, or remove the override.
  • [medium] [possible mistake] providers/zenmux/models/openai/gpt-5-pro.toml:13 - Check: Provider limit.output must not silently shrink lab/first-party limits. Why: Lab and OpenAI first-party use 272_000 output; ZenMux overrides to 128_000 without a source comment. Action: Verify against ZenMux’s OpenAI-compatible model list and either keep with a top-of-file citation or drop the override.
  • [medium] [possible mistake] providers/zenmux/models/openai/text-embedding-3-large.toml:9 - Check: Embedding context should match lab/first-party token limits. Why: New lab entries and OpenAI’s provider files use context = 8_191 / output = 3_072 (large) and 1_536 (small). ZenMux overrides context to 8_192 and drops the large/small output distinction, which is a common off-by-one vs the established OpenAI limit. Action: Prefer inheriting lab limits unless ZenMux documents 8192; if overriding, cite the host list and keep correct embedding output dims.
  • [medium] [possible mistake] providers/zenmux/models/google/gemini-embedding-2.toml:7 - Check: Embedding limit.output should not zero out meaningful lab dimensions without cause. Why: Lab metadata has output = 3_072 (max embedding dims). ZenMux sets output = 0 while Google first-party uses a non-zero sentinel. Zero output is inconsistent with the lab fact and peer pattern. Action: Inherit lab output dims, match Google’s host convention, or document why ZenMux needs 0.
  • [medium] [possible mistake] providers/zenmux/models/google/gemini-3.5-flash.toml:12 - Check: Do not invent free cache_write pricing. Why: This PR adds cache_write = 0 while Google first-party omits cache write for the same model and other ZenMux Gemini 3.x Flash entries do not claim free writes. A zero write price is almost certainly incorrect or incomplete. Action: Remove cache_write = 0 unless ZenMux pricing explicitly lists free cache writes; if cache is unsupported, omit the key.
  • [low] [possible mistake] providers/zenmux/models/deepseek/deepseek-v4.1-flash.toml:20 - Check: Pricing should be clearly mapped when it diverges from first-party. Why: DeepSeek first-party Flash is 0.15 / 0.6 input/output (off-peak noted there); ZenMux records 0.075 / 0.3 with a time-of-day caveat. That may be correct for a discounted band, but the values are half the lab catalog and need a direct pricing mapping in the PR/file header. Action: In the leading comment, state which ZenMux price band/API field produced 0.075/0.3/0.0015 (and whether peak rates are omitted intentionally).

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as draft September 18, 2026 22:51
@Alcatraz-Zhang

Copy link
Copy Markdown
Contributor Author

Addressed the second automated review in 0ff0622. Added Kimi K2.8 interleaved.reasoning_content and removed the invalid Gemini Embedding 2 output=0 override. The remaining host limits/prices are exact 2026-09-19 ZenMux catalog values, now recorded in leading source comments: K2.8 max_completion_tokens=1048576, Gemini 3.1 Flash-Lite Image=32768, Claude Opus 4.5=32000, GPT-5 Pro=128000, text-embedding context_length=8192, and Gemini 3.5 Flash 1h cache-write=USD 0/MTok. DeepSeek V4.1 now maps the precise discounted and higher time bands. Validation, migration comparison, diff check, and 84/84 live-set audit pass.

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as ready for review September 18, 2026 22:53
@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [medium] [possible mistake] providers/zenmux/models/deepseek/deepseek-v4-flash.toml:4 - Check: Override-only provider files must keep only real deltas after base_model, including display name when the lab id is a dated snapshot. Why: The route id is still deepseek-v4-flash, but base_model is now deepseek/deepseek-v4-flash-0731, whose lab name is DeepSeek V4 Flash 0731. With no local name, the catalog will surface the dated snapshot name for the undated host id. DeepSeek’s own first-party alias also no longer points at 0731 (it uses deepseek-v4.1-flash). Action: Confirm whether ZenMux still serves the 0731 snapshot; if the undated id is current Flash/V4.1, retarget base_model accordingly and/or set name = "DeepSeek V4 Flash" (and align effort with the chosen lab peer).
  • [medium] [possible mistake] providers/zenmux/models/deepseek/deepseek-v4-pro.toml:4 - Check: Same base_model/name inheritance rule for dated lab targets. Why: base_model = "deepseek/deepseek-v4-pro-0813" inherits lab name DeepSeek V4 Pro 0813 for host id deepseek-v4-pro, while first-party DeepSeek overrides that snapshot to name = "DeepSeek V4 Pro". Action: Keep the 0813 lab target if that is what ZenMux hosts, but add the undated display name (or point at the undated lab entry if that is the intended identity).
  • [medium] [possible mistake] providers/zenmux/models/google/gemini-3-pro-image.toml:5 - Check: Relay reasoning should follow the lab + first-party control surface unless this host truly disables thinking. Why: Lab google/gemini-3-pro-image is reasoning = true, and Google first-party authors effort low/high. This PR forces reasoning = false, which drops reasoning controls for a model peers treat as a reasoner. Action: Verify ZenMux’s live route; if thinking is available, restore reasoning inheritance and author matching reasoning_options (with wire comment). Only keep reasoning = false if the host API actually disables thinking.
  • [medium] [possible mistake] providers/zenmux/models/google/gemma-4-26b-a4b-it.toml:5 - Check: Do not disable reasoning on a relay when the lab/first-party expose a real control. Why: Lab and Google first-party Gemma 4 IT entries are reasoning = true with toggle. Forcing reasoning = false on ZenMux contradicts that baseline. Same pattern on gemma-4-31b-it.toml. Action: Confirm ZenMux’s protocol flags; if thinking can be toggled, drop the false override and set reasoning_options (at least toggle with a leading wire comment). Keep the override only with host-proof that reasoning is unavailable.
  • [medium] [possible mistake] providers/zenmux/models/google/gemini-2.5-flash-image.toml:4 - Check: reasoning = false vs first-party peer shape for the same model. Why: Lab is a reasoner; Google first-party keeps reasoning = true with reasoning_options = [] (always-on / no caller control). ZenMux instead flips reasoning = false, which is a stronger semantic change than “no controls.” Action: Prefer reasoning_options = [] if the model still reasons without caller control; use reasoning = false only if ZenMux truly serves a non-reasoning image route.
  • [medium] [possible mistake] providers/zenmux/models/moonshotai/kimi-k2.7-code.toml:1 - Check: Provider-specific interleaved should match this host’s reasoning side channel when peers/lab routes expose it. Why: This PR adds interleaved.field = "reasoning_content" for Kimi K2.6 / K2.8 / K3 on ZenMux, and Moonshot first-party K2.7 Code (and HighSpeed) also set that field, but ZenMux kimi-k2.7-code and kimi-k2.7-code-highspeed still omit it while keeping reasoning_options = []. Action: Add the same interleaved block on both K2.7 Code routes if ZenMux returns reasoning_content, or document why these two hosts differ from the other ZenMux Kimi reasoners.

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as draft September 18, 2026 23:12
@Alcatraz-Zhang

Copy link
Copy Markdown
Contributor Author

Addressed the third automated review in aedca5a. Added interleaved.reasoning_content to both ZenMux Kimi K2.7 Code routes. Confirmed the undated ZenMux DeepSeek slugs explicitly display the 0731/0813 snapshots, so their dated base models/names are intentional and now documented. Strengthened the four Google host-delta comments with exact live protocol evidence: page supports_reasoning=0, Google thinking=false, and where present OpenAI/Anthropic capabilities.reasoning=false. I did not flip those routes to reasoning=true because that would contradict all live ZenMux list APIs. Validation, migration comparison, diff check, and 84/84 live-set audit pass.

@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as ready for review September 18, 2026 23:14
@github-actions

Copy link
Copy Markdown
Contributor

No actionable findings.

@github-actions github-actions Bot added the reviewer: ready Automated review found no actionable items label Sep 18, 2026
@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as draft September 18, 2026 23:31
@Alcatraz-Zhang
Alcatraz-Zhang marked this pull request as ready for review September 18, 2026 23:33
@github-actions github-actions Bot removed the reviewer: ready Automated review found no actionable items label Sep 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

No actionable findings.

@github-actions github-actions Bot added the reviewer: ready Automated review found no actionable items label Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

reviewer: ready Automated review found no actionable items

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant