{
  "schema_version": "1.0.0",
  "note": "Why each value on the board moved. A diff can prove that a number changed; it cannot say whether the provider changed its price or this board changed what it prints, and publishing the second as the first would be a price rise that never happened. build_history.py fails the build on any change not listed here.",
  "kinds": {
    "vendor-change": "the provider changed the number on its own page",
    "board-correction": "what this board prints changed; the provider's charge did not",
    "newly-stated": "the provider documented a value it had not stated before"
  },
  "retrospective": "true on entries classified from the diff during backfill because the changelog of the day did not record the change.",
  "changes": [
    {
      "date": "2026-08-06",
      "model": "gpt-5.6-luna",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "OpenAI cut Luna by 80%, effective 2026-07-30: $1.00/$0.10/$6.00 to $0.20/$0.02/$1.20."
    },
    {
      "date": "2026-08-06",
      "model": "gpt-5.6-terra",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "OpenAI cut Terra by 20%, effective 2026-07-30: $2.50/$0.25/$15.00 to $2.00/$0.20/$12.00."
    },
    {
      "date": "2026-08-06",
      "model": "gpt-5.6-luna",
      "fields": [
        "price.cache_write"
      ],
      "kind": "board-correction",
      "note": "The pricing page had stated this rate all along and the board carried it as null. OpenAI disclosed nothing new; we filled a gap of our own making."
    },
    {
      "date": "2026-08-06",
      "model": "gpt-5.6-terra",
      "fields": [
        "price.cache_write"
      ],
      "kind": "board-correction",
      "note": "As above — the page stated the cache-write rate and the board had carried null."
    },
    {
      "date": "2026-08-06",
      "model": "gpt-5.6-sol",
      "fields": [
        "price.cache_write"
      ],
      "kind": "board-correction",
      "note": "As above — the page stated the cache-write rate and the board had carried null."
    },
    {
      "date": "2026-08-06",
      "model": "claude-fable-5",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "Anthropic's launch doc states 128K max output per request; the board had carried it as null."
    },
    {
      "date": "2026-08-06",
      "model": "glm-5.2",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "Picked up from the secondary comparison source. Z.ai's own pricing page still states no window, which the row says."
    },
    {
      "date": "2026-08-06",
      "model": "mistral-medium-3.5",
      "fields": [
        "weights"
      ],
      "kind": "board-correction",
      "note": "Licence resolved against Mistral's models doc rather than left as 'check model card', which moved the row from partial to open. Mistral's terms did not change."
    },
    {
      "date": "2026-08-06",
      "model": "mistral-small-4",
      "fields": [
        "weights"
      ],
      "kind": "board-correction",
      "note": "As above — Apache-2.0 (v26.03) confirmed against the models doc."
    },
    {
      "date": "2026-08-06",
      "model": "mistral-large-3",
      "fields": [
        "weights"
      ],
      "kind": "board-correction",
      "note": "As above — Apache-2.0 (v25.12) confirmed against the models doc."
    },
    {
      "date": "2026-08-06",
      "model": "qwen3.7-plus",
      "fields": [
        "price.in",
        "price.out"
      ],
      "kind": "board-correction",
      "note": "Re-sourced from Together AI to Alibaba's own Model Studio page. The first-party rate is higher than the host rate the board had been printing; Alibaba did not raise anything."
    },
    {
      "date": "2026-08-06",
      "model": "qwen3.7-max",
      "fields": [
        "price.cached_in"
      ],
      "kind": "board-correction",
      "note": "Withdrawn, not cut: the $0.25 cached rate came from a host, and Alibaba's own page states no cached-input rate. A null here means unstated, not free."
    },
    {
      "date": "2026-08-06",
      "model": "qwen3.5-397b-a17b",
      "fields": [
        "price.cached_in"
      ],
      "kind": "board-correction",
      "note": "Withdrawn on the same grounds as Qwen3.7-Max — the $0.35 was a host's number."
    },
    {
      "date": "2026-08-06",
      "model": "llama-3.3-70b",
      "fields": [
        "context.window"
      ],
      "kind": "board-correction",
      "note": "128,000 corrected to the model's own 131,072. Not recorded in the 2026-08-06 changelog; classified from the diff when this history was backfilled.",
      "retrospective": true
    },
    {
      "date": "2026-08-14",
      "model": "gemini-3.6-flash",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "Halved to $0.75/$0.075/$3.75 when Gemini 3.7 Flash superseded it three weeks after launch."
    },
    {
      "date": "2026-08-14",
      "model": "llama-3.3-70b",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "Filled in at 32,768 from Groq's models page."
    },
    {
      "date": "2026-08-20",
      "model": "deepseek-v4-flash",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "The peak/off-peak change announced 2026-08-13 went live on schedule at 2026-08-16 16:00 UTC. At this pass the board printed the off-peak rate — see the 2026-08-27 correction."
    },
    {
      "date": "2026-08-20",
      "model": "deepseek-v4-pro",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "As above: live 2026-08-16, printed here at the off-peak rate."
    },
    {
      "date": "2026-08-20",
      "model": "kimi-k2.6",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "board-correction",
      "note": "Moonshot's per-model pricing pages became citable again, and the first-party rate was lower than the host figure the board had been carrying. Moonshot did not cut the price; we stopped quoting a host for it."
    },
    {
      "date": "2026-08-20",
      "model": "kimi-k2.6",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "262,144 documented on the restored per-model pricing page."
    },
    {
      "date": "2026-08-20",
      "model": "kimi-k2.7-code",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "262,144 documented on the restored per-model pricing page."
    },
    {
      "date": "2026-08-27",
      "model": "gpt-5.6-sol",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.cache_write",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "OpenAI cut Sol from $5.00/$0.50/$6.25/$30.00 to $4.00/$0.40/$5.00/$20.00. The pricing page carries no announcement date, so this is recorded on the date the board observed it."
    },
    {
      "date": "2026-08-27",
      "model": "deepseek-v4-flash",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "board-correction",
      "note": "Re-based from the off-peak rate to the peak rate, which DeepSeek's own pages call the standard rate. DeepSeek charged the same before and after; the board's column header promises list rates and was printing a time-of-day discount."
    },
    {
      "date": "2026-08-27",
      "model": "deepseek-v4-pro",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "board-correction",
      "note": "Re-based from off-peak to peak on the same grounds. No change to what DeepSeek charges."
    },
    {
      "date": "2026-09-03",
      "model": "mistral-medium-3.5",
      "fields": [
        "price.cached_in"
      ],
      "kind": "newly-stated",
      "note": "$0.15 sourced from docs.mistral.ai/inference/pricing, a third Mistral pricing page that prints the cached-input column filled per model. Mistral's rate did not change — this board could not previously cite one, and the row carried null. The page is now cited by the row."
    },
    {
      "date": "2026-09-03",
      "model": "mistral-small-4",
      "fields": [
        "price.cached_in"
      ],
      "kind": "newly-stated",
      "note": "$0.015 from the same newly cited page. No change to what Mistral charges."
    },
    {
      "date": "2026-09-03",
      "model": "codestral",
      "fields": [
        "price.cached_in"
      ],
      "kind": "newly-stated",
      "note": "$0.03 from the same newly cited page. No change to what Mistral charges."
    },
    {
      "date": "2026-09-03",
      "model": "mistral-large-3",
      "fields": [
        "price.cached_in"
      ],
      "kind": "newly-stated",
      "note": "$0.05 from the same newly cited page. No change to what Mistral charges."
    },
    {
      "date": "2026-09-03",
      "model": "claude-opus-5",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "128,000 read off Anthropic's models overview page, which this row now cites. Previously null."
    },
    {
      "date": "2026-09-03",
      "model": "claude-sonnet-5",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "128,000 from the same page. Previously null."
    },
    {
      "date": "2026-09-03",
      "model": "claude-haiku-4.5",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "200,000 window and 64,000 max output from the same page. Both had been null since the row was added; the row previously said only that it predates the 4.6+ 1M guarantee."
    },
    {
      "date": "2026-09-03",
      "model": "minimax-m3",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "262,144 stated on the OpenRouter model page this row already cites. The price is unchanged: Together still lists $0.30/$0.06/$1.20, which is the rate this row prints."
    },
    {
      "date": "2026-09-10",
      "model": "deepseek-v4-flash",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "DeepSeek retired V4-Flash on 2026-09-10. The deepseek-v4-flash name is still accepted but is served by DeepSeek-V4.1-Flash and billed at its price, so the row moves from V4-Flash's own $0.44/$0.014/$1.32 at peak to the $0.30/$0.006/$1.20 the name now bills. The row is marked deprecated."
    },
    {
      "date": "2026-09-24",
      "model": "claude-opus-4.8",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "128,000 read off the model's own overview page, newly cited. Previously null."
    },
    {
      "date": "2026-09-24",
      "model": "claude-sonnet-4.6",
      "fields": [
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "128,000 read off the model's own overview page, newly cited. Previously null."
    },
    {
      "date": "2026-09-24",
      "model": "codestral",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "128K window from Mistral's per-model page for Codestral 25.08, newly cited. No change to the model."
    },
    {
      "date": "2026-09-24",
      "model": "gemini-2.5-flash",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1,048,576 / 65,536 from Google's per-model page, newly cited — the pricing page this row read from states neither."
    },
    {
      "date": "2026-09-24",
      "model": "gemini-3.1-flash-lite",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1,048,576 / 65,536 from Google's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "gemini-3.1-pro-preview",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1,048,576 / 65,536 from Google's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "gemini-3.5-flash",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1,048,576 / 65,536 from Google's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "gemini-3.5-flash-lite",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1,048,576 / 65,536 from Google's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "gemini-3.6-flash",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1,048,576 / 65,536 from Google's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "glm-4.7",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "200K / 128K from Z.ai's GLM-4.7 guide, newly cited; the pricing page states no window."
    },
    {
      "date": "2026-09-24",
      "model": "glm-4.7-flashx",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "200K / 128K from the FlashX tab of Z.ai's GLM-4.7 guide, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "glm-5",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "200K / 128K from Z.ai's GLM-5 guide, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "glm-5.2",
      "fields": [
        "context.max_output"
      ],
      "kind": "board-correction",
      "note": "131,000 → 128,000. The 131K was a secondary source's figure; Z.ai's own GLM-5.2 guide, cited from this pass, says 128K. Z.ai changed nothing."
    },
    {
      "date": "2026-09-24",
      "model": "glm-5.3-flash",
      "fields": [
        "context.window",
        "context.max_output",
        "weights"
      ],
      "kind": "newly-stated",
      "note": "1M / 128K from Z.ai's GLM-5.3-Flash guide, and open MIT weights from the Hugging Face card — all three newly cited. Previously null and unverified."
    },
    {
      "date": "2026-09-24",
      "model": "gpt-5.4-mini",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "400K / 128K from OpenAI's per-model page, newly cited. Previously null."
    },
    {
      "date": "2026-09-24",
      "model": "gpt-5.5",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "newly-stated",
      "note": "1.05M / 128K from OpenAI's per-model page, newly cited. Previously null."
    },
    {
      "date": "2026-09-24",
      "model": "kimi-k3",
      "fields": [
        "price.cache_write"
      ],
      "kind": "newly-stated",
      "note": "$3.00 at the default 5-minute TTL, printed on Moonshot's pricing page this pass; previously null. No change to K3's input, cached or output rates."
    },
    {
      "date": "2026-09-24",
      "model": "minimax-m3",
      "fields": [
        "weights"
      ],
      "kind": "newly-stated",
      "note": "open, under the MiniMax Community License, stated on MiniMax's own deploy guide and the Hugging Face card — previously unverified."
    },
    {
      "date": "2026-09-24",
      "model": "mistral-large-3",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "256K window from Mistral's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "mistral-medium-3.5",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "256K window from Mistral's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "mistral-small-4",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "256K window from Mistral's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "qwen3.5-397b-a17b",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "262,144 native window from the Hugging Face model card, newly cited; Alibaba's pricing page states none."
    },
    {
      "date": "2026-09-24",
      "model": "sonar",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "128K from Perplexity's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "sonar-pro",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "200K from Perplexity's per-model page, newly cited."
    },
    {
      "date": "2026-09-24",
      "model": "sonar-reasoning-pro",
      "fields": [
        "context.window"
      ],
      "kind": "newly-stated",
      "note": "128K from Perplexity's per-model page, newly cited."
    },
    {
      "date": "2026-10-01",
      "model": "gemini-3.8-flash",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "board-correction",
      "note": "1,000,000 / 64,000 → 1,048,576 / 65,536: the board had carried the latest-model page's rounded 1M / 64K; the model's own page states the exact figures, as it does for the other six Gemini rows. Google changed nothing."
    },
    {
      "date": "2026-10-01",
      "model": "gemini-3.7-flash",
      "fields": [
        "context.window",
        "context.max_output"
      ],
      "kind": "board-correction",
      "note": "1,000,000 / 64,000 → 1,048,576 / 65,536: the board had carried the latest-model page's rounded 1M / 64K; the model's own page states the exact figures, as it does for the other six Gemini rows. Google changed nothing."
    },
    {
      "date": "2026-10-01",
      "model": "sonar",
      "fields": [
        "price.in",
        "price.cached_in",
        "price.out"
      ],
      "kind": "vendor-change",
      "note": "$1.00 / — / $1.00 → $0.25 / $0.0625 / $2.50: Perplexity ended Sonar Chat Completions support on 2026-09-27 and moved Sonar to the Agent API, which prices perplexity/sonar at its own rate and bills search per tool call. The Chat Completions rate is still printed on the pricing page for requests being reformulated."
    },
    {
      "date": "2026-10-08",
      "model": "claude-sonnet-5.5",
      "fields": [
        "price.cached_in"
      ],
      "kind": "vendor-change",
      "note": "$0.20 → $0.10 (0.1x → 0.05x input): Anthropic's release note of 2026-10-07 halves the Sonnet 5.5 cache read, and the pricing page's multiplier section states $0.10. The same page's model table still prints $0.20; the row follows the dated change."
    },
    {
      "date": "2026-10-08",
      "model": "state-decider-1",
      "fields": [
        "price.in"
      ],
      "kind": "vendor-change",
      "note": "$0.03 → $0.04 per 1M input tokens, as stated on meraGPT's Decider 1 page this pass. Output stays $0.00."
    }
  ]
}
