Models

Which changes each model already knows, measured by FreshBench. ludion sync leaves out the lessons that the model it writes for is measured to know.

How it was measured: Each model answered each change's FreshBench A question twice, without tools (claude -p, no tools); an opus judge graded each answer against the verified key (docs/bench/2026-10-11-keys/). knows = both answers correct; misses = otherwise.

Measured on Oct 11, 2026. The run's questions, answers, and grades

ModelKnowsMisses
Claude Haiku 5.5227
Claude Sonnet 5.5128
Claude Opus 5.5128

Per lesson

LessonClaude Haiku 5.5Claude Sonnet 5.5Claude Opus 5.5
wrangler >=4.122.0 changed the default of `nodejs_compat`. With a compatibility date of 2026-08-04 or later it is on; to turn it off, remove the positive flags and add both no_nodejs_compat and no_nodejs_compat_v2. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.124.0 changed what `--latest` does. It uses the latest compatibility date supported by this version of Wrangler. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.121.0 added `--jurisdiction us`. Create a D1 database in the US jurisdiction with wrangler d1 create and --jurisdiction us. Older versions don't have it.missesmissesmisses
wrangler >=4.118.0 changed the default of `X_LOCAL_OBSERVABILITY`. wrangler dev now captures request traces and console logs into the Local Explorer Observability tab; set X_LOCAL_OBSERVABILITY=false to opt out. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.145.0 renamed `wrangler r2 sql` to `wrangler basin sql`. Previous command paths remain available as hidden compatibility aliases. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.127.0 added `workflows[].concurrency.limit`. The limit is the maximum number of Workflow instances that can run concurrently. Older versions don't have it.missesmissesmisses
wrangler >=4.125.0 added `connect`. Configure connect with protocol tcp and a port to receive raw socket connections during wrangler dev in the Worker connect(socket, env, ctx) handler. Older versions don't have it.missesmissesmisses
wrangler >=4.117.0 renamed `/cdn-cgi/handler/scheduled` to `/cdn-cgi/local/scheduled`. wrangler dev and the Vite plugin transparently rewrite the old paths to the new ones, meaning you can continue to use the old paths. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.148.0 changed what `wrangler versions secret bulk` does. Set a secret value to null in JSON input to remove it from the new Worker version. Silent: code written for older versions still runs, without an error.missesmissesmisses
agents >=0.27.0 added `npx agents tui`. It is a terminal client for a conversation's Web Channel. Older versions don't have it.missesmissesmisses
agents >=0.24.0 changed what `queue()` does. Queued callbacks run from the alarm loop in a fresh invocation, so they no longer see the enqueuing request's connection or request through getCurrentAgent(). Silent: code written for older versions still runs, without an error.knowsknowsknows
agents >=0.24.0 added `transport`. useAgent speaks the Agent protocol over one of two wires: cf-websocket (the default, a hibernating WebSocket) or the experimental capnweb transport. Older versions don't have it.missesmissesmisses
agents >=0.23.0 deprecated `subAgent()`; use `this.dynamicAgents.get()` instead. subAgent(), hasSubAgent(), listSubAgents(), abortSubAgent() and deleteSubAgent() still work, delegate to this.dynamicAgents, and are deprecated in place. Silent: code written for older versions still runs, without an error.missesmissesmisses
agents >=0.22.0 changed what `Agent` does. Agent now directly extends Cloudflare's DurableObject, with the required PartyServer runtime vendored into agents/lifecycle. Silent: code written for older versions still runs, without an error.missesmissesmisses
agents >=0.22.0 changed the default of `throttle`. useAgentChat now coalesces updates every 50ms; pass throttle: false to render every chunk as it arrives, or a number to change the interval. Silent: code written for older versions still runs, without an error.missesmissesmisses
agents >=0.22.0 added `Scheduler`. Scheduler, under agents/schedules, is a reusable Lifecycle capability for persistent delayed, dated, cron, and interval callbacks. Older versions don't have it.missesmissesmisses
agents >=0.20.0 changed what `createMcpHandler` does. A function input to createMcpHandler is always treated as an SDK v2 factory, so concurrent Worker requests receive isolated server instances. Silent: code written for older versions still runs, without an error.missesmissesmisses
agents >=0.20.0 changed what `MCPClientConnection` does. MCPClientConnection probes for stateless MCP with server/discover, then falls back to the legacy initialize handshake on the same connection when needed. Silent: code written for older versions still runs, without an error.missesmissesmisses
vitest >=5.0.0 changed what `vitest.config` does. Previously, vitest running from a subdirectory was using a config file from a parent directory; pass the config explicitly with --config. Silent: code written for older versions still runs, without an error.knowsmissesmisses
vitest >=5.0.0 changed what `toHaveTextContent` does. The browser-mode matcher now validates that the text content is exactly equal to the expected string; toMatchTextContent performs a partial match.missesmissesmisses
vitest >=5.0.0 changed the default of `--merge-reports`. By default, Vitest stores all blob test results in .vitest/blob/, so they can be later merged using --merge-reports. Silent: code written for older versions still runs, without an error.missesmissesmisses
vitest >=5.0.0 changed what `-t` does. The pattern is matched against the full name: the enclosing suite names and the test name joined with ' > ' (the same string shown in the reporter output). Silent: code written for older versions still runs, without an error.missesmissesmisses
vitest >=5.0.0 changed the default of `extends`. Projects defined with an inline configuration inherit options from the root-level configuration. Silent: code written for older versions still runs, without an error.missesmissesmisses
vitest >=5.0.0 added `vi.when`. vi.when takes a spy and lets you define argument-specific behaviors. Older versions don't have it.missesmissesmisses
vitest >=5.0.0 added `--repeats`. It repeats every test regardless of the result, which is useful for hunting flaky tests. Older versions don't have it.missesmissesmisses
vitest >=5.0.0 added `-p`. It is a shorthand for the --project filter. Older versions don't have it.missesmissesmisses
vitest >=5.0.0 changed what `vitest list` does. It parses test files statically instead of running them to collect tests; pass --no-static-parse to run the files instead. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.121.0 changed what `DO_NOT_TRACK` does. Wrangler disables telemetry when DO_NOT_TRACK=1 is set, regardless of other telemetry settings. Silent: code written for older versions still runs, without an error.missesmissesmisses
wrangler >=4.141.0 changed the default of `durable_objects.code_update_strategy`. When unset, the strategy defaults to deferred with a 5-minute maximum delay; configure mode and max_delay to set it. Silent: code written for older versions still runs, without an error.missesmissesmisses