PageSourceSearch

https://llmvibes.ai/assets/cross-model-deltas-march-april-2026-LRqrj5Or.js

js llmvibes.ai collected 2026-10-05 12:14:01 UTC 9,762 bytes, 1 lines download raw bytes

1import{j as e}from"./vendor-query-B72zDTHn.js";import{E as s}from"./EmbeddedModelChart-BD7NxA3B.js";import{R as t,A as r}from"./ResearchTableFrame-DUl4fjEL.js";import"./index-L52HMjEK.js";import"./vendor-react-Dcann7Ed.js";import"./vendor-supabase-ChnqCKxs.js";import"./use-chart-data-DsW_bE0f.js";import"./vendor-events-BTWnjr-L.js";const m=()=>e.jsxs(e.Fragment,{children:[e.jsx("h2",{children:"Watch the recovery shape, not the drop"}),e.jsxs("p",{children:["How a model's score recovers after a known fix tells you more than the depth of the original drop. In the ",e.jsx("a",{href:"/research/claude-april-2026",children:"March–April 2026 Claude incident"}),", ChatGPT drifted back toward its baseline once Anthropic's fix shipped. Gemini stayed roughly flat. Claude kept falling, the deepest of the four. That post-fix divergence is what singled Claude out. Not its bug-window drop. Definitely not its score on any single day."]}),e.jsxs("p",{children:["The most common misread of a multi-model dashboard like LLM Vibes is comparing two scores at a single moment. ",e.jsx("em",{children:'"Claude is 48, ChatGPT is 31, so Claude is better."'})," That number says less than it looks like."]}),e.jsx("p",{children:"What it actually says is: at this moment, in the population of posts we scraped, the volume-weighted positive share for Claude is higher than for ChatGPT. Models attract different audiences with different complaint cultures. Reddit's r/ChatGPT runs hotter than r/ClaudeAI on any given day. A snapshot doesn't tell you whether a model is improving, regressing, or holding steady. Only the delta from its own baseline does, and the cross-model incident below shows even that delta can mislead."}),e.jsx("h2",{children:"The four models, side by side"}
1),e.jsx(s,{modelSlug:"claude",startDate:"2026-02-10",endDate:"2026-04-25"}),e.jsx(s,{modelSlug:"chatgpt",startDate:"2026-02-10",endDate:"2026-04-25"}),e.jsx(s,{modelSlug:"gemini",startDate:"2026-02-10",endDate:"2026-04-25"}),e.jsx(s,{modelSlug:"grok",startDate:"2026-02-10",endDate:"2026-04-25"}),e.jsx("p",{children:"Each chart shows the model's own daily score, February 10 through April 25, 2026, the publication window. The Claude chart is shaded with the three Anthropic-confirmed bug windows. The other three are not shaded because their vendors have not published comparable postmortems for the same period."}),e.jsx("h2",{children:"The numbers that matter"}),e.jsx("p",{children:"Across the cache-bug window (March 26 – April 10, 2026), each tracked model's volume-weighted score was:"}),e.jsx(t,{label:"Model sentiment scores and baseline deltas during the Claude cache bug",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Model"}),e.jsx("th",{className:"whitespace-nowrap",children:"Mar 26 – Apr 10 score"}),e.jsx("th",{className:"whitespace-nowrap",children:"Feb baseline"}),e.jsx("th",{className:"whitespace-nowrap",children:"Delta from baseline"}),e.jsx("th",{className:"whitespace-nowrap",children:"Press-cycle echo (Apr 11–15)"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:"Claude"}),e.jsx("td",{children:"47.6"}),e.jsx("td",{children:"71.0"}),e.jsx("td",{children:e.jsx("strong",{children:"−23"})}),e.jsx("td",{children:e.jsx("strong",{children:"36"})})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"ChatGPT"}),e.jsx("td",{children:"32.0"}),e.jsx("td",{children:"80.8"}),e.jsx("td",{children:e.jsx("strong",{children:"−49"})}),e.jsx("td",{children:"46"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Gemini"}),e.jsx("td",{children:"38.4"}),e.jsx("td",{children:"76.0"}),e.jsx("td",{children:e.jsx("strong",{children:"−38"})}),e.jsx("td",{children:"36"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Grok"}),e.jsx("td",{children:"34.6"}),e.jsx("td",{children:"48.5"}),e.jsx("td",{children:e.jsx("strong",{children:"−14"})}),e.jsx("td",{children:"26"})]})]})]})}),e.jsx("p",{children:"Claude held the highest absolute score in this window. It also had the smallest meaningful drop from its own February baseline of any well-trafficked model. ChatGPT and Gemini dropped much further from their baselines. By either reading, Claude looked fine."}),e.jsx("p",{children:"The signal was in the post-fix shape. ChatGPT recovered toward its baseline (32 → 46) after Anthropic confirmed the fix on April 10. Gemini drifted slightly down (38 → 36). Claude kept sliding the deepest of the four (48 → 36)."}),e.jsx("h2",{children:"Why the recovery shape matters more than the bug-window delta"}),e.jsx("p",{children:"Three reasons."}),e.jsx("p",{children:`Cohort drift. Each model has a different audience mix. ChatGPT pulls in heavy mainstream traffic from Reddit and Twitter; Claude pulls in a more developer-skewed cohort that's more demanding and more vocal. The volume-weighted score reflects both quality and audience tolerance. Bug-window deltas alone can't separate "the underlying model regressed" from "an audience that complains more loudly than usual got an excuse to do it." Both produce the same drop.`}),e.jsxs("p",{children:['Press-cycle echo. When a story goes mainstream (VentureBeat, Fortune, Hacker News, The Register), the wave of "X is broken" posts arrives ',e.jsx("em",{children:"after"})," the fix. Our scrapers pick up that echo for every model visible in the news cycle. The interesting question is who"," ",e.jsx("em",{children:"kept"})," sliding through the wave, not who showed up in it. A model whose post-fix score recovers toward baseline (ChatGPT, Gemini) is a model where the press-cycle posts are stale complaints. A model whose post-fix score keeps falling (Claude) is a model where the underlying complaints are still arriving."]}),e.jsx("p",{children:"Vendor-wide trends. When all four models drop together during the same week, that's industry sentiment, not a single model's quality. The cross-vendor median delta during the bug window was about −30. Claude's −23 was the smallest of the three high-volume models. Only the recovery column singles it out."}),e.jsx("h2",{children:"Caveats"}),e.jsx("p",{children:"The Feb baseline numbers in the table above come from approximately four days of meaningful pre-bug coverage (Feb 15–18). The Feb 19 – Mar 7 scraper-volume gap erased the rest of February. Each baseline therefore carries roughly ±3 points of sampling noise. The deltas are accurate to the underlying data; the baselines themselves are the weakest part of the table."}),e.jsxs("p",{children:["During this window the classifier was Claude Haiku 4.5, which scored all four models including itself, so the risk to watch w
1as a pro-Claude tilt. (Production has since moved to OpenAI's GPT-6 Sol, which flips the risk toward ChatGPT.) The validation check samples recent low-confidence or incomplete posts, reruns them through an independent Gemini grader, and compares its sentiment and complaint labels against the stored Claude labels without writing public scores. We run it around classifier changes, not as an always-on monitor. It does not remove self-bias risk, but it keeps a cutover auditable against a different vendor's read. An earlier Gemini/Claude comparison in April 2026 found roughly 92% sentiment agreement, which suggests the vendor behind the classifier isn't the main driver of a model's score. Full method and category caveats are in the"," ",e.jsx("a",{href:"/research/how-llm-vibes-classifies-sentiment",children:"methodology post"}),"."]}),e.jsx("h2",{children:"How to read the dashboard"}),e.jsx("p",{children:"Three rules."}),e.jsxs("ol",{children:[e.jsxs("li",{children:["Compare a model to itself across time, not to other models on the same day. Each model card on"," ",e.jsx("a",{href:"/dashboard",children:"the dashboard"}),` shows yesterday's delta in the trend pill. That's the right first-pass metric for "is X getting worse?"`]}),e.jsx("li",{children:"After a known regression and fix, watch the recovery column, not the trough. If three models trend upward and one stays flat or falls, the flat one is the model whose underlying issue isn't actually resolved, regardless of which had the deepest absolute drop or the largest bug-window delta."}),e.jsxs("li",{children:["Treat a single ≥2σ daily deviation as a watch flag, not a verdict. The anomaly detector (",e.jsx("code",{children:"src/hooks/useScoreAnomalies.ts"}),") surfaces these automatically in the dev build. A first-day regression is rarely the strongest signal. Sustained multi-day drops, especially through and after a confirmed fix, match what a real engineering bug looks like in user behavior."]})]}),e.jsx("h2",{children:"What this means for the next incident"}),e.jsx("p",{children:"The next regression will happen. News cycles pull every visible model down at once, so the tell won't be the drop. It'll be the week after: most models climb back, one doesn't."}),e.jsxs("p",{children:["Today that still means eyeballing four charts side by side. A per-model recovery-shape metric would do it automatically, and it isn't built yet. To read the data yourself, the"," ",e.jsx("a",{href:"/research/claude-april-2026/data.csv",children:"public CSV"})," for the Claude case study has the raw scores; the other three models' histories are queryable via the public ",e.jsx("code",{children:"get_public_vibes_history"})," ","RPC defined in the repository's migrations."]}),e.jsxs("p",{children:["The lesson from March 2026: LLM Vibes caught Claude breaking by watching what happened ",e.jsx("em",{children:"after"})," ","Anthropic said it was fixed. One model's score didn't behave like the other three. Build the same instinct into how you read the dashboard."]}),e.jsx(r,{})]});export{m as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.