Skip to content

feat(v2): migrate Helicone provider files to schema 2 - #10780

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

rekram1-node merged 10 commits into
devfrom
v2-helicone

Conversation

@rekram1-node

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

Copy link
Copy Markdown
Collaborator

Problem

The 90 Helicone files were still v1, and 76 of them restated lab models in full. generate-helicone.ts couldn't be rerun safely. It deleted every file and rewrote it from the registry, which:

  • wiped hand-authored reasoning_options, descriptions and families, so the result failed validation;
  • copied base_model into otherwise full files;
  • would have turned v2 files back into v1.

The data had registry artifacts too:

  • attachment = false on every model, including the 49 with image input;
  • reasoning = false on GPT-5, the o-series and other always-reasoning models, because the registry's parameter lists omit reasoning;
  • generic descriptions, some of them wrong (GPT-5.1: "Image model for prompt-driven generation");
  • float noise in prices (0.30000000000000004).

Change

300932d  fix: attachment = true on the 49 models whose registry input includes images (needed for the migration round trip)
955415b  chore(v2): migrate 90 files (migrate-v2.ts; v1 byte-identical; 15 mid-file comments hoisted)
6e692a9  feat: link 76 standalone files to their labs, drop model facts
00dff89  feat: backfill reasoning controls and Claude 1h cache writes
bebe933  fix: drop float noise from registry prices
756c593  fix(generate-helicone): patch v2 files instead of rewriting them (+ test)

Generator. Existing files are now authored v2 files. The registry only refreshes their price, through the shared patchModelV2, the same path sync uses:

 main
   fetch registry
-  rm every TOML
-  for each model: write full v1 TOML (+ copied base_model)
+  rm only the TOMLs of models the registry no longer lists
+  for each model
+    no file  → newModelToml: registry fields → providerModelToV2 → formatModelV2
+    file     → updatedModelToml:
+                 v1 cost of the file == registry cost (roundPrice) → leave the file byte-identical
+                 else patchModelV2(doc, before, { ...before, cost }) → keeps header, base_model,
+                      capabilities, MIME, 1h cache TTL (scaled); verify the written cost; else skip + warn

No model IDs are hard-coded. main only runs under import.meta.main. The new generate-helicone.test.ts covers float rounding, unchanged files left alone, a price-only patch that keeps the header, reasoning and TTLs, all 90 shipped files reproducing from their own price, and new models written as v2.

Live run against today's registry (reverted, not part of this PR): 22 created, 2 updated, 1 deleted, 87 unchanged.

  • 22 created: new registry models (Claude 4.6, GPT-5.2/5.4, Gemini 3.x, GLM-4.7, Kimi K2.5, gpt-image, …). New files lack description and reasoning controls, as before, so they still need a hand pass.
  • 2 updated: price drift only. deepseek-v3.2 0.27/0.41 → 0.26/0.40, because the registry's endpoint order changed. mistral-small 0.075/0.2 → 75/200: the registry's DeepInfra entry is 1000× off.
  • 1 deleted: gpt-4.1-mini-2025-04-14, which the registry no longer lists.

Linked (76): Claude ×13 (undated IDs → undated labs, -20251001-style IDs → dated labs, 4.0 → -4-0), DeepSeek Reasoner/V3.2, Gemini 2.5 ×3 / 3 Pro Preview, Gemma 3 12B, GLM-4.6, GPT-4.1 ×4 (gpt-4.1-mini-2025-04-14 → gpt-4.1-mini), GPT-4o ×2, GPT-5 ×6, GPT-5.1 ×4, gpt-oss ×2, Grok 4 Fast ×2 / 4.1 Fast ×2 / Code Fast 1, Hermes 2 Pro, Kimi K2 0711/0905/Thinking, Llama 3.1 8B ×3, Llama 3.3 70B ×2, Llama 4 ×2, Prompt Guard 2 ×2, Mistral Large 2411/Nemo/Small, o1/o3/o3-mini/o3-pro/o4-mini, Qwen3 ×7, Sonar ×4.

  • Helicone display names are kept ("Anthropic: Claude Sonnet 4.5").
  • knowledge differs from the lab on most files, because the generator copied the registry's trainingDate, which is really a release date. It is kept as a provider override with an "unsourced" header, per the migration rules.
  • Kinds the lab doesn't take were dropped: image output on GPT-5.1 ×4 and Grok 4.1 Fast Non-Reasoning; image/audio/video input on Qwen3 Coder, Qwen3 30B A3B, Qwen3 235B Thinking, Qwen3 Next and Mistral Nemo.
  • Qwen3 VL keeps a generic video, because the lab cites video support but has no MIME types for it.

Left standalone (14): chatgpt-4o-latest, o1-mini, grok-3, grok-3-mini, grok-4, sonar-reasoning, gemma2-9b-it, llama-guard-4, qwen2.5-coder-7b-fast, deepseek-r1-distill-llama-70b, deepseek-tng-r1t2-chimera, deepseek-v3.1-terminus, ernie-4.5-21b-a3b-thinking (no lab). deepseek-v3 is also left alone: its registry endpoints serve V3.1.

Backfill:

Change Files Source
effort minimal/low/medium/high GPT-5, 5-mini, 5-nano native values within the gateway's reasoning_effort schema (minimal|low|medium|high); OpenAI routes pass it through (reasoning)
effort high GPT-5 Pro same
effort low/medium/high GPT-5 Codex, 5.1, 5.1 Codex, 5.1 Codex Mini, o1, o3, o3-mini, o3-pro, o4-mini same. For GPT-5.1, none is outside the gateway schema.
toggle + budget (min 1,024) Claude 3.7 Sonnet, Haiku 4.5 ×2 Helicone's Anthropic translator → thinking.type / budget_tokens, the same as the other Claude files
reasoning = { supported = true } DeepSeek Reasoner, Kimi K2 Thinking, Grok Code Fast 1, o1-mini (review) always-on reasoning, no control
cache write { "5m", "1h" } 13 Claude files registry Anthropic endpoint cacheMultipliers.write5m / write1h

Mid-conversation flags are unset. Helicone documents none of them, and there was no HELICONE_API_KEY to test with.

v1 changes (all from bun run v1:check, full lists checked)

  • attachment: false → true on 44 (49 set, then 5 Qwen/Mistral files went back to text-only on linking).
  • reasoning false → true + reasoning_options on 20 (table above).
  • modalities: output ["text","image"] → ["text"] on 5. Input → ["text"] on qwen3-coder, qwen3-30b-a3b, qwen3-235b-a22b-thinking, qwen3-next-80b-a3b-instruct and mistral-nemo.
  • Float noise rounded on 38 files (e.g. cache_read 0.30000000000000004 → 0.3). No real price changed.
  • Inherited from labs on the 76 linked files: canonical_model_id 75, open_weights false → true on 28, limit.input on 9 GPT-5.x, lab descriptions, families (gpt-codex → gpt on chat-latest ×2, sonar-deep-research → sonar), and lab release/last_updated dates in place of registry dates (e.g. GPT-5 2025-01-01 → 2025-08-07, o3 2024-06-01 → 2025-04-16).
  • Review round 1: gpt-5-pro tool_call false → true (the registry lists tools). Round 2: o1-mini reasoning (above), and no budget max on the three backfilled Claude files.
  • Follow-up: no v1 family is removed.
    • Labs (separate commit, sourced): family = "grok" on xai/grok-4-fast-reasoning, family = "hermes" on nousresearch/hermes-2-pro-llama-3-8b (Nous Research's Hermes line, same as hermes-4-405b). v1: lab family added on both; novita-ai's Hermes 2 Pro gains hermes; helicone hermes-2-pro llama → hermes.
    • grok-4-fast-non-reasoning and grok-code-fast-1 keep family = "grok" as a provider override; their labs are left to feat(v2): migrate Abacus provider files to schema 2 #10776. The generator keeps these overrides (new test).
  • No models were added or removed, and nothing was renamed.

Out of scope

  • 22 new registry models and the removal of gpt-4.1-mini-2025-04-14. They are left for a generator run plus a hand pass.
  • The mistral-small registry price bug (above) and endpoint-order price drift. The generator takes pickEndpoint's price as before.
  • Left as Helicone's registry says, against the lab: DeepSeek V3.2 and Qwen3 30B A3B reasoning = false (controls on Helicone unknown), GPT-5/5.1 Chat Latest reasoning = false (same as peers), and the tools overrides on DeepSeek Reasoner, Gemma 3 12B, Mistral Nemo, o1 (false) and GPT-5 Chat Latest (true).
  • No status changes: Helicone still lists models whose upstream retired them (chatgpt-4o-latest, o1-mini, Claude 3.5 Sonnet).
  • Web-search, image and audio prices in the registry have no v1 field. The generator never wrote them, and still doesn't.

Verification

  • bun run v1:check: byte-identical after the migration commit (vs its parent). Afterwards, only the changes above.
  • bun validate: passes.
  • bun test: 680 pass / 10 fail. The same 10 fail on dev. bun test packages/core/test/generate-helicone.test.ts: 6 pass.
  • bun run helicone:generate on the final tree: 87 files byte-identical. The other changes are the registry drift listed above, and they were reverted.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [critical] [violation] providers/helicone/models/deepseek-v3.toml:1 - Check: Non-lab hosts must use base_model; if lab file is missing it must be added. Why: Helicone is a relay and did not create DeepSeek V3, models/deepseek/deepseek-v3.toml exists, but the migrated file remains a full standalone v2 definition with no base_model. Same pattern for chatgpt-4o-latest, o1-mini, deepseek-v3.1-terminus, grok-3, grok-4, sonar-reasoning, qwen2.5-coder-7b-fast, ernie-4.5-21b-a3b-thinking, gemma2-9b-it, etc. left untouched by patch 3. Action: Point each to its lab via base_model (adding a complete models/<lab>/<id>.toml when nameable) and strip to override-only; do not ship new full inline relay files.
  • [high] [violation] providers/helicone/models/claude-3-haiku-20240307.toml:4 - Check: Provider base_model files must be override-only; knowledge/dates/family are lab facts, not provider deltas. Why: File keeps knowledge = "2024-03" with header admitting it is unsourced registry trainingDate while lab models/anthropic/claude-3-haiku-20240307.toml:6 is 2023-08-31. Same unsourced knowledge retained on ~70 files to preserve v1 bytes, publishing known-wrong cutoffs. Action: Remove knowledge overrides to inherit the lab value unless a first-party source for a different Helicone-served cutoff is cited; do not preserve registry artifacts as overrides.
  • [high] [violation] packages/core/script/generate-helicone.ts:85 - Check: Standalone generators must preserve/use base_model and not reintroduce legacy full definitions. Why: newModelToml() does formatModelV2(providerModelToV2(heliconeModel(model))) with no lab resolution, so any future registry ID creates a full standalone file even when a lab entry exists, recreating the 76-file problem this PR fixes. Action: Resolve base_model for new IDs (normalized match against models/) and emit base_model + overrides only; skip/fail closed with a notice when no lab resolves instead of writing full inline.
  • [high] [possible mistake] providers/helicone/models/o1.toml:11 - Check: Provider capability overrides must reflect this host, not registry supportedParameters gaps. Why: File keeps tools = { supported = false } while lab models/openai/o1.toml:14 and native providers/openai/models/o1.toml:15 both have tools = { supported = true }; same for gpt-5-pro (Helicone false vs lab/native true). Helicone OpenAI routes pass native shapes through, so false looks like a registry artifact that would incorrectly strip tool use. Action: Verify live Helicone behavior for these routes; inherit tools from base unless Helicone docs/live test proves it is unsupported, otherwise remove the override.
  • [high] [possible mistake] providers/helicone/models/claude-4.5-haiku.toml:14 - Check: Relay reasoning controls must copy lab + same-surface peers; budget_tokens bounds must be verified, never derived from limit.output/context. Why: File sets reasoning = { supported = true, toggle = true, budget = { min = 1_024, max = 8_191 } } with [limit] output = 8_192 (max = output-1); same output-1 pattern on 63_999/64_000 and 31_999/32_000 files, while native providers/anthropic/models/claude-haiku-4-5.toml:7 is budget = { min = 1_024 } with no toggle and no max. Added toggle + max beyond baseline is unverified. Action: Confirm Helicone Anthropic wire controls and real max bounds from Helicone/Anthropic docs or live tests; copy native/peer shape (budget-only min when that is all that is verified) and remove invented max/toggle or cite the source.
  • [medium] [possible mistake] providers/helicone/models/claude-3-haiku-20240307.toml:8 - Check: Provider modality narrowing must be a real serving delta, not a registry vocabulary gap. Why: File narrows to input = ["text", "image/jpeg", "image/png", "image/gif", "image/webp"] while lab is ["text", "image/jpeg", "image/png", "image/gif", "image/webp", "application/pdf"]; registry only lists generic image, so pdf loss is not evidence Helicone drops PDFs. Action: Verify whether Helicone Anthropic routes accept PDFs; inherit modalities if they do, otherwise cite Helicone evidence for the narrower list.

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Review round 1:

  • gpt-5-pro tools: fixed. It now inherits true, because the registry lists tools/tool_choice for it. v1 change: tool_call false → true. o1 keeps false: Helicone's only o1 endpoint (pa/p1) lists just max_tokens.
  • Generator, new IDs: not changed. Matching registry IDs to labs by name would be guessing, which the migration rules don't allow. New files stay standalone, as they were before this PR, and the script now prints a reminder to link them by hand.
  • Unsourced knowledge overrides: kept on purpose. The migration rules keep existing unsourced knowledge as provider overrides with an "unsourced" header, so v1 doesn't change. Cleaning them up can be a follow-up.
  • Claude toggle + budget.max: kept. It matches the Claude files already in this provider. Their headers cite Anthropic: thinking.type is enabled or disabled, and manual budget_tokens must be ≥1024 and below max_tokens. Helicone's Anthropic translator sends both fields.
  • Claude without PDF / other standalone files: kept. The narrower modality lists are what v1 already published from Helicone's registry. The standalone files have no lab with a clear identity (deepseek-v3's endpoints actually serve V3.1).

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [critical] [violation] providers/helicone/models/deepseek-v3.toml:1 - Check: Non-lab hosts must use base_model; missing lab metadata must be added. Why: Helicone is a multi-model relay, but ~14 files remain full standalone v2 definitions after migration (e.g. deepseek-v3 where models/deepseek/deepseek-v3.toml exists, plus chatgpt-4o-latest, grok-3, grok-4, grok-3-mini, llama-guard-4, o1-mini, qwen2.5-coder-7b-fast, gemma2-9b-it, ernie-4.5-21b-a3b-thinking, deepseek-r1-distill-llama-70b, deepseek-tng-r1t2-chimera, deepseek-v3.1-terminus, sonar-reasoning). Full inline third-party definitions are only allowed for unique-to-host aliases. Action: Point each to its lab via base_model and add complete models/<lab>/<model>.toml entries where missing; retain standalone only with justification that the ID is unique to Helicone.
  • [high] [violation] providers/helicone/models/claude-3.7-sonnet.toml:1 - Check: Provider files must keep only real deltas; knowledge is a lab fact. Why: All linked files keep knowledge from the registry trainingDate with a comment admitting it is unsourced and contradicts the lab (e.g. Helicone 2025-02 vs models/anthropic/claude-3-7-sonnet-20250219.toml 2024-10-31; same pattern for gpt-5 2025-01 vs lab 2024-09-30, claude-haiku-4-5 2025-10 vs lab 2025-02-28). Knowledge cutoff cannot differ by host. Action: Delete knowledge and its leading comment from all base_model files to inherit the lab value; only keep with first-party source if Helicone truly documents a different cutoff.
  • [high] [violation] providers/helicone/models/claude-3.7-sonnet.toml:16 - Check: Reasoning budget bounds must be verified, never derived from limit.output/context; baseline is lab + same-surface peers. Why: Helicone adds toggle = true, budget = { min = 1_024, max = 63_999 } (and 8_191/31_999 elsewhere) where first-party providers/anthropic/models/* use only budget = { min = 1_024 } with no toggle/no max. max equals limit.output - 1 in every case, which .opencode/skills/audit-reasoning-options/SKILL.md forbids. Action: Drop invented max and toggle to match the lab baseline (budget = { min = 1_024 }) unless Helicone docs prove a separate on/off field and a verified model-specific max.
  • [high] [possible mistake] providers/helicone/models/gpt-5-chat-latest.toml:12 - Check: Relay reasoning must copy the underlying model’s controls, not registry supportedParameters absence. Why: Helicone leaves reasoning = { supported = false } while labs say supported = true (models/openai/gpt-5-chat-latest.toml, models/openai/gpt-5.1-chat-latest.toml, models/deepseek/deepseek-v3.2.toml hybrid-reasoning), and o1-mini.toml stays false while siblings o1/o3/o3-mini/o4-mini were backfilled to true with effort = ["low","medium","high"]. PR body admits reasoning = false is a registry artifact. Action: Verify each against lab + OpenAI/DeepSeek first-party entries and backfill reasoning = { supported = true, effort = [...] } with Helicone wire comment, or prove Helicone disables reasoning on those routes.
  • [medium] [violation] providers/helicone/models/deepseek-reasoner.toml:8 - Check: Override-only provider files must not restate identical inherited values. Why: Always-on files keep reasoning = { supported = true } identical to their labs (e.g. deepseek-reasoner vs models/deepseek/deepseek-reasoner.toml, grok-code-fast-1 vs models/xai/grok-code-fast-1.toml, kimi-k2-thinking, qwen3-235b-a22b-thinking where tools = false is the real delta). Action: Delete identical reasoning = { supported = true } lines and keep only genuine deltas (tools, limit, modalities, cost).
  • [medium] [possible mistake] packages/core/script/generate-helicone.ts:8756 - Check: Sync/generator must preserve validation and not create incomplete catalog entries. Why: newModelToml(heliconeModel(m)) omits description (and base_model), so a future registry ID creates a v2 file without required resolved description that fails validation until a hand pass; PR only logs a message. Action: Resolve base_model against models/ and skip/fail closed with a notice when no lab matches or description is missing, instead of writing an invalid standalone file.
  • [low] [possible mistake] .pr-review/pull-request.json:4 - Check: Data-changing PRs should cite direct provider sources mapped to claims. Why: Material changes (Claude 1h cache-write prices, new effort/budget sets, narrowed limit/modalities, float rounding) cite only the Helicone registry generally with no per-claim pricing/docs/API references in the PR body to review against. Action: Add first-party citations stating what each supports (e.g. Helicone Anthropic cacheMultipliers, Helicone reasoning docs, OpenAI/Anthropic/Google thinking docs for effort/budget).

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Review round 2:

  • o1-mini: fixed. It now has reasoning = { supported = true } with no control: it always reasons and doesn't take reasoning_effort. v1: reasoning false → true, with reasoning_options = [].
  • Claude budget max: fixed on the three files this PR backfilled (3.7 Sonnet, Haiku 4.5 ×2). They now have budget = { min = 1_024 } with no cap derived from the output limit. The six Claude files that already had caps are unchanged.
  • gpt-5(.1)-chat-latest / deepseek-v3.2 reasoning = false: kept. Chat Latest matches every other host. DeepSeek V3.2's on/off controls through Helicone's upstreams (CanopyWave, Novita, Baseten) aren't documented.
  • Plain reasoning = { supported = true }: kept. v1 needs reasoning_options when reasoning is true, and this line gives [].
  • Knowledge overrides, standalone files, generator for new IDs: same as round 1. The migration rules keep unsourced knowledge as overrides. Matching lab names would be a guess. New registry files were standalone before this PR too, and the generator isn't part of CI.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/helicone/models/claude-3-haiku-20240307.toml:1 - Check: Override-only base_model files must keep only provider-specific fields and real deltas. Why: This file and ~70 peers retain knowledge from the v1 registry trainingDate that contradicts the lab (here 2024-03 vs models/anthropic/claude-3-haiku-20240307.toml:6 2023-08-31; same pattern 2025-10 vs 2025-02-28 on haiku-4-5, 2025-01 vs 2024-05-30 on gpt-5-mini, etc., with comments admitting “unsourced”). The override publishes wrong knowledge in v1 instead of inheriting the lab. Action: Delete the retained knowledge line (and its comment) in all linked files so knowledge inherits from base_model; only keep it where Helicone-served knowledge is proven different with a citation.
  • [high] [violation] providers/helicone/models/gemini-2.5-flash.toml:11 - Check: Do not restate identical [modalities] and do not narrow lab modalities without proof the host blocks them. Why: Lab models/google/gemini-2.5-flash.toml:10-40 serves image+audio+video+application/pdf; the Helicone override keeps only text+image MIME types. Same loss on Anthropic files (application/pdf dropped, e.g. claude-3-haiku-20240307 input omits application/pdf present in lab :10) and GPT files. A gateway passthrough should inherit; the narrowed list hides pdf/audio/video support in v1. Action: Remove the [modalities] table from these base_model files to inherit the lab, or cite Helicone docs/live rejection proving the narrower set is a real serving delta.
  • [high] [violation] providers/helicone/models/claude-4.5-haiku.toml:15 - Check: Provider deltas must be real serving differences, not registry artifacts. Why: File keeps [limit] output = 8_192 while lab models/anthropic/claude-haiku-4-5.toml:22 is 64_000; similarly gpt-oss-120b keeps 131_072 vs lab 32_768, and gemini-2.5-flash-lite keeps 65_535 vs lab 65_536 (off-by-one). These are maxOutput/contextLength copies from the registry, not verified Helicone caps, and they cap/expand v1 output incorrectly. Action: Delete unverified [limit] overrides to inherit the lab; only keep a limit override with a Helicone-specific source or live cap, and fix the off-by-one to inherit.
  • [high] [violation] providers/helicone/models/gpt-5-chat-latest.toml:10 - Check: Correctness of reasoning and required reasoning_options on relays. Why: Lab models/openai/gpt-5-chat-latest.toml:15 is reasoning = { supported = true } (tools false), but the Helicone base_model file keeps tools = { supported = true } and reasoning = { supported = false }. Same miss on gpt-5.1-chat-latest.toml (lab reasoning true, provider keeps false). The PR backfilled GPT-5/o-series but missed these, leaving always-reasoning models marked non-reasoning. Action: Correct reasoning to supported = true with the native effort list for these IDs (matching providers/openai peers intersected with Helicone’s reasoning_effort set) and drop the incorrect tools override, or prove with Helicone/OpenAI evidence that these routes do not reason.
  • [high] [violation] providers/helicone/models/o1-mini.toml:1 - Check: Non-lab hosts must use base_model; if the lab file is missing it must be added. Why: PATCH 8 flips o1-mini to reasoning = { supported = true } but leaves it a standalone v2 file with no base_model, and models/openai/o1-mini.toml does not exist. Helicone did not create the model, so a full inline definition is not allowed under the unique-to-host exception. Action: Add complete models/openai/o1-mini.toml lab metadata and point this file at it with override-only fields (or justify a private-alias exception with evidence).
  • [medium] [possible mistake] packages/core/script/generate-helicone.ts:8736 - Check: Generator must not recreate known registry artifacts. Why: heliconeModel() derives reasoning solely from supportedParameters including reasoning/include_reasoning, but the PR body states the registry omits that param for GPT-5/o-series/always-reasoning models. New models will therefore be created as reasoning = false again, requiring the same hand backfill. The added log line does not prevent committing wrong data. Action: Make newModelToml fail closed / warn loudly when reasoning cannot be determined (e.g. refuse to write a non-reasoning default for OpenAI o/GPT-Codex families or require explicit review), and add a test for a registry row without reasoning params that must not default to false.

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Review round 3: no data changes this round.

  • Narrower modalities and host limits (Claude/GPT without PDF, Gemini 2.5 without audio/video, Haiku 4.5 8,192, gpt-oss 131,072, Flash Lite 65,535): kept. They are what v1 already published from Helicone's own registry (inputModalities, maxOutput). The migration keeps v1 stable unless a source says otherwise, and we have no key to test Helicone's real caps.
  • gpt-5(.1)-chat-latest: kept, as in round 2. The Helicone registry lists tools for both and no reasoning parameter, and other hosts also say non-reasoning.
  • o1-mini lab: not added. OpenAI retired o1-mini, and this PR doesn't add labs for single-host legacy aliases.
  • Generator reasoning default: not changed. New files were registry-derived before this PR too. The script now says they need a hand pass, and it isn't part of CI or the hourly sync.
  • Knowledge overrides: kept under the migration rule, as in rounds 1 and 2.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/helicone/models/deepseek-v3.toml:1 - Check: Non-lab hosts must use base_model. Why: Helicone is a multi-model gateway, models/deepseek/deepseek-v3.toml exists, but the file stays a full standalone schema = 2 definition after migration with no base_model. Action: Factor to base_model = "deepseek/deepseek-v3" keeping only cost and real deltas.
  • [high] [violation] providers/helicone/models/o1-mini.toml:2 - Check: Missing lab metadata must be added when the lab model is nameable. Why: o1-mini is an OpenAI lab model with no models/openai/o1-mini.toml, yet the file remains standalone and was edited for reasoning in this PR instead of being factored. Action: Add a complete models/openai/o1-mini.toml lab file then point the Helicone file at it with base_model.
  • [medium] [violation] providers/helicone/models/grok-code-fast-1.toml:7 - Check: base_model files must be override-only; family is a lab fact. Why: Adds family = "grok" on the provider while models/xai/grok-code-fast-1.toml lacks it; the same PR correctly adds family to the lab for grok-4-fast-reasoning instead. Same pattern on grok-4-fast-non-reasoning.toml. Action: Move family = "grok" to models/xai/grok-code-fast-1.toml and models/xai/grok-4-fast-non-reasoning.toml and drop it from the provider files.
  • [medium] [violation] providers/helicone/models/claude-3-haiku-20240307.toml:5 - Check: After base_model keep only provider-specific fields and real deltas. Why: Keeps knowledge = "2024-03" from the registry trainingDate with a header admitting it is unsourced versus lab 2023-08-31; this pattern repeats across factored files and contradicts the lab. Action: Drop the knowledge override to inherit the lab, listing the v1 change as a sourced lab fix, unless Helicone-specific evidence for a different cutoff is provided.
  • [medium] [possible mistake] providers/helicone/models/claude-3-haiku-20240307.toml:8 - Check: [modalities] overrides must reflect a real host limitation. Why: Narrows input to ["text", "image/jpeg", "image/png", "image/gif", "image/webp"] without application/pdf while the lab includes pdf; the registry coarse ["text","image"] cannot prove Helicone lacks pdf and provider.toml documents rebuilding native Anthropic payloads. Action: Verify Helicone pdf support on Anthropic routes and drop the [modalities] override to inherit the lab if supported, otherwise cite Helicone docs/live behavior for the exclusion.

@rekram1-node

Copy link
Copy Markdown
Collaborator Author

Follow-up review: the only new point is family = "grok" on grok-code-fast-1 and grok-4-fast-non-reasoning. Keeping it as a provider override is deliberate: #10776 (open) adds family = "grok" to exactly those two xAI lab files, so editing them here would conflict. The overrides can be dropped once #10776 lands. Every other item was answered in rounds 1–3: deepseek-v3 serves V3.1 on its registry endpoints; o1-mini is a retired single-host alias; knowledge and modalities are kept as v1 published them.

@rekram1-node
rekram1-node enabled auto-merge (squash) October 21, 2026 16:12
@rekram1-node
rekram1-node disabled auto-merge October 21, 2026 16:12
@rekram1-node
rekram1-node merged commit be45ccf into dev Oct 21, 2026
2 checks passed
@rekram1-node
rekram1-node deleted the v2-helicone branch October 21, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant