Skip to content

Zero of 25 provider READMEs document any of the four cross-provider primitives, and four providers have had no README for eight cycles #911

Description

@sroussey

What

Four cross-provider primitives have shipped since 2026-07: refusal (StreamRefusal), cache checkpoints (PR #641), effort (ModelEffortPolicy, hardened this window by #882), and now pricing (modelPricing, this window). Each landed with tests. None of the four is mentioned in any provider README.

Measured at fb861bb:

$ grep -ril checkpoint providers/*/README.md
providers/aws/README.md          ← unrelated (an SQS visibility-timeout sentence)
$ grep -ril effort providers/*/README.md
$ grep -ril pricing providers/*/README.md
$ grep -ril refusal providers/*/README.md

Three of those four greps return nothing at all. This is the sixth consecutive cycle the measurement has come back the same.

README sizes

anthropic 44   aws 82    bun-webview NONE   cactus 21    chrome-ai 44
cloudflare 113 deepseek 62  duckdb 76       electron NONE  google-gemini 44
hf-inference 44  hf-transformers 44  llamacpp-server 121  mlx NONE
node-llama-cpp 44  ollama 44   openai 44    openrouter 9   playwright NONE
postgres 84    sqlite 33   stable-diffusion-server 125   supabase 33
tf-mediapipe 86  xai 62
  • Ten AI providers ship the identical 44-line boilerplate (anthropic, chrome-ai, gemini, HFI, HFT, node-llama-cpp, ollama, openai — install + one example + a link).
  • openrouter is 9 lines — thinnest in the tree, fifth cycle, on a provider that is one of only two metered cloud backends with no rate card (OpenRouter fetches per-model rates and drops them in an untyped metadata bag; with no modelPricing its models silently get direct-vendor list prices #910).
  • bun-webview, electron, mlx, playwright have no README at all — eighth consecutive cycle. bun-webview had three real backend defects fixed in it two windows ago; electron and playwright are at their eighth static cycle.
  • stable-diffusion-server's 125 lines are the second-longest in providers/ and mention neither usage nor the fact that the package emits none (grep -c usage providers/stable-diffusion-server/src -r → 0).

Why this is worth an issue rather than a recurring note

The primitives are the reason a consumer would choose one provider over another, and the per-provider support matrix exists only in this repo's review history. A consumer reading providers/openrouter/README.md today cannot learn that its effort gate now denies non-text modalities (OpenRouter_EffortPolicy.ts:36, new this window), that it reports usage.extra.cost, or that it publishes no rate card.

Proposed fix

  1. One generated table, not 25 hand-written paragraphs. The data already exists as code: *_RUN_FN_SPECS[].serves, *EffortPolicy, modelPricing, and a grep -c refusal per package. A script under scripts/ can emit providers/README.md — one row per provider, one column per primitive — and a CI check can fail when the table is stale, in the same spirit as BunExportConditions.test.ts pinning prose against code.
  2. A README floor. The four packages with none get the same 44-line skeleton; openrouter's 9 lines get brought to it. Cheap, and it removes the "no README" line from this review permanently.
  3. Per-provider prose stays optional — the generated matrix is what carries the contract.

Found during the 2026-09-07 review of providers/. Verified against origin/main @ fb861bb.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions