AI agents are pushing source control, test harnesses and database fleets to their limits, and a fuller race at the frontier is changing which coding models engineers use.
Picked from 19 new articles across 23 sources · arrow keys for other days
Today in 30 seconds
30s left
Anthropic replaced git with Scion, an in-house system largely built by Claude, after daily merges jumped from 2,500 to 30,000. story 1 ↓
A test harness took cheap GPT-6 Luna from 3 to 10 accepted builds of 10, costing a third less than bare GPT-6 Sol. story 2 ↓
Cloudflare's daily active D1 databases grew 18x in a year. Queries skip the central Postgres database, and heartbeats repair partial failures. story 3 ↓
Meta's Muse Wonder Full trails only Opus 5.5 on one independent index. It has no published price and requires a coding-tool subscription. story 4 ↓
Meta merged its ad-ranking models into GEM, whose Kunlun architecture scales predictably. Training efficiency doubled while compute grew fourfold. story 5 ↓
Gemini 4 Argon is now generally available, and independent benchmarks such as Vals AI and CursorBench mostly confirm Google's claims.
1/5Anthropic Engineering· Oct 13
Anthropic replaced git with its own source control system, built largely by Claude
Anthropic's AI agents merged so much code that git stopped scaling for it. A seven-person team, writing much of the code with Claude, built Scion, a server-centric version control system, and cut checkout infrastructure 200-fold.
Why it matters · When AI agents write most of the code, the limit moves to source control, review and CI. This is an early, detailed look at what breaks and how one team redesigned it.
Know this first
Context from the editor, not the article · 37 sec
1 · What source control does
A version control system such as git records every change to a codebase as a commit, a snapshot that points to its parent commits. With that history, developers can compare versions (a diff), see who last changed each line (blame), and combine work from different people (a merge).
2 · Git copies everything
Git is decentralized. Every clone holds the entire history and can do any operation offline, including diffs, blame and checking out old versions. That works well for normal repositories. For a giant monorepo, meaning one repository holding a whole company's code, every machine has to download huge amounts of data.
3 · Prior art at scale
2/5Martin Fowler· Martin Fowler· Oct 13
Test harness lifts a cheap coding model to 10/10 but slows frontier models
In an experiment published on Martin Fowler's site, live test feedback during coding brought a budget AI model from 3 to 10 working services out of 10. On a top model, the same feedback added cost and changed nothing.
Why it matters · It points to a concrete way to run cheaper models on real backend work, and to the point where tests pay off for each model tier.
Know this first
Context from the editor, not the article · 37 sec
1 · Coding agents
A coding agent is a language model that writes code, runs commands and edits files on its own until it decides a task is done. OpenAI's Codex is one. Cost is measured in tokens, the chunks of text the model reads and writes. Each tool call and test result it reads adds tokens.
2 · Harness: guides and sensors
A harness is everything placed around a model to steer it. Using Birgitta Böckeler's terms, guides give direction before the agent acts, such as specs and examples. Sensors check the result afterwards, such as tests, and report back so the agent can fix its own mistakes.
3 · API contracts
OpenAPI and AsyncAPI are machine-readable formats for describing interfaces. OpenAPI covers HTTP endpoints and AsyncAPI covers message streams such as Kafka. Because tools can read them, they can automatically generate tests and fake versions of other services (mocks) that behave as the contract says.
3/5Cloudflare· David Laban· Oct 13
How Cloudflare's D1 runs millions of small databases without a central bottleneck
Cloudflare explains how D1, its hosted SQLite database service, handles millions of databases. Queries are routed using copies of data held near users, and a slower background system enforces usage limits.
Why it matters · AI coding platforms now create a database per user or per app. This is a detailed, real-world account of how to build the management layer for that kind of fleet.
Know this first
Context from the editor, not the article · 44 sec
1 · Control plane vs data plane
Cloud services usually split their work into two parts. The data plane serves the actual work, here running SQL queries, and has to be fast. The control plane handles management tasks such as creating and deleting databases or enforcing limits. A common mistake is letting the control plane's central database slip into the path every query takes.
2 · Cloudflare's building blocks
Workers are small serverless programs that run in Cloudflare data centers worldwide. A Durable Object is a single stateful instance with its own storage, placed in one location. Every D1 database is one SQLite Durable Object, which makes databases cheap to create. Behind all of this, the metadata about every database lives in a central Postgres cluster.
3 · Eventual consistency
4/5Latent Space· Oct 13
Meta's Muse Wonder brings its AI lab close to the frontier
Meta's AI lab released Muse Wonder and a stronger Wonder Full model. Independent testers score Full 56, against 58 for the leader, Anthropic's Opus 5.5. Its biggest gains are on multi-step agent tasks like terminal coding.
Why it matters · A third well-funded lab now competes at the top for coding agents, which affects tool choices, prices and how fast the leaders release new models.
Know this first
Context from the editor, not the article · 40 sec
1 · Frontier labs and model tiers
A few labs build the most capable AI models, called frontier models. Each sells a family in sizes: Anthropic has Opus, Sonnet and Haiku, and OpenAI has Sol, Terra and Luna. Bigger models are smarter but slower and cost more. Meta's lab, Meta Superintelligence Labs, started about 14 months ago, and its first family was Muse Spark.
2 · How models get scored
Labs publish their own benchmark scores, so independent evaluators like Artificial Analysis and Vals AI rerun the tests. Some benchmarks report a percentage solved. Others use Elo, the chess-style rating, where a model gains points by winning head-to-head comparisons. Self-reported numbers deserve more skepticism than third-party ones.
3 · Tokens, effort and cost
5/5Engineering at Meta· Oct 13
Meta merges its ad-ranking systems into one large, LLM-style model
Meta replaced many separate ad-prediction models with one large central model called GEM, trained on all its apps. Meta reports 18.9% more conversions and 12% more ad clicks, and says the model improves predictably as it grows.
Why it matters · Recommendation models have mostly not improved predictably with size the way language models do. Meta's report is a rare production-scale claim that they can, along with the engineering it took.
Know this first
Context from the editor, not the article · 38 sec
1 · How ad ranking works
Each time you open Facebook or Instagram, a system scores thousands of candidate ads by predicting how likely you are to click (click-through rate) or buy (conversion rate). The ads that score best are shown. These predictions have to finish in milliseconds, which caps how large the model making them can be.
2 · Scaling laws
With large language models, quality improves smoothly and predictably as you add parameters, data and compute. This is called a scaling law, and it makes spending on bigger models a safe bet. Recommendation models have mostly not behaved this way. Their inputs are messy and of many kinds, and user behaviour keeps shifting.
Google (with Piper) and Meta (with Sapling) built their own source control for very large monorepos. In both, a central server stores the history and machines fetch files only when they need them. Anthropic's Scion draws on the lessons from those systems.
Daily merges to Anthropic's monorepo, which rose about twelvefold between May and September 2026.1 / 4
Anthropic has moved its main codebase off git and onto Scion, a version control system it built in-house. The pressure came from AI agents. Merges into the company's 1 (a single repository holding most of its code) rose from about 2,500 a day in May 2026 to more than 30,000 a day in September.
Why git broke down
Git gives every clone the full history so it can work offline. Anthropic's main-branch history is almost 100 GB, and a compressed working copy is over 25 GB. 2 (continuous integration, the automated tests run on each change) checks out code about 25 million times a day. Fetched naively, that would be more than 600 PB of traffic a day. Git's partial-clone features and several hundred internal mirrors bought time, but they became hard to run as merges sped up.
The team's insight was that nearly every client was an agent or job that is always online. Git's offline design was a cost they got no benefit from.
How Scion works
Results
Each cache tier hits more than 99% of the time.
The infrastructure is 200 times smaller in CPU and memory than the old git mirrors.
Checkouts take seconds instead of minutes, and CI gained 25% CPU capacity.
Built quickly, with Claude
Seven people built Scion, a code review tool called Antique, and related systems, and finished the migration in five months. An early version of Claude Mythos Preview rewrote the ingestion pipeline to use 20 times less memory and run 4 times faster. The authors say engineers mainly supplied design judgment and often had to tell Claude "no," for example when it added needless defensive complexity.
Caveats
Anthropic says Scion only suits enormous monorepos and is not a git replacement for most teams. It isn't releasing Scion. Instead it suggests that git platforms adopt its server-side ideas.
Anthropic has replaced git for its main codebase with Scion, a version control system it built in-house. The reason is volume. In May 2026 the company merged about 2,500 code changes a day into its 1, the single repository that holds most of its code. By September it was merging more than 30,000 a day, and most of that code was written by Claude agents. A team of seven built Scion, a code review tool called Antique, and half a dozen related systems, and completed the migration off git in five months.
Why git stopped fitting
Git is decentralized: every clone is a complete repository that can compute diffs, show history and 2 (who last changed each line), and check out any version while offline. Anthropic's numbers show how badly that design fits its workload:
Main branch history: almost 100 GB.
Working copy: over 25 GB compressed.
Checkouts: about 25 million a day for 3 (continuous integration, the automated builds and tests that run on each change). That count leaves out developer machines, agent sandboxes and research jobs.
Traffic: fetched naively, that would be more than 600 PB of git traffic a day.
The team already used git's partial-repository tools: shallow clones (recent history only), sparse checkouts (selected directories only), and promisor remotes (fetching missing objects later). It also used the standard workarounds of internal mirrors and "seeds," which are snapshots of the repo kept in blob storage. At the peak it ran several hundred git mirrors. As the merge rate climbed, seeds fell further behind the latest commit, and operations that need history, such as diff and blame, became fragile on partial clones.
The team's key observation was that it already used git as a centralized system with one authoritative copy, and almost every client was an agent or job that is always online. Git's offline-first design was working against it.
The design principles
How it works
The basic unit is a 6, an entry in a write-ahead log, which is an append-only record of changes. A git commit points to a full snapshot of the file tree. A changeset instead lists only the files that changed relative to its first parent, plus 7 pointers to the compressed file contents in blob storage. "Content-addressed" means each piece of data is named by a hash of its contents, so stored data never changes. Accepting a changeset needs no locks and no coordination between servers. Moving a ref is a separate compare-and-swap on a single row in 8, Google's globally distributed database.
A list of changed files cannot quickly answer questions like "who last edited this line?" To answer those, Scion builds 9: blame structures, path history, and skip lists over the commit graph that speed up ancestry queries. Each type is defined recursively, so its value for a changeset is computed from its parents' values. Because one generic mechanism handles all of them, new indexes are easy to add (the team later added copy detection and path search). Each can be computed eagerly or on demand, and none of it is visible to clients.
Fetching is also different from git. In git, the client describes what it already has, and the server computes a custom packfile of what is missing. That is CPU-heavy, and a multi-gigabyte response cannot be resumed if it fails. Scion's client, scn, starts from a root tree, checks its local store, and requests only the missing trees and blobs it wants, recursively. Each request names a specific object that never changes, so any cache can answer it.
An illustrative example: a CI job that only needs services/api/ asks for the root tree, then that directory's subtrees, then the blobs inside. The rest of the repo is never requested. Sparse checkout falls out of the protocol with no special support.
The objects pass through three tiers that all speak the same RPC (remote procedure call) protocol:
scion-daemon: one per machine, shared by every job on that machine, seeded from a periodic snapshot.
scion-cache: regional servers that stream objects from memory, already in the format the daemon stores on disk.
scion-server: the authoritative servers, which read from Spanner or cloud storage.
Any tier could talk to any other, but the tiering is strictly enforced so that a failing regional cache cannot overwhelm the central servers.
Results
Cache hit rate: above 99% at each tier.
Infrastructure: 200 times smaller in CPU and memory than the old git mirror fleet.
Checkout time: seconds instead of minutes.
CI: a 25% gain in CPU capacity.
The role of Claude
Anthropic says Claude both caused the problem and made the fast fix possible. An early snapshot of Claude Mythos Preview rewrote the hand-written git-to-Scion ingestion pipeline without further instructions. The new version used 20 times less memory, ran 4 times faster, and preserved the pipeline's ordering invariants. Claude also found algorithmic speedups, such as an ancestry query that was missing an index, and helped build hermetic simulations (self-contained test environments) and fuzzing (testing with large volumes of random input).
The authors say every engineer on the team now rates Claude a better coder than themselves, but that much of their job was telling it "no." Examples include agents that scanned the whole commit log to find when a change merged instead of asking the review tool, and adversarial AI review that pushed toward needless defensive complexity. Humans still review every change, but they check intent rather than reading each line. Slack-based Claude "superfans" each watch one component's telemetry for subtle anomalies.
Open questions and caveats
Anthropic says Scion is not a general replacement for git. It only makes sense for enormous monorepos, and it requires its own code review, search and CI. A global merge-queue lock no longer works at this rate, so the team relies on testing after merge and before deploy, and lets Claude fix the conflicts that result. The post does not say how often those conflicts reach production. The team also gives no failure or incident data for Scion itself. Rather than releasing Scion, Anthropic suggests that git hosting platforms adopt its ideas: server-side RPCs, a different negotiation protocol, and sparse and shallow features that work well together. It expects other companies to hit these limits within six to twelve months.
Remember
Most of Scion's gains come from content-addressed, immutable data, which lets any cache layer answer any request safely.
Agents that are always online make git's offline, full-copy design a pure cost for large monorepos.
At 30,000 merges a day, a global merge-queue lock stopped working. Anthropic tests after merge and lets Claude fix conflicts.
The two conditions, with and without the harness, both handed off to the same independent evaluator.1 / 4
A new experiment on Martin Fowler's site asked whether a 1 (an AI model that writes, runs and fixes code on its own) builds a service more reliably when it gets automated test feedback while it works. The answer depended on the model.
The task
Each agent ran in 2, OpenAI's coding agent, and built a Java 3 (BFF), a service that sits between client apps and backend systems. The service had to call an Order API and publish the first product from each search to 4, a message-streaming system. It also had to handle tricky failure cases. One example: a product creation that times out had to return HTTP 202 ("accepted, still working") with a link the client can poll. Once each agent finished, a separate evaluator ran 178 acceptance tests against the service. A run counted as accepted only if every test passed.
The harness
The harnessed agents also got guides: 5 and 6 specifications (machine-readable interface contracts), example requests and responses, and written practice advice. They also got sensors: contract checks, API tests and mocked downstream services, built with a tool called 7. The agent ran these whenever it chose and fixed whatever failed. It was told not to edit the expected results.
Results (10 runs per model, low reasoning effort)
GPT-6 Sol (flagship): 10 of 10 accepted with the harness and 10 of 10 without. The harness used about 10.5× the tokens, took about 3× as long (19m53s vs 6m51s) and cost about 7× more ($2.68 vs $0.41).
GPT-6 Luna (budget model): 3 of 10 accepted without the harness and 10 of 10 with it. The harness cost $0.27 per run vs $0.09 without, and took 35 min vs 16 min.
A harnessed Luna run cost about 33% less than an unharnessed Sol run, and both reached 10 out of 10.
Luna's failed runs still passed at least 144 of the 178 checks. The misses were small details: the 202 timeout flow, an extra Kafka header added by Spring's serializer, a null where the contract required an array, a 415 status code where the brief asked for 400, and a mismatched environment variable name. The author calls the harness "executable attention." A failing test pulls a requirement the agent has dropped back into focus.
Caveats
The study covers one new (greenfield) Java service, built from an unusually detailed brief, with 10 runs per model. The costs leave out the human work of writing the contracts. Because guides and sensors were added together, the study can't tell which one helped. The author's revised view is that cheaper models should run the sensors throughout development, while frontier models should run them once as a final acceptance gate. Either way, an independent check stays.
An experiment published on Martin Fowler's site started from a hypothesis the author expected to confirm. The idea was that a 1, meaning an AI model that writes code, runs commands and fixes its own errors, would build a service more reliably and with less wasted work if it got clear contracts and test feedback while coding. For a frontier model, the results contradicted that. For a budget model, they supported it strongly.
The setup
Every attempt used 2, OpenAI's coding agent, at low reasoning effort. Each ran in an isolated Docker container with a fresh workspace and no memory carried over from earlier runs. Every attempt received the same detailed written brief.
The brief asked for a 3 (BFF), a service that sits between client apps and backend systems and shapes responses for the client. This one was for product discovery. It had to:
expose an HTTP API and validate incoming requests and downstream responses
call an Order API
after a successful availability search, publish only the returned product to , a message-streaming system, and wait for Kafka to confirm the message before replying. Requiring only the first product meant the agent couldn't simply pass all the data through.
After development ended, a separate "outer loop" evaluator ran 178 acceptance tests against each service. It used its own fake downstream services and captured Kafka messages itself. The agents never saw these tests. A run counted as accepted only if the service started and passed all 178.
The harness
The author uses Birgitta Böckeler's framing. A behavioral harness combines guides, which steer the agent before it acts, and sensors, which observe results and feed them back.
The guides were:
6 specifications for the BFF and Order API, and an 7 specification for Kafka. These formats describe interfaces in machine-readable form.
example request/response pairs covering timeouts, malformed payloads, filter violations, retry sequences and Kafka confirmations
an "API-development skill", a packaged set of instructions on simulating dependencies, verifying behavior and diagnosing failures. It came through a plugin with 8 tools. MCP (Model Context Protocol) is a standard way to expose tools to an agent.
The sensors were contract-conformance checks, API tests on response values, and assertions on side effects such as calls made to mocked services and messages published to Kafka. Results came back as test reports, 9 reports (a common JSON format for test results) and API coverage reports. The author built all of this with 10, a contract-testing and service-mocking tool, and notes that equivalent tools would work.
In Böckeler's terms, the checks were computational: deterministic tools decided pass or fail, not an LLM's judgment. Fixing the failures was inferential, because the agent had to interpret the results itself. The agent ran the loop through the project's test command, which did several things in order:
validated the configuration and examples
built the project and ran unit checks
started the mocks and launched the app against them
ran the checks
The agent reran failing scenarios, then ran the full suite as a final gate. Nothing ran automatically after each edit.
One design point matters. If an agent writes both the code and the tests, it can misread a requirement the same way in both. An "examples validate" step checked that the examples matched the specs. The agent was told to keep the contracts and examples as they were and fix the implementation, not weaken the expectations. That gave the checks a source that did not depend on the agent's reading of the brief.
Results (10 runs per model)
Model
Harness
Avg tokens
Avg time
Est. cost
Accepted
GPT-6 Sol
Yes
11.33M
19m53s
~$2.679
10/10
GPT-6 Sol
No
1.08M
6m51s
~$0.406
10/10
GPT-6 Luna
Yes
22.93M
35m
~$0.273
10/10
GPT-6 Luna
No
5.86M
15m56s
~$0.086
3/10
Costs are API-equivalent estimates calculated from token counts, not actual bills. Sol is OpenAI's flagship model. Luna is its cost-optimized model, roughly the old "nano" tier. Sol solved the brief from a single prompt every time. For Sol, the harness meant about 10.5× the tokens, about 3× the time and about 7× the cost, with no gain in acceptance. In exploratory runs, Claude Sonnet 4.6, Claude Opus 4.6 and Gemini 3.8 Flash also solved the task unaided on the first try.
For Luna, the harness added about 17.1M tokens, 19 minutes and $0.187 per attempt, and raised acceptance from 3/10 to 10/10. A harnessed Luna run still cost about 33% less than an unharnessed Sol run.
How the unharnessed runs failed
The failed runs were close. Every one still passed at least 144 of the 178 checks, and unharnessed Luna passed 94.8% of checks overall. The misses clustered at protocol details and integration points:
The 202 timeout flow. Instead of 202, four apps returned 503, two returned 400 and one returned 429. Another created monitors but never reached the final 201 response. In 7 runs the missing monitor link also caused a later check to fail. The author counts those as knock-on effects, not separate bugs. He suspects the timeout detection matched too narrow an exception type, but the logs can't confirm it.
Kafka wire contract. In three runs, every message arrived but was still rejected. Two runs used Spring's JSON serializer, which added an unexpected __TypeId__ header. One sent "categories": null where the contract allowed only an array or no field at all.
Exact HTTP contracts. One run returned 415 where the brief required 400. Others sent invalid requests to a generic 500 handler.
Configuration. One generated client read ORDER_API_API_KEY while the launch set ORDER_API_KEY, which likely broke product creation. Configuration checks in the harness catch this kind of mismatch.
The author calls the harness executable attention. Every one of these behaviors was in the brief. His reading is that requirements can "lose influence" during implementation, which he calls an attention lapse, and a red sensor brings them back. He says plainly that the experiment did not establish why the lapses happen.
Trade-offs and limits
The costs cover only machine generation. They leave out the human work of writing and maintaining the contracts, examples and harness, and the cost of diagnosing a bad result. The sample is small: 10 runs per model, one greenfield Java service, low reasoning effort, and an unusually complete brief. Guides and sensors were added together, so their separate effects can't be measured. The author warns against applying the exact figures to legacy code, other languages or vague requirements.
He also notes that Sol's 10/10 itself depended on the independent evaluator. His revised hypothesis is that model capability changes when sensors run, not whether they are needed. For cheaper models with inconsistent results, he would run the sensors throughout development. For frontier models, he would run them once as a final acceptance gate. He has not yet measured that final-gate-only setup. It is his next experiment, followed by weaker briefs, existing codebases, other languages and locally run open-weights models.
Remember
On the frontier model, the harness cost about 7× more per run with no gain: both conditions shipped 10 of 10.
Failed unharnessed runs passed at least 144 of 178 checks; they broke on timeouts, wire-format details and exact status codes.
Checks drawn from contracts written by humans, which the agent may not edit, stop it from writing tests that match its own misreading.
A strongly consistent system shows every reader the latest write immediately. An eventually consistent one may serve stale data for a while but converges to the right answer. Stale reads are cheaper and keep working through partial outages, so systems use them wherever being a few seconds out of date does no harm.
D1's main components: Edge API Worker, Eyeball Worker, Durable Objects, Workers KV and central Postgres via Hyperdrive.1 / 4
Cloudflare has explained how 1, its managed database built on 2 (a small database engine that stores each database as one file), copes with a flood of tiny databases. AI coding platforms now create one database per user, app or preview environment. Over the past year the number of live D1 databases grew 15x and daily active ones 18x, reaching millions in total.
The problem
Every D1 database is a 3: a small stateful instance with its own storage, living in one Cloudflare data center. Creating millions of them is cheap. The management layer, called the 4, keeps its records in one central Postgres cluster. If every query had to check that cluster, Postgres would become a bottleneck and a single point of failure.
Cloudflare's rule is that queries, the data plane, never touch central components. Management actions such as creating databases may. Billing and limits run in the background and can be slightly out of date.
Creating a database
Creation checks the account's limit against a cached Postgres replica (a read-only copy). It then starts a new Durable Object near the user, writes one row to Postgres, and finally records routing information in 5, Cloudflare's globally replicated key-value store. The Postgres write is the moment the database officially exists. If a step fails, the flow retries with brand-new IDs so two objects never claim the same database.
Heartbeats fix leftovers
Every 30 seconds, each Durable Object asks the control plane whether its database is still active. If a failed attempt left an orphan behind, the orphan learns within about 30 seconds that it doesn't exist and deletes itself. Heartbeats also repair stale Workers KV entries.
Fast queries
A query's route is read from Workers KV. Only on a rare miss does it fall back to 6, Cloudflare's caching proxy for Postgres. Cloudflare relies on Workers KV because it is durable storage, not just a cache. A mass cache wipe that sent a million databases to Postgres at once could cause a self-sustaining overload.
Limits without hot spots
Durable Objects report their storage sizes through a queue. Instead of summing every database's size on each check, a Postgres trigger logs each size change. A job runs every second, adds up those changes per account, and updates one total row per account. Cached reads keyed only by account ID let millions of databases share a single answer. Free-tier daily row limits work differently: usage is summed in 7, an analytics database, and over-limit accounts are flagged in 8, Cloudflare's internal global key-value store.
The cost is that limits apply a few seconds late. The post reports growth multiples but no latency figures.
Cloudflare has published a detailed tour of the 1 behind 2, its managed serverless database built on 3 (a small database engine that stores each database as one file). The control plane is the management layer that creates databases, deletes them and enforces limits. The pressure came from AI coding and "vibe coding" platforms, which give every user, app or preview environment its own database. Cloudflare reports 15x growth in live D1 databases over the past year, 65x over two years, and 18x growth in daily active databases (databases that ran at least one query that day). It says platforms now hold "millions" of databases, with hundreds of thousands active at any moment. OpenAI's ChatGPT Sites is one named user.
The problem
Traditional setups run one or two large database clusters per application. D1 instead runs one SQLite 4 per database. A Durable Object is a stateful instance with its own storage, living in one Cloudflare location. Creating millions of them is easy. Keeping track of them is the hard part. The metadata for every database lives in a central Postgres cluster in Cloudflare's "Core" data centers. If every query had to consult that cluster, it would become both a latency tax and a single point of failure.
Cloudflare therefore sorts every operation into one of three planes:
Data plane: queries. These must be fast and always served from the edge, meaning the data centers near users.
Control plane: API operations such as create, delete and list. These may depend on central components.
Background plane: analytics and billing. These can be eventually consistent and run anywhere.
Creating a database
Running wrangler d1 create (Wrangler is Cloudflare's command-line tool) took about 1.6 seconds end to end in the post's example. The flow:
If step 3 or 4 fails, the loop retries with new IDs. Reusing a database UUID with a fresh Durable Object would let two objects believe they own the same database. Why not wrap the whole flow in one Postgres transaction? Because that would hold a database connection open while waiting on a Durable Object that might be on the other side of the world, and that doesn't scale.
Heartbeats as the repair mechanism
Every Durable Object checks in with the control plane every 30 seconds, plus a random per-database offset (jitter) so they don't all arrive at once. The control plane replies with whether the database is active or deleted, along with the account's limits. These reads can tolerate staleness, so they are served from caches or replicas.
A worked failure case: Durable Object A is initialized, then the Postgres write fails. The retry creates Durable Object B and succeeds. Postgres is the source of truth and knows only B, so users can only reach B. Within about 30 seconds A heartbeats, learns its database doesn't exist, and marks itself deleted. Heartbeats also rewrite stale Workers KV entries. Workers KV offers no consistent reads, so each Durable Object acts as the single writer for its own entry. It also stores its active or deleted state locally, so it can reject queries even when Workers KV is out of date.
Keeping queries off Postgres
An HTTP query arrives at the Edge API Worker, which handles authentication, authorization, rate limiting and validation. It looks up the database's routing metadata in Workers KV and passes the query to the Eyeball Worker, a proxy that forwards it to the Durable Object. If Workers KV misses, which is rare, the lookup falls back to Hyperdrive: first its cache near the caller, then its cache near Postgres, and only then a replica. Queries coming from a user's own Worker skip the lookup entirely, because that Worker's D1 binding (a configured connection) already carries the routing information.
Why use Workers KV when Hyperdrive already caches? Workers KV is durable storage, not just a cache. If a mass cache purge sent a million databases to Postgres at once, Cloudflare warns, the result could be a 8: overload that keeps itself going even after the original trigger is gone. Cloudflare also notes that addressing Durable Objects by name is the simpler default for most applications. D1 uses unique IDs only because it needs extra routing metadata either way.
Enforcing limits asynchronously
Storage limits are 5 GB per account on the Free plan and 1 TB on Workers Paid. Durable Objects publish their sizes to a Kafka-like queue (Kafka is a widely used message queue). The number of queue consumers is capped, which caps the write load on Postgres.
Summing an account's storage on every check (SELECT sum(storage) ... WHERE account_id = ?) would get slower as the account adds databases. Updating one per-account total row on every change would make writers wait on each other for a lock on that single row. The fix uses three tables:
database_stats holds the latest size of each database.
A trigger writes each change in size (a delta) as a row in account_database_stats_changes.
A job runs every second. It uses DELETE ... RETURNING inside a 9 (common table expression, a named subquery) to consume all pending deltas atomically, sums them per account, and upserts the results into account_database_stats.
Durable Objects read their account's total on each heartbeat through Hyperdrive. The cache key contains only the account ID, so millions of databases on one account share a single cached value. Adding the database ID to the key would give a more precise limit but wreck the cache hit rate. To get a shorter cache lifetime than Hyperdrive's 60-second default, the query includes a dynamic_ttl parameter computed as floor(now / X seconds). The parameter changes every X seconds, which forces a new cache key.
Free-tier daily row limits work differently. Every query emits a usage event to 10, a database built for analytics. A central "Limiter" sums each account's rows since midnight. Accounts over the limit get an email and a key in 11, Cloudflare's internal globally replicated key-value store, set to expire at the end of the day. Durable Objects check Quicksilver from the edge and refuse queries for flagged accounts.
Trade-offs and open questions
Limits react a few seconds late, and an orphaned Durable Object can linger for up to about 30 seconds. Cloudflare accepts both. The post gives no latency or throughput figures beyond growth multiples, and no load-test numbers. It also hints that storage enforcement may move to the ClickHouse-and-Quicksilver pattern later.
Remember
Periodic heartbeats from each database replace distributed transactions: partial failures are tolerated and repaired within about 30 seconds.
To avoid lock fights on one hot row, log the changes and fold them into the total once per second.
Choose cache keys for hit rate: keying by account alone lets millions of databases share one cached value.
Models read and write text in tokens, chunks of about three-quarters of a word. Prices are quoted per million tokens, with input and output priced separately. A "reasoning effort" setting lets a model think longer before it answers. That raises accuracy, but it also raises token use and cost.
Elo
The chess-style rating system, used here to rank models by head-to-head wins on tasks.
Artificial Analysis index scores: Wonder Full 56 and Wonder 52, up from Muse Spark 1.3's 48.
What shipped
1, the AI research group Meta founded about 14 months ago, has released Muse Wonder, its second family of models. The family has two models. Wonder is the faster one. Wonder Full is the full-size model, and it is available only to subscribers of 2, Meta's coding-agent tool. Wonder is also open to developers through Meta's API at $4 per million input 3 and $20 per million output tokens (a token is a chunk of text about three-quarters of a word long). Meta has published no price for Full.
Meta says it kept scaling both pre-training, where the model learns from large amounts of text, and 4, a later stage that rewards good outcomes. Meta also says it trained the model to keep working on long tasks instead of giving up early.
How it scores
5, an independent evaluator, averages ten tests into an Intelligence Index. At maximum 6, Wonder Full scores 56 and Wonder scores 52. Meta's previous model, Muse Spark 1.3, scored 48 just six weeks earlier. The leader, Anthropic's Opus 5.5, scores 58.
The biggest jumps came on agentic tasks, where a model takes many steps on its own. On 7, a test of finishing tasks in a command-line shell, Full went from 33% to 57%. On a coding-agent index, Full inside Muse Code scored 68. That ties Anthropic's Claude Code running Sonnet 5.5 and edges out Opus 5.5 at 66.
Cost and efficiency
Wonder writes about 10% fewer output tokens than its predecessor. However, it reads a lot of input, so a typical index task costs $4.52. That is cheaper than Opus 5.5 ($5.98) but far above OpenAI's GPT-6.1 Sol ($0.72). Full's cost per task can't be calculated because it has no price.
Doubts and rough edges
Labs are often accused of tuning models to the tests they'll be judged on. Meta answered with a chart meant to show gains on tasks it never trained for. Critics pointed instead to weak 3D graphics demos, and Wang, who leads MSL, admitted Meta hadn't trained for those.
Early users praise how precisely it follows instructions and say it is weaker at frontend design and creative writing. One analyst estimates Meta remains 3–6 months behind OpenAI and Anthropic. Meta has published no detailed 8, the safety report labs usually release with a model. On launch day, a bug drained users' usage quotas, which Meta fixed the same day.
The launch
1 is the AI research group Meta set up about 14 months ago. It has released Muse Wonder, its second family of models, codenamed "Watermelon." The family has two models. Muse Wonder is the faster, cheaper "fast frontier" model. Muse Wonder Full is the full-size model. Meta CEO Mark Zuckerberg described Wonder as "a much larger and more advanced class of models" than Muse Spark, MSL's first family, which shipped in April.
Access is split. Developers can call Wonder through Meta's Model API, and it also runs in 2, Meta's coding-agent tool. Full is available only to paying Muse Code subscribers, and Meta has published no price for it. Wonder costs $4 per million input 3, $0.20 per million cached input tokens (text the model has recently processed and can reuse cheaply), and $20 per million output tokens. Its context window, the amount of text it can consider at once, is 1 million tokens. It accepts text, images, video and audio, and it outputs only text.
What Meta says it built
Alexandr Wang, who leads MSL, pitched three features. Active Memory carries context across days, weeks and months. Active Focus keeps the model working through obstacles until a task is finished. He also claimed state-of-the-art domain expertise in finance and law. Wang says MSL kept scaling both pre-training and 4 (RL) after Spark. Pre-training is learning from large amounts of text. RL is a later training stage that rewards the model for good outcomes.
MSL researcher Shuchao Bi gave the most detailed account. The team trained the model to follow instructions over very long tasks. It also trained explicitly against "laziness," meaning giving up too early, and invested in alignment to prevent 5. Reward hacking is when a model learns to game its scoring instead of doing the task. These are Meta's own claims. Meta did not point to a detailed 6, the safety and evaluation report labs usually publish with a model.
What independent testers found
The most detailed outside numbers come from 7, whose Intelligence Index v4.3 averages ten evaluations. At maximum 8, Wonder Full scores 56 and Wonder scores 52. Muse Spark 1.3 scored 48 just six weeks earlier, and Anthropic's Opus 5.5 leads at 58.
Full improved on all ten evaluations, and its largest gains came on agentic tasks, where the model takes many actions to reach a goal:
9 4.0, which tests whether a model can finish tasks in a command-line shell, rose from 33% to 57%.
GDPval-AA, an Elo-rated test of economically useful work, rose from 1681 to 1857.
AA-Briefcase, also Elo-rated, rose from 1581 to 1729.
Full ranks in the top three on 6 of the 10 evaluations. On Artificial Analysis's Coding Agents Index, Wonder Full running inside Muse Code scores 68. That ties Claude Code (Anthropic's coding agent) running Sonnet 5.5 and beats Opus 5.5 at 66.
Vals AI, another evaluator, ranks Full fifth on its Vals Index, ahead of every OpenAI model. On its private ProofBench math-proof test, Full scored 94 out of 100, up from Spark's 58, while the best models score 99–100.
Efficiency and cost
Both new models used about 54,000 output tokens per index task, roughly 10% fewer than Spark 1.3. That is more than OpenAI's GPT-6.1 Sol (38,000) and fewer than Fable 5.1 (78,000). Vals found Full needed about 30% fewer output tokens on Terminal-Bench and half the steps on its Vibe Code Bench for the same score.
Cost is mixed. Wonder averages $4.52 per index task, mainly because it reads a lot of input: 7.69 million tokens per task, against 6.44 million for Full. That puts it below Opus 5.5 ($5.98) and Sonnet 5.5 ($5.46) but well above GPT-6.1 Sol ($0.72). Full's cost per task can't be calculated because it has no published price.
Meta's self-reported numbers are stronger still. On SWE-Marathon, a long software-engineering benchmark, Meta reports 57.5% for Full against 46.3% for Opus 5.5. Treat these as vendor figures until others reproduce them.
The benchmark-gaming question
Labs are often accused of "benchmaxxing," training a model on the kinds of tests it will be judged by. Meta's answer is a plot comparing tasks covered in post-training with tasks that were not. It is meant to show gains on unfamiliar, out-of-distribution work as well, which Meta calls "big model smell."
Critics turned the charge around. Early users posted weak 3D browser demos built with three.js, a JavaScript graphics library. Wang admitted, "we did not explicitly train our model on 3d demo games… in retrospect we probably should've." YouTuber and developer Theo argues that 3D demos are themselves a benchmark that other labs have trained for.
How practitioners reacted
Opinions split. Theo, who had early access, rates it alongside Opus 5.5. He has Opus call Wonder for code and architecture review, but he does not recommend replacing Opus. Other early users praised how precisely it follows instructions and how it checks its own code. They found it weaker at frontend design, SVG graphics and creative writing. The analyst @scaling01 estimates Meta is still 3–6 months behind OpenAI and Anthropic and wants fuller system cards. Theo also notes that Wonder and Full behave like "very different models": Full matches Opus on Artificial Analysis while using fewer tokens.
Rough edges and open questions
On launch day, a bug drained Muse Code usage quotas far too quickly. Meta fixed it the same day and reset everyone's quota, and Wang said other issues remain. Several questions are still open:
Full has no price, so its cost-effectiveness can't be checked.
Without a detailed system card, Meta's safety claims rest on its word.
Meta has not said how large the model is.
Results on one partner's self-improvement test, its RSI Index, are still pending.
That partner described the models as strong at executing tasks but weaker at the intuition needed for scientific discovery.
Remember
Meta went from 48 to 56 on the Artificial Analysis Intelligence Index in six weeks, just behind Opus 5.5 at 58.
The gains are concentrated in agentic coding: Terminal-Bench nearly doubled, from 33% to 57%.
Wonder Full has no public price or detailed safety report, so its cost and safety can't be checked independently.
A common trick is to train one huge "teacher" model offline, then have small, fast "student" models learn from its outputs. This is called knowledge distillation. The students serve live traffic. The teacher never has to run inside a user request.
click-through rate (CTR)
The fraction of ad impressions that get clicked.
Scaling-law curve from a small version of GEM: quality improves predictably as compute grows.1 / 4
What changed
Meta has described the 2026 version of GEM (Generative Ads Model), a very large model that predicts which ads people will click or buy from. Facebook, Instagram, Reels and other surfaces used to have their own separate prediction systems. GEM is now one central 1, meaning one large model whose knowledge feeds many smaller ones, trained on data from all of them.
Meta reports 18.9% more conversions and 12% higher click-through rate (CTR, the share of ad views that get clicked) across its ad surfaces. It gives no baselines or error bars.
Making a recommender scale like an LLM
Language models get predictably better as they grow. Recommendation models usually don't: their inputs mix fixed facts with long, irregular event histories, and user behaviour keeps shifting. Meta's new architecture, Kunlun, gives 2x the performance of its predecessor for the same compute. Meta says it follows an LLM-like 2, with 2.5x more model complexity than earlier versions.
Tricks that keep it affordable:
3 looks only within fixed windows, so cost grows linearly with history length rather than with its square.
CompSkip switches off sequence modules in some layers. That cuts compute by 43% with negligible quality loss.
OneSeq merges different event histories (purchases, posts) into one time-ordered sequence.
Prediction quality improved predictably as histories got longer, and bigger models gained more from long histories. Production histories are now twice as long.
Getting the knowledge into fast models
GEM is too slow to run inside a live ad request. Hundreds of small "vertical" models serve traffic instead and learn from GEM. Until now this happened through 4, where small models copy the big model's predicted probabilities.
LoopFM adds a second channel. It compresses GEM's internal state into compact vectors and keeps a time-ordered memory of them per user, which the small models read. These vectors come from computation GEM already does to produce distillation labels, so Meta says knowledge transfer doubles at no extra cost.
Solaris runs GEM in the background on the user-ad pairs a request is likely to need, and delivers the results just in time. If a result is missing, it falls back to the user's recent averages or to similar users.
Training
GEM trains on several thousand GPUs. Custom kernels, 8-bit arithmetic and "5D parallelism" (splitting the model five ways across GPUs) raised utilization to 20–25% of peak GPU arithmetic, double what it was, while total training compute grew 4x.
Caveats
The post reports relative gains only. It has no ablations showing what each technique contributes, and its scaling chart comes from a small version of the model.
The news
Meta has described the 2026 generation of GEM (Generative Ads Model), which it calls the industry's largest recommendation-system 1. A foundation model is one large model trained on broad data whose knowledge feeds many smaller task-specific models. The first GEM was announced last year. The new version goes further. Facebook, Instagram, Reels and other surfaces each used to have their own prediction systems. One central model now learns from data across all of them.
Meta's headline results: 18.9% more conversions and 12% higher click-through rate (CTR, the share of ad views that get clicked) across its ad surfaces. It also reports extra conversion uplifts of 5.8% on Facebook, 4.1% on Instagram and 1.6% for off-site conversions (purchases on advertisers' own sites), all "for targeted users over the past year". The post gives no baselines, confidence intervals or definition of "targeted users". It reports four advances.
1. A recommendation model that scales like an LLM
Language models improve predictably with size. Recommendation models usually don't, because their inputs are very varied. Some features are fixed facts, such as demographics or a representation of the ad's content. Others are sequences of past events: clicks, purchases, posts. And the data distribution keeps shifting.
Meta's new architecture, Kunlun, replaces the previous one, Interformer. Meta says Kunlun delivers 2x the performance for the same compute. It reports an LLM-like 2 at its largest pre-training scale, with 2.5x more model complexity than earlier GEM versions. Note that the published scaling chart comes from a lightweight, small-parameter version of GEM.
Each Kunlun layer has three parts:
Attention adapted to find long-range patterns in a user's behaviour history.
A summarization component that condenses the sequence into key user insights, linking sequence and non-sequence features.
Cross interaction built as a 3. This is a design where many sub-networks ("experts") exist and different ones handle different inputs, so capacity grows without every input paying for all of it.
Several changes make it affordable:
4. Full self-attention compares every event with every other, so cost grows with the square of sequence length. Kunlun attends only within fixed windows sized in whole blocks that suit GPU kernels, which makes cost linear in sequence length. A kernel is a single optimized GPU routine.
Longer histories, bigger gains
GEM now uses user histories twice as long in production, and Meta has shown the infrastructure can handle 25x. It reports two findings. Prediction quality follows a power law in sequence length, meaning it keeps improving at a predictable, slowing rate as histories get longer. And larger models benefit disproportionately from longer histories. Meta argues the two effects reinforce each other: more compute justifies longer context, and longer context justifies more compute.
2. Getting a giant model's knowledge into fast models
GEM is far too slow to score every ad inside a live request. Instead, hundreds of smaller "vertical" models serve traffic and learn from it. Distillation, where students copy the teacher's soft labels (its predicted probabilities), was already in use. Meta calls it low-bandwidth: each training step passes only a compressed view of what GEM knows.
LoopFM, which Meta calls a "structure representation", adds a second channel. GEM's important internal layers are compressed into a compact vector describing each event it processes. Those vectors are lined up with the vectors GEM produced earlier for the same user, forming a memory of that user's intent across all surfaces. Downstream models read this sequence in both training and serving. These vectors come out of the same GEM computation that already produces the distillation labels, so Meta says this doubles knowledge transfer at no extra compute or latency.
Solaris handles freshness. It borrows the idea of 5, where an LLM guesses ahead and checks later. As ranking stages narrow a request to its top candidates, background jobs run GEM on those likely user-ad pairs. The resulting embeddings are delivered just in time for the fast model. If an exact pair is missing, the system falls back to an average of the user's recent embeddings for the same ad groups, or to those of similar users. It degrades rather than dropping the signal.
3. One model across surfaces and goals
GEM now jointly predicts CTR across all surfaces and conversion rate (CVR) across the main advertiser goals, such as off-site purchases and app installs. Clicks are plentiful and conversions are rare, so patterns learned from clicks help the conversion predictions. Two things make this trainable:
Cost-free data mixing. Training reads virtually from combinations of existing data pipelines instead of copying them into a merged dataset. The mix is kept close to the order data arrives in real time. Meta says this avoids instability when switching between domains and over-memorizing whichever domain it saw most recently.
Domain experts. A shared expert learns what all surfaces have in common, while per-surface experts learn local patterns.
4. Training efficiency
Training runs on several thousand latest-generation GPUs. Meta measures end-to-end 6 (model FLOPS utilization, the fraction of the hardware's peak arithmetic that does useful model work). It splits this into two factors: local MFU, meaning how busy one GPU is, multiplied by the scaling ratio, meaning how much of that survives across thousands of GPUs.
For one GPU, Meta wrote custom kernels: Jagged Flash Attention (for variable-length sequences), GDPA and block attention. It also trains in very low precision, MXFP8, an 8-bit floating-point format. For scaling, it uses "5D parallelism", which splits the model several ways at once. Dense weights use 2D 7 (fully sharded data parallelism, which spreads weights, gradients and optimizer state across GPUs) plus expert parallelism. The huge embedding tables use 2D model parallelism. All of it is matched to Meta's network layout, and the communication operations don't take up GPU compute units.
The result is MFU doubled to 20–25% over 12 months while total training FLOPs grew 4x. That is still below figures often reported for LLM training. Meta's point is that recommendation workloads fit GPUs built for LLMs poorly.
What's left open
This is a summary post; a companion blog covers the training stack. Missing here: absolute metrics, ablations showing how much each technique contributes, how fresh Solaris embeddings are in practice, and how often the fallbacks fire. Next, Meta plans to train on organic (non-ad) engagement and on text, image and video, and to reach LLM-scale context lengths.
Remember
Meta says Kunlun shows a predictable scaling law, which recommendation models have mostly lacked.
Most gains reach users through small serving models fed precomputed GEM vectors, not GEM itself.
At 20–25% utilization, recommendation training still uses GPUs much less fully than LLM training typically does.
The server does the work. It handles history, 3 (who last changed each line), merges and commits. Tools can query it through an API without keeping a local copy of the repo.
Commits are small records. A "4" lists only the files that changed, with 5 pointers to their contents. Content-addressed means each piece of data is named by a hash of its bytes, so it never changes and any server can cache it. Creating a changeset needs no locks.
Derived data. Indexes for blame, path history and commit ancestry are computed recursively from each changeset's parents. They can be built eagerly or on demand.
Clients fetch only what they ask for. The client requests the specific directories and files it needs. Requests pass through three cache tiers: a daemon on each machine, regional caches, and the authoritative servers.
Clients are always online. They fetch data from the server when they need it.
The server does the heavy work. It answers history and blame queries and performs commits, merges and rebases. The client keeps a bounded local cache, lays out files on disk and watches for edits.
Everything is available through an API. Any query the client can make, a CI job or tool can also make over the network, without a local repository. Anthropic says its automated bisect pipeline (which searches for the commit that broke something) and its automated revert pipeline depend on this.
Everything scales horizontally. No complete copy of the repo exists anywhere, not even on the server. There are no 4 (git's compressed bundles of objects), so the repository needs no maintenance.
Commits are cheap and lock-free. The cost of a commit grows with the size of the change, not the size of the repo. Scion discourages 5 (named pointers such as branches and tags) except for main and release branches, because global state that every server must agree on limits scaling.
Working copies are optional and sparse. Checkouts can be sparse (only the directories requested) or virtualized (files appear on disk only when read).
first
4
turn a timed-out product creation into 202 Accepted ("received, still working") with a link the client can poll. The service then retries in the background using the original 5, a request ID that stops the retry from creating a duplicate.
map failures to exact status codes: 429 with a retry interval for a temporary search failure, 503 when a dependency is down or Kafka publishing fails, and 502 when downstream results ignore the requested filters
Check the limit. The account's database count is read from a Postgres 5 (a read-only copy) through 6, Cloudflare's connection-pooling and caching proxy for Postgres. The cache lives for a few seconds.
Move near Postgres. The request is forwarded to a data center close to Postgres, because each round trip from far away can take hundreds of milliseconds versus a few milliseconds nearby.
Create the Durable Object near the user. The service generates a new database UUID (a unique identifier) and a fresh Durable Object ID. It then initializes the Durable Object by calling it from a data center near the original requester, so the database lands close to that user.
Write the row to Postgres. One metadata row per database goes to the Postgres primary. This write is the "creation checkpoint": from here on the database exists, even if the reply never reaches the user.
Tell the Durable Object it's active (best effort). A final call lets the Durable Object write its routing entry into 7, Cloudflare's globally replicated key-value store. This step is allowed to fail.
GDPA (Generalized Dot-Product Attention). A per-example feed-forward layer (pFFN) was rewritten as an attention operation. That lets many attention-like steps run in one kernel, for up to 2x faster forward passes.
CompSkip. Some layers switch off their sequence modules and pass data through a residual connection, a shortcut that carries the input forward unchanged. This rests on the assumption that the network recovers once the modules switch back on. It cuts FLOPs by 43% with "negligible" quality loss.
OneSeq. Different histories describe events differently. A purchase is described by ad ID and account ID, a post by actor and object ID. OneSeq first condenses each event into a common form, then merges the histories in time order. One sequence layer can then process everything with large, efficient tensor operations.