Skip to content

feat(verathos): add Verathos sync module - #10666

Draft
roykollensvendsen wants to merge 2 commits into
anomalyco:devfrom
roykollensvendsen:add-verathos-sync
Draft

roykollensvendsen wants to merge 2 commits into
anomalyco:devfrom
roykollensvendsen:add-verathos-sync

Conversation

@roykollensvendsen

@roykollensvendsen roykollensvendsen commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Adds a sync module for Verathos, the provider added in #10633. Stacked on #10633: until that merges, this branch also carries its commit; the new work is the last commit, feat(verathos): add Verathos sync module. I'll rebase onto dev and mark this ready once #10633 is in.

What it syncs

Source: GET https://api.verathos.ai/v1/models (public, no key). Prices are already USD per 1M tokens.

Field From
cost.input, cost.output price.usd_per_million_input_tokens / _output_tokens
limit.context max_state_tokens, the largest state POST /v1/systemone accepts (413 above it), when positive
modalities.input, attachment input_modalities, when it is a recognised list

Everything else stays as authored: base_model, temperature = false on clef-flash, and limit.output = 0, since decision models generate no text.

The Verathos files are v2 and v2_only. The runner hands the module a v1 view, where MIME types and a decision output read the same as a lab's image and text, so factoring would drop an authored [modalities] table. While the list agrees, the module keeps it. When D3's input list changes, the written file keeps output = ["decision"] (tested).

What it never does

  • Create: the list has no name, description or lab facts, and each new model needs a type = "decision" lab entry first. Unseen ids open [missing-model] issues (skipCreates + trackMissingModels).
  • Delete: the list is unauthenticated and {"data":[]} passes the schema, so missing files are retained and reported (deleteMissing: false).
  • Write a free model: a missing or negative price fails the run.

The live list and the catalogue match today (4 and 4), so the first Actions run opens no issues. This follows the engy module (#8715).

Changes

  • packages/core/src/sync/providers/verathos.ts: the module (162 lines)
  • packages/core/src/sync/index.ts: registered, in the direct group
  • package.json: verathos:sync
  • sync.md: a Verathos Notes section
  • packages/core/test/verathos.test.ts: 17 tests, which read the shipped files

Test plan

  • bun verathos:sync against the live list (2026-10-22, on the v2 files): 0 created, 0 updated, 4 unchanged, no file touched
  • bun test test/verathos.test.ts in packages/core: 17 pass. They cover:
    • the shipped files staying unchanged over two runs
    • a repricing or cap change rewriting only that line, with the header and overrides kept
    • D3 widening to images, keeping output = ["decision"]
    • a repricing of clef-flash keeping its inherited modalities, and an authored table kept while the list agrees
    • an unseen id being reported only
    • an empty list deleting nothing
    • bad or absent prices, odd modality lists, empty ids and base_model_omit
  • Mutation pass: each of 20 guards reverted in turn (the authored-modalities guard, deleteMissing, both notices, the cost spread, the modality and context fallbacks, the authored base_model, rounding, price validation, and others), and every mutant fails at least one test
  • Full packages/core suite: the same 10 failures as on dev without this change, none in Verathos or sync code shared with it
  • bun validate, bun run test in packages/sdk (25 pass)

🤖 Generated with Claude Code

https://claude.ai/code/session_018k8EL6s5hEtTTMJ8Jjd4Ls

roykollensvendsen and others added 2 commits October 23, 2026 11:23
Verathos Decide (Bittensor SN96) serves open-weight decision models on
POST /v1/systemone in the System One format. Adds the provider, its logo
and four v2 v2_only model files: kev-4b, clef-flash, d3-flash and
d3-mini, priced from the public GET /v1/models list.

Kev 4B and D3 Mini had no lab entry, so this adds v2_only lab files
models/jaredpalmer/kev-4b and models/vllm-sr/d3-mini (matching its d3
and d3-flash siblings) from their Hugging Face model cards. d3-flash
uses the existing vllm-sr/d3-flash.

v1 generation now leaves out a provider whose models are all v2_only
instead of failing with "has no models" (the same change as in anomalyco#10818);
the rest of the v1 output is unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018k8EL6s5hEtTTMJ8Jjd4Ls
Verathos publishes prices, max_state_tokens and input modalities on a
public GET /v1/models; the module syncs those and preserves everything
else (base_model, temperature, limit.output = 0).

The Verathos files are v2 and v2_only. While the list agrees with a
file's modalities, the module keeps the authored table, so the v1 patch
does not drop MIME types or a "decision" output that read like the
lab's in v1.

It never creates or deletes: the list has no lab metadata and every new
model needs a decision-type lab entry, so unseen ids become
[missing-model] issues, and the unauthenticated list can return an empty
data array, so missing files are retained and reported. A missing or
negative price fails the run.

Registered in sync/index.ts and the direct group, with a verathos:sync
script, a Verathos Notes section in sync.md, and 17 tests that read the
shipped files. Against the live list the four shipped files are
unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018k8EL6s5hEtTTMJ8Jjd4Ls
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