lib/pricing.ts has no rows for claude-haiku-5-5, gemini-4-argon or TypeSafe Jev, so gstack-eval-plan refuses those arms (EVAL_PRICE_MISSING)

Open Beginner friendly
#3,640 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@garrytan is already working on this.

Since Oct 31, 2026.

  • #3732 by @garrytan — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
66/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
bun, typescript
Domain
backend, data

Research direction

Start with the pricing table in lib/pricing.ts and the existing model rows; the issue lists the provider prices and URLs for the missing models. Read the pricing checks in lib/eval-plan.ts and the related case in test/pricing-eval-plan.test.ts. Add the justified rows and verify hasPricing() and the eval plan accept those models at the recorded prices.

Written by the indexing model from the issue text.

Description

enhancement S3

What happened

This is a data gap, not a code defect: lib/pricing.ts has no price rows for several models that are current at their providers, so gstack-eval-plan correctly refuses to price an eval that uses them.

gstack-eval-plan arms --arms jev-1.13.0,claude-haiku-5-5
→ EVAL_PRICE_MISSING

The message comes from lib/eval-plan.ts (${a.model} has no row in lib/pricing.ts, lines 178, 189, 311 at the commit below). The refusal itself is the intended behaviour (hasPricing is documented in the file header as the dry-run check that refuses a priced run on an unpriced model); the refusal we hit is the price check, and the rows are what it lacks (I did not run a full priced eval past it).

Checked against lib/pricing.ts on main at commit ce3a093a6421f84705ff6d58b1b2b022ca9e945d with hasPricing():

model in table? provider price (fetched 2026-10-30)
claude-haiku-5-5 no $0.10 in / $0.50 out per Mtok for prompts up to 100,000 tokens; cache read $0.01; prompts over 100,000 tokens bill at $0.50 / $2.50 (platform.claude.com/docs/en/about-claude/pricing)
jev-1.13.0 no $0.042 per Mtok input, output free (docs.typesafe.ai/models.md)
jev-1.14.0 no same price; the page lists it as the newest Jev release, available from 2026-10-14 (jev-latest points to it)
gemini-4-argon no paid tier $2.00 in / $10.00 out (thinking tokens included), cached $0.10 through 2026-11-30, then $4.00 / $20.00 / $0.20 from 2026-12-01 (ai.google.dev/gemini-api/docs/pricing)

For comparison, claude-opus-5-5, claude-sonnet-5-5, claude-fable-5-1 and gpt-6.1-sol are present and match the provider pages (Opus 5.5 $4/$20, Sonnet 5.5 $2/$10, Fable 5.1 $10/$50, GPT-6.1 Sol $2/$10). gstack-models resolve --role eval-arms only offers the two catalog tiers (lib/model-catalog.ts: Fable 5.1, GPT-6 Astra, Opus 5.5, GPT-6.1 Sol), so the default arms never hit this; an explicit --arms naming a model without a row does. I am not suggesting the model catalog or the tiers change.

Steps to reproduce

  1. Fetch lib/pricing.ts from main at ce3a093a6421f84705ff6d58b1b2b022ca9e945d into an empty directory.
  2. Run, with Bun:
    import { hasPricing } from './pricing.ts';
    for (const m of ['claude-haiku-5-5','jev-1.13.0','jev-1.14.0','gemini-4-argon','claude-opus-5-5']) console.log(m, hasPricing(m));
    
  3. Result: claude-haiku-5-5 false, jev-1.13.0 false, jev-1.14.0 false, gemini-4-argon false, claude-opus-5-5 true. gstack-eval-plan arms --arms <any of the false ones> then ends with EVAL_PRICE_MISSING.

Proposal

Add rows to PRICING with the provider URL in a comment, as the existing rows do (and as #3172 did for gpt-4o, Voyage rerankers and dated Claude snapshots):

  • claude-haiku-5-5: { input_per_mtok: 0.10, output_per_mtok: 0.50, cached_input_per_mtok: 0.01 }. The over-100k-token tier is excluded, which the header already lists under "long-context surcharges".
  • jev-1.13.0 and jev-1.14.0: { input_per_mtok: 0.042, output_per_mtok: 0 }. If you would rather not carry a third-party provider, the alternative is a documented way to supply a price row for a model the table lacks (for example from .gstack/eval-models.json), so a repository can run an eval on a model gstack does not price. I found no such option in docs/eval-models.md, bin/gstack-eval-plan or lib/eval-plan.ts (the one override I saw, price-gate --allow-unpriced, covers a missing call plan, not a missing price row).
  • gemini-4-argon: the price doubles on 2026-12-01 and the table has no date schedule. The gemini-3.8-flash row records its schedule in a comment, but a comment does not change the estimate: a row at today's $2.00 / $10.00 / $0.10 would price estimates at half the published rate from 2026-12-01, so either use the 2026-12-01 rates ($4.00 / $20.00 / $0.20, an upper bound until then) or add the row at today's rates and schedule a follow-up update.

I can send a pull request with these rows and a case in test/pricing-eval-plan.test.ts if you want it.

Workaround today, and its cost: we edit the installed lib/pricing.ts locally. That is overwritten by the next gstack-upgrade, and is lost on every other machine.

Readiness report

gstack doctor 1.91.318.0
ok              install root    ~/.claude/skills/gstack: claude global current (1.91.318.0), agy global current (1.91.318.0), codex global current (1.91.318.0)
ok              rescue refs     none in ~/.claude/skills/gstack
ok              state root      ~/.gstack durable=yes (selected by default)
ok              bun             1.4.4 at /usr/local/bin/bun (floor 1.3.3, tested 1.4.2)
ok              hooks           9 hook(s) parse
ok              codex           codex-cli 0.160.1; self-locate ok; model gpt-6.1-sol (source: GSTACK_CODEX_MODEL)
ok              codex probe     cached MODEL_OK, 15h ago (not re-run; --live probes now)
ok              artifacts sync  status ok (mode full; queue 7)
ok              browse bundle   browse/dist built
ok              binaries        find-browse, design, pdf, gstack-global-discover launch (4 of 4)
ok              cso             native helper 1.91.318.0 (1bd2330350a6)
ok              claude code     2.1.308 (Claude Code) at ~/.npm-global/bin/claude
ok              session journal no session journals for this project
ok              guard log       53 decisions (4 denied)
ok              CLAUDE.md       no gstack section lists skills (~/.claude/CLAUDE.md)
15 ok, 0 warn, 0 not configured, 0 fail

Environment

  • Host (Claude Code, Codex, Cursor, ...) and its version: Claude Code 2.1.308
  • OS: Linux 7.0.0-38-generic, Bun 1.4.4
  • gstack installed: 1.91.318.0 (commit 1bd2330350a6); the claims above were checked on main at ce3a093a6421f84705ff6d58b1b2b022ca9e945d, 12 commits ahead; lib/pricing.ts as committed is byte-identical at both (blob 3fd3a342143a; the working copy here carries the two local rows)
  • Related: #3172 (merged, same kind of gap for other models). No open or closed issue found for these models.
Dominant language
TypeScript
Stars
138k
Forks
20.5k
Avg merge
10h 55m
Merged PRs (30d)
410

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from garrytan/gstack

All issues in garrytan/gstack

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.