Skip to content

feat(v2): migrate Abacus provider files to schema 2 - #10776

Merged
rekram1-node merged 10 commits into
devfrom
v2-abacus
Oct 21, 2026
Merged

rekram1-node merged 10 commits into
devfrom
v2-abacus

Conversation

@rekram1-node

@rekram1-node rekram1-node commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The 108 Abacus (RouteLLM) files were still v1. 30 were standalone even though most have a lab entry. 40 ids are no longer in the RouteLLM catalog, 16 prices had drifted, and two files had an attachment that contradicted their modalities.

Change

providers/abacus/models (108, all schema 2)
├── mechanical migration     106 → schema 2, v1 byte-identical (own commit)
├── linked to labs            23 standalone files → base_model (+ kimi-k2.5, Qwen3.6-27B migrated here)
├── exact MIME                65 files (lab entries in place of generic image/audio/video/pdf)
├── status = deprecated       40 ids missing from /v1/models
├── prices                    16 files, from /v1/models
└── lab-identical limits/modalities dropped on 61 base_model files (v1 unchanged)

Source (accessed 2026-10-21): https://routellm.abacus.ai/v1/models (public; rates, modalities, thinking, context). There was no ABACUS_API_KEY, so there were no live probes.

Step Detail
Mechanical refusals kimi-k2.5: attachment = false with image/video input. Qwen/Qwen3.6-27B: inherited attachment = true while RouteLLM lists text-only input. Fixed in the link commit: kimi follows its modalities (true), and Qwen3.6-27B is now explicitly text-only (false).
Linked (23) claude-3-7-sonnet / opus-4 / opus-4-1 / sonnet-4 (dated ids), DeepSeek-R1, DeepSeek-V3.2, deepseek-v3.1, gemini-3.1-flash-lite-preview, gpt-4o-2024-11-20, gpt-5.1/5.2/5.3-chat-latest, gpt-5.1-codex-max, grok-4-fast-non-reasoning, grok-code-fast-1, kimi-k2.5, qwen3-max, Qwen3-235B-A22B-Instruct-2507, QwQ-32B, Meta-Llama-3.1-8B-Instruct, llama-3.3-70b-versatile → meta/llama-3.3-70b-instruct, qwen-2.5-coder-32b → alibaba/qwen2.5-coder-32b-instruct, gpt-5.3-codex-xhigh → openai/gpt-5.3-codex (pinned to xhigh effort; display name kept). Host display names, descriptions, limits, modalities and prices stay as overrides. Differing knowledge values are kept and marked unsourced.
Not linked route-llm (router), grok-4-0709, grok-4-1-fast-non-reasoning, DeepSeek-V3.1-Terminus, Meta-Llama-3.1-405B-Instruct-Turbo, kimi-k2-turbo-preview, Qwen2.5-72B-Instruct (no lab entry). All but route-llm are retired.
MIME base_model files keep RouteLLM's narrower kinds (e.g. no PDF), using the lab's MIME list for each kind. route-llm uses JPEG/PNG, which all four routed models accept. The grok standalone files use xAI's JPEG/PNG.
Deprecated (40) Every file whose id is absent from /v1/models. Most of their headers cite that same endpoint as their source, so these are removals (e.g. DeepSeek-V4-Flash/Pro → the -0731/-0813 ids, gpt-5.1-codex, claude-opus-4-1).
Prices (16) claude-sonnet-5 2/10, gemini-3.6-flash 0.75/3.75/0.075, gpt-5.6-luna 0.2/1.2/0.02, -sol 4/20/0.4, -terra 2/12/0.2, o3-pro output 80, gpt-oss-120b 0.037/0.17, Qwen3-32B 0.08/0.28, Qwen3-Coder-480B 0.38/1.55, GLM-4.6 0.55, GLM-5.1 1.38, gpt-5.3-codex cache 0.175, Kimi-K2.6 cache 0.16, grok-4.5 / qwen3.8-max cache added, route-llm 2/10/0.1. The # RouteLLM *_rate header lines are updated to match.

Mid-conversation flags stay unset because RouteLLM documents none, and nothing was tested live.

v1 changes

  • status = "deprecated" on 40.
  • Lab facts inherited on the 23 links: canonical_model_id 23, knowledge added 11, release/last-updated dates on 15, family on 3 (gpt-5.1-codex-max and gpt-5.3-codex-xhigh → gpt-codex; gemini-3.1-flash-lite-preview → gemini-flash-lite). grok-4-fast-non-reasoning and grok-code-fast-1 keep grok, because the xAI labs now carry it (separate commit).
  • xAI labs grok-4-fast-non-reasoning and grok-code-fast-1 gain family = "grok", matching the other xAI Grok labs (https://docs.x.ai/developers/models). This is additive in v1 for their other hosts too: family added on edenai and aimlapi grok-4-fast-non-reasoning.
  • attachment: kimi-k2.5 false → true, Qwen3.6-27B true → false.
  • reasoning true → false (reasoning_options removed) on Qwen3-235B-A22B-Instruct-2507 (the non-thinking release) and gpt-5.3-chat-latest. Both now inherit their labs.
  • cost on the 16 price files above (cache_read added on 3).
  • gemini-3.1-flash-lite-preview: modalities.input reordered to the lab's order (same set). It now inherits the lab instead of restating it.
  • No models added to or removed from v1. No name or limit changes.

Out of scope / needs discussion

  • route-llm bills each request at the model it resolves to; the listed rate is Sonnet 5's (the most expensive). v2 can't express this.
  • 2 files keep generic modalities: gpt-4o-2024-11-20 (audio, which isn't in the lab) and grok-code-fast-1 (image; the xAI lab is text-only). Both are retired.
  • Limits are left alone where RouteLLM differs (e.g. qwen3.8-max context, muse-spark-1.1 output).
  • New catalog models (32 text_generation ids, e.g. claude-opus-5-5, gpt-6-, gemini-3.8-flash, grok-4.7, GLM-5.3, DeepSeek-V4--0731/0813), plus 87 image/video/audio/classification models, aren't added.
  • No sync module exists. The public /v1/models has rates, modalities, thinking, api_formats and context, so one is feasible. Its many *_rate keys for media models need per-type units.

Verification

  • bun packages/core/script/migrate-v2.ts provider abacus: 106 migrated (2 refused, handled above); bun run v1:check byte-identical on that commit.
  • bun run v1:check on the branch: only the changes listed above, 0 models added/removed. MIME and dedupe commits are byte-identical in v1.
  • bun validate: passes.
  • bun test: 674 pass / 10 fail, the same 10 that fail on dev.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/abacus/models/gpt-5.3-codex-xhigh.toml:1 - Check: Non-lab hosts must use base_model; full inline definitions are allowed only for first-party or unique-to-host models. Why: This ID is GPT-5.3 Codex at xhigh effort with models/openai/gpt-5.3-codex.toml present, yet the file stays fully standalone duplicating lab name/description/limits/modalities. Action: Convert to base_model = "openai/gpt-5.3-codex" keeping only display name, status, cost and real deltas.
  • [high] [violation] providers/abacus/models/Qwen/Qwen2.5-72B-Instruct.toml:1 - Check: Provider did not create the model so must use base_model, adding models/<lab>/<model>.toml when missing. Why: Alibaba Qwen instruction model remains fully standalone with no models/alibaba/qwen2.5-72b-instruct.toml added in this PR. Action: Add a complete lab file under models/alibaba/ and point this file at it with override-only fields.
  • [high] [possible mistake] providers/abacus/models/qwen3-max.toml:5 - Check: Provider reasoning must match lab unless host exposes a different control with evidence. Why: Lab models/alibaba/qwen3-max.toml has reasoning.supported = false while this file retains reasoning = { supported = true } with no thinking source in its header. Action: Verify against RouteLLM thinking/docs; if not a reasoner on this host inherit false, otherwise cite the wire evidence in the leading comment.
  • [high] [possible mistake] providers/abacus/models/Qwen/Qwen3-235B-A22B-Instruct-2507.toml:5 - Check: Same reasoning-inheritance check. Why: Lab models/alibaba/qwen3-235b-a22b-instruct-2507.toml is reasoning.supported = false while the provider retains supported = true with no thinking evidence. Action: Verify and either drop the override to inherit false or cite host thinking evidence.
  • [high] [possible mistake] providers/abacus/models/gpt-5.3-chat-latest.toml:5 - Check: Provider limits/modalities/reasoning must be real host deltas, not stale larger values. Why: Lab models/openai/gpt-5.3-chat-latest.toml is context = 128_000 and reasoning.supported = false, while the provider retains context = 400_000 and supported = true with no RouteLLM limit/thinking source. Action: Verify served context and thinking; drop to inherit lab values unless Abacus documentation proves the larger/reasoning delta.
  • [medium] [possible mistake] providers/abacus/models/llama-3.3-70b-versatile.toml:5 - Check: Same delta check for output limits. Why: Lab models/meta/llama-3.3-70b-instruct.toml is output = 4_096 while the provider retains output = 32_768 (8x larger) with no max_completion_tokens source in the header. Action: Verify served output cap and either cite it or drop the override to inherit the lab value.

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Review round 1:

  • gpt-5.3-codex-xhigh: now linked to openai/gpt-5.3-codex with only the display name, status, price and real deltas. v1 gains canonical_model_id and family gpt → gpt-codex (PR body updated).
  • Qwen2.5-72B-Instruct: declined. The id is retired (absent from RouteLLM's catalog, now status = "deprecated"), and the playbook only asks for a new lab when it's needed. A lab for a retired route isn't.
  • qwen3-max, Qwen3-235B-A22B-Instruct-2507, gpt-5.3-chat-latest (reasoning/context), llama-3.3-70b-versatile (output): declined. These are the files' existing v1 values, kept as host overrides so linking doesn't change them. All four ids are retired, so RouteLLM can't confirm or refute them now. Changing v1 for retired routes without a source isn't a sourced correction.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [possible mistake] providers/abacus/models/Qwen/Qwen3.6-27B.toml:9 - Check: Provider capabilities.reasoning must match this host's serving, not just the lab. Why: The file header states RouteLLM API does not report thinking: true for this ID yet retains [capabilities] reasoning = { supported = true } inheriting models/alibaba/qwen3.6-27b.toml (supported = true). One of the two claims is wrong for Abacus. Action: Verify against https://routellm.abacus.ai/v1/models thinking flag/live probe whether Abacus serves this ID as a reasoner; set supported = false if host does not reason, or remove the contradictory header comment if host does.
  • [high] [possible mistake] providers/abacus/models/grok-code-fast-1.toml:4 - Check: Genuine host deltas vs stale carried-forward values when linking to base_model. Why: models/xai/grok-code-fast-1.toml has modalities.input = ["text"], reasoning.supported = true, limit.output = 10_000; the linked Abacus file keeps modalities.input = ["text", "image"], reasoning = { supported = false }, limit.output = 16_384 with no RouteLLM citation in the file to support adding image or disabling reasoning. Action: Provide RouteLLM modalities/thinking evidence for the image-add and reasoning-off deltas, or drop those overrides to inherit the lab.
  • [high] [violation] providers/abacus/models/gpt-4o-2024-11-20.toml:5 - Check: Override-only base_model files must not keep unsourced lab-fact overrides and must use exact MIME types. Why: models/openai/gpt-4o-2024-11-20.toml has knowledge = "2023-09" and image-only exact input; the Abacus file keeps knowledge = "2024-10" with comment unsourced host value kept and input = ["text", "image/jpeg", "image/png", "image/gif", "image/webp", "audio"] with generic audio. Knowledge is a lab fact and generic audio violates the v2 exact-MIME rule. Action: Drop knowledge to inherit the lab unless first-party evidence is cited, and either drop modalities to inherit or replace generic audio with exact audio MIME(s) evidenced from RouteLLM/lab docs.
  • [medium] [violation] providers/abacus/models/gemini-3.1-flash-lite-preview.toml:6 - Check: After base_model, drop lab-identical [modalities]/[limit]. Why: models/google/gemini-3.1-flash-lite-preview.toml already lists the full exact set (images + audio/wav…audio/webm + video/mp4…video/3gpp + application/pdf); the Abacus file restates the same set reordered, which is redundant and preserves v1 output by duplication. Action: Delete the identical [modalities] block to inherit the lab; keep it only if Abacus serves a verified subset, with RouteLLM evidence.
  • [medium] [possible mistake] providers/abacus/models/gpt-5.1-chat-latest.toml:1 - Check: Do not preserve stale display/knowledge facts as fake host deltas. Why: models/openai/gpt-5.1-chat-latest.toml is GPT-5.1 Chat / Chat-tuned GPT-5.1… / context = 128_000; the Abacus file keeps GPT-5.1 Chat Latest / old description / context = 400_000, and providers/abacus/models/gpt-5.2-chat-latest.toml similarly keeps knowledge = "2024-09-30" vs lab 2025-08-31 marked unsourced host value kept. RouteLLM /v1/models supplies rates/modalities/context, not display strings/knowledge. Action: Drop name/description/knowledge overrides that are not evidenced host display differences and inherit the lab; keep only verified serving deltas (limit, cost, status).
  • [medium] [possible mistake] providers/abacus/models/Qwen/QwQ-32B.toml:2 - Check: status = "deprecated" requires authoritative lifecycle evidence. Why: 40 IDs are marked deprecated solely for absence from https://routellm.abacus.ai/v1/models (accessed 2026-10-21) with PR-stated no ABACUS_API_KEY, no live probes. Absence from a single unauthenticated listing can be scoping/pagination/rename, not retirement. Action: Verify a sample of deprecated IDs (e.g. dated Claude/GPT snapshots, DeepSeek-V4-Flash/Pro, gemini-3-pro-image-preview) are truly unserved or re-scope to retain without deprecated until authenticated/live confirmation.

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Review round 2:

  • gemini-3.1-flash-lite-preview: the [modalities] block is dropped, so it inherits the lab. v1 only changes the order (same set); listed in the PR body.
  • Deprecated (40): kept. /v1/models is the full catalog: 187 entries with no pagination (?limit=1000&page=2 returns the same 187), and it includes old ids like gpt-4o, gpt-4.1-nano and o3-mini. Most of the 40 files cite this same endpoint in their headers as the source they were created from, so their absence is a removal. Some ids were replaced by successors that appear in the list (DeepSeek-V4-Flash/Pro → -0731/-0813). Without a key there's nothing stronger to check.
  • Qwen3.6-27B reasoning: declined. The header line records that RouteLLM has no thinking control for this id. The 2026-07-10 audit (c7bdba27d) keeps reasoning = true from the base model in that case. It isn't a contradiction.
  • gpt-4o-2024-11-20 / gpt-5.2-chat-latest knowledge: kept. The migration rules keep existing unsourced knowledge values as provider overrides with an "unsourced" comment. Generic audio on gpt-4o-2024-11-20 stays: the lab has no audio MIME to copy, and the id is retired.
  • gpt-5.1-chat-latest name/description, grok-code-fast-1 modalities/reasoning/output: kept. Host display names stay (v1 names must not change), and the rest are the files' existing v1 values on retired ids, which can't be re-verified.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [medium] [violation] providers/abacus/models/gpt-4o-2024-11-20.toml:5 - Check: Provider base_model files must be override-only; knowledge is a lab fact inherited from models/. Why: File keeps knowledge = "2024-10" while models/openai/gpt-4o-2024-11-20.toml is "2023-09", with a comment admitting it is an unsourced host value. Knowledge cutoff cannot differ by host. Action: Drop the knowledge override to inherit the lab value, or provide lab-authoritative evidence the lab entry is wrong.
  • [medium] [violation] providers/abacus/models/gpt-5.2-chat-latest.toml:6 - Check: Provider base_model files must be override-only; knowledge is a lab fact inherited from models/. Why: File keeps knowledge = "2024-09-30" while models/openai/gpt-5.2-chat-latest.toml is "2025-08-31", with a comment admitting it is an unsourced host value kept as override. Action: Drop the knowledge override to inherit the lab value, or provide lab-authoritative evidence the lab entry is wrong.
  • [high] [possible mistake] providers/abacus/models/Qwen/Qwen3-235B-A22B-Instruct-2507.toml:8 - Check: Resolved provider capabilities must be consistent with the linked lab unless host-serving evidence justifies an override. Why: File sets [capabilities] reasoning = { supported = true } while models/alibaba/qwen3-235b-a22b-instruct-2507.toml is reasoning = { supported = false }; peer base_model overlays (e.g. DeepInfra, Cortecs) inherit false with no override. Action: Verify RouteLLM thinking for this ID and lab docs; drop the override to inherit false if the host does not actually expose reasoning.
  • [high] [possible mistake] providers/abacus/models/gpt-5.3-chat-latest.toml:8 - Check: Resolved provider capabilities must be consistent with the linked lab unless host-serving evidence justifies an override. Why: File sets reasoning = { supported = true } while models/openai/gpt-5.3-chat-latest.toml is reasoning = { supported = false }; peer overlays (Opper, Merge Gateway) inherit false with no override. Action: Verify RouteLLM thinking for this ID and lab docs; drop the override to inherit false if the host does not actually expose reasoning.

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Review round 3:

  • Qwen3-235B-A22B-Instruct-2507, gpt-5.3-chat-latest: fixed. Both drop the reasoning override and inherit their labs (false). Instruct-2507 is Qwen's non-thinking release; the old true had no RouteLLM source. v1: reasoning true → false, reasoning_options removed (PR body updated).
  • knowledge on gpt-4o-2024-11-20 / gpt-5.2-chat-latest: kept, as in round 2. The migration rules for this series keep existing unsourced knowledge values as provider overrides, with an "unsourced" header comment, rather than silently changing v1. Fixing the value belongs in a separate, sourced change.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [medium] [possible mistake] providers/abacus/models/qwen3-max.toml:9 - Check: Provider reasoning must match the lab when the host adds no reasoning capability. Why: This file keeps [capabilities] reasoning = { supported = true } while models/alibaba/qwen3-max.toml declares reasoning = { supported = false }, and the file is status = "deprecated" with no RouteLLM thinking source in its header — the same pattern fixed for Qwen3-235B-A22B-Instruct-2507 and gpt-5.3-chat-latest in PATCH 9/9. A non-reasoning lab model cannot gain reasoning on a relay with no reasoning wire field. Action: Verify against Alibaba/RouteLLM docs whether Abacus qwen3-max reasons; if not, drop the [capabilities] reasoning override to inherit false like PATCH 9/9 did, with a leading comment citing the source.
  • [medium] [possible mistake] providers/abacus/models/grok-code-fast-1.toml:13 - Check: Provider reasoning must match the lab when the host does not disable reasoning. Why: This file keeps reasoning = { supported = false } while models/xai/grok-code-fast-1.toml declares reasoning = { supported = true }, and the file is status = "deprecated" with no RouteLLM thinking: False source in its header. The retained description still mentions reasoning, and providers/abacus/provider.toml documents no host reasoning toggle/effort field that would justify a host-specific disable. Action: Verify against xAI/RouteLLM docs whether Abacus grok-code-fast-1 reasons; if it does, drop the reasoning = { supported = false } override to inherit true (which translates to reasoning_options = [] for this no-control host), with a leading comment citing the source.

@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 Oct 21, 2026
@rekram1-node
rekram1-node merged commit 2e8245d into dev Oct 21, 2026
2 checks passed
@rekram1-node
rekram1-node deleted the v2-abacus branch October 21, 2026 15:54
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