Rebuild Less, Ship Faster, Patch the Weights · Morning Gist
Tuesday, November 35 stories · 16 min
Rebuild Less, Ship Faster, Patch the Weights
OpenAI, Cloudflare and Discord show what big rebuilds actually bought them, while researchers try editing model weights and Legora tests agents without seeing customer data.
Picked from 51 new articles across 23 sources · arrow keys for other days
Today in 30 seconds
30s left
OpenAI's new Git backend, Pando, cut median push latency nearly 5x by dropping repository-wide snapshots and per-client packfiles. story 1 ↓
Cloudflare halved DNS build delay to a 3.3-second median using targeted builds and one scheduler, which also cut peak memory 85%. story 2 ↓
Researchers report one AI model editing another's weights lifted a math score from 7.9% to 48.1%; critics say it mostly stopped runaway loops. story 3 ↓
Legora tests its legal agent in simulated worlds rather than reading customer data; one model release lifted a citation task from 70% to 99%. story 4 ↓
Discord merged its video players into one, cutting per-product code up to 94%; a million-user experiment kept Quest metrics within 0.1%. story 5 ↓
OpenAI released LifeVal, a benchmark of how well AI helps with everyday tasks like finding childcare, managing finances and handling government paperwork.
1/5OpenAI· Nov 2
OpenAI rebuilt its Git backend, cutting median push latency nearly 5x
Overloaded by AI agents' parallel work, OpenAI built Pando, a Git-compatible backend that coordinates each branch separately and reuses stored file bundles across clients. Median pushes got nearly 80% faster, with no change to Git workflows.
Why it matters · Coding agents multiply pushes and fetches, so this shows where source control breaks first and which long-held guarantees a large repository can give up to keep scaling.
Know this first
Context from the editor, not the article · 41 sec
1 · Git objects and refs
Git stores a project as immutable objects: blobs hold file contents, trees list directories, and commits point to a tree and parent commits. Each object is named by a hash of its contents. Branches are refs, small movable pointers to a commit. Pushing a branch uploads new objects, then moves the pointer.
2 · Packfiles, fetches and pushes
A packfile bundles many objects, compressing similar ones as differences from each other. On a fetch, the client lists commits it has and wants; a conventional server works out the missing objects and builds a pack. On a push, the server lists its branches so the client can omit objects the server already holds.
3 · Consistency across replicas
2/5Cloudflare· Alex Fattouche· Nov 2
Cloudflare halved DNS build delay by rebuilding only what changed
Cloudflare now rebuilds only the parts of a domain's DNS data that a change can affect. Peak memory fell 85%, and median delay from change to stored data fell from 7.7 to 3.3 seconds.
Why it matters · It shows a reusable pattern for incremental recomputation: fall back to the full rebuild under uncertainty, prove smaller work equivalent byte for byte, and verify against production traffic.
Know this first
Context from the editor, not the article · 39 sec
1 · How DNS answers get served
DNS translates names like example.com into network addresses. An authoritative server holds the official answers for a domain. A zone is that domain's collection of records, such as A records (addresses) and TXT records (free text), plus settings. Cloudflare must copy each zone's data to servers around the world.
2 · Kafka and committed offsets
Kafka is a durable message log. Its streams split into ordered partitions, and consumers store a committed offset: the position before which everything is finished. After a crash, reading resumes from that offset. One slow old message therefore holds the offset back, and newer finished messages may be processed again.
3 · Full versus incremental rebuilds
3/5Latent Space· swyx .ai· Nov 3
An AI model edits another model's weights directly, without training
Researchers had the frontier model GPT-6 Astra inspect and change another neural network's numbers with no training run. Small game models and a math score improved, but critics say the top result mainly fixed a looping failure.
Why it matters · If models can debug other models by patching weights, a slow train-and-evaluate loop could sometimes become a quick edit, though current evidence covers only small networks and specific failures.
Know this first
Context from the editor, not the article · 36 sec
1 · Weights and training
A neural network is mostly a huge table of numbers called weights, which multiply signals as they pass through. Developers don't set them by hand. Gradient descent, the standard training method, measures the network's error and nudges the weights to reduce it, repeating this many times.
2 · AI improving AI
Recursive self-improvement is the idea that AI could build better AI, which then builds better AI still. Andrej Karpathy's autoresearch demonstration, about eight months before this story, had a model run training experiments on its own, using the usual cycle of writing code, running jobs and reading results.
3 · Looking inside models
4/5Latent Space· Latent.Space· Nov 2
Legora builds its legal AI agent without reading customers' data
Legora's CTO explains how the company tests a legal AI agent whose work it cannot read: simulated client environments, paraphrased logs, and failures sorted into 10 or 20 types. Only the episode outline is available.
Why it matters · Confidential data removes the usual way to debug AI agents, so this is a useful case study for any team working under similar privacy limits.
Know this first
Context from the editor, not the article · 39 sec
1 · Agents and traces
An AI agent is a language model that works in a loop: it decides on a step, uses a tool such as search, reads the result, and continues. A trace is the log of those steps. Engineers usually debug agents by reading traces to see where the reasoning went wrong.
2 · Evals
Evals are automated tests for AI systems. A model's output can vary between runs and its quality often takes judgment to assess, so teams run a set of realistic tasks and score the results. Those tasks are often drawn from real usage, which is hard when real usage is confidential.
3 · Why legal data is locked
Lawyers owe their clients confidentiality, and a law firm's documents often hold deal terms, disputes and personal details. A vendor serving those firms may have no right to read that material. This matters for tasks like due diligence, the review of a company's contracts and records before a deal.
5/5Discord· Nov 2
Discord merges video players into one, cutting per-product code up to 94%
Discord found four separate video players, the two biggest untested and sharing no code. It wrapped the richest one in tests, extracted shared parts piece by piece, and swapped in the new player without moving key metrics.
Why it matters · It is a concrete, measured example of replacing untested production code in stages, including test counts and an experiment that gated the switch, rather than attempting a risky big-bang rewrite.
Know this first
Context from the editor, not the article · 39 sec
1 · What a web video player is
Browsers can decode and play video through the built-in <video> element. The product team builds what surrounds it: progress bar, buttons, time readout, captions, thumbnails and product-specific extras. Most of a player's code and its bugs therefore live in interface and state logic, which is why duplicated players are costly.
2 · Refactoring versus rewriting
A refactor changes how code is structured without changing what it does. A rewrite starts again and risks losing behaviour nobody documented. Tests that record what old code does today, often called characterization tests, make a refactor safer because any accidental behaviour change makes a test fail.
Large services keep data on many servers, and those servers must agree on updates. Strong guarantees, such as every reader seeing one snapshot of everything, require coordination, which slows writes. Weaker guarantees need less coordination but let different readers see different states. Choosing what applications really need is a central design decision.
Image: OpenAI
OpenAI has moved its 1, a single huge Git repository holding many projects, onto 2, a backend it built itself. Engineers and agents still use ordinary Git. Median push latency fell by nearly 80%, and Pando delivers nearly a petabyte of Git data a day.
The problem
3, OpenAI's AI coding agent, lets one engineer run many changes at once, and each push can set several automated jobs fetching the same commit. From around the end of last year, fetches and pushes slowed, merges failed, and reliability sometimes fell below 90%.
Conventional designs struggle here for two reasons. First, they often put all branch updates into one repository-wide order, so unrelated pushes wait on each other. Second, servers build a custom packfile, Git's compressed bundle of objects, for each client. That costs CPU and disk and is hard to cache.
Two assumptions dropped
No repository-wide snapshot. Pando uses 4: a reader fetching a branch gets the history its writer had, but two branches may reflect different moments. Each branch has its own pointer, so pushes conflict only when they target the same branch. OpenAI says users and agents rely only on the order of updates to a single branch.
Reused packfiles. Pando stores each pushed pack unchanged in 5, a scalable store for large files, and serves it again to later readers. A client may receive some objects it already has, but the server does little computation.
Reuse depends on a small trick. Git servers normally list their branches during a push so the client can omit objects the server already holds. Pando by default lists only trunk, the main branch. The resulting pack therefore works for anyone who has that trunk history.
The cost is redundancy: each repeat push to a feature branch resends everything not on trunk. Even so, the median pack was under 20 KiB and the 99th percentile under 3 MiB.
Keeping fetches cheap
A client catching up on trunk would otherwise need tens of thousands of small packs a day. Background workers therefore merge them into progressively larger ones, and those levels let Pando choose the needed packs in logarithmic time. Clients download packs through links, from regional caches with hit rates above 99%.
Results and caveats
Pando has served 57 TB in one hour, and fetches have saturated 10 Gbps links on standard cloud machines. Agents did much of the implementation, reaching production in 10 weeks.
OpenAI's comparison with other designs comes from its own simulation and its own testing, and the article gives few absolute latency figures. Any tool that needs a consistent view across branches would not get one from Pando.
OpenAI has moved its 1, a single huge Git repository holding many projects, onto 2, a backend it built in Rust. Nobody had to change how they use Git. Median push latency fell by nearly 80%, or almost 5x, and Pando now delivers nearly a petabyte of Git data per day.
Why the old setup broke
3, OpenAI's AI coding agent, lets one engineer work on many changes in parallel. That means more branches, pushes and merges, plus more fetches from development environments, research jobs and 4, the automated build-and-test system. The load compounds, because each push can set several jobs fetching the same commit. From around the end of last year, OpenAI saw slow fetches and pushes and failed merges, with reliability at times below 90%.
A replicated Git service has two hard duties. A server can't advertise a new branch tip until it can supply every object reachable from it. And the service must settle races when two pushes try to move one branch from the same old tip. OpenAI modeled two standard designs:
5, a protocol for coordinating a commit across nodes. Every replica keeps a full copy. Incoming packs go to all of them, and a coordinator runs several rounds of messages until a majority accept. Reads are simple, but replica disks and network latency sit on the push path.
, a record of changes written before they're applied. Packs go to , a scalable store for large files, and each push updates a shared manifest using , an atomic "replace only if unchanged". Uploads run in parallel, but every push competes for that one manifest, and replicas must read and index each pack before serving it.
Two assumptions dropped
Repository-wide consistency. Pando uses 9: to fetch a ref, a reader gets the history its writer had, with no global snapshot. Updates to any one ref are 10, meaning they behave as if applied one at a time. If branches foo and bar both move during a clone, one client may see foo at version 1 and bar at version 2, while another sees the reverse. OpenAI says users and agents depend only on the order of updates to a single ref.
A unique packfile per client. Conventional servers compute exactly what each client lacks. Pando reuses stored packs, so a client may download objects it already has, but the server does little work.
The push path
Pando validates an incoming pack in a single decoding pass while streaming it to blob storage, without unpacking it into a local repository. A multi-key transaction then records a ref version in a metadata store (the new tip, the pack, and its dependencies) and atomically moves the ref pointer. The pointer is the only contended key, so only pushes to the same ref conflict. The metadata work is constant regardless of push size, because very large pushes write only some commits synchronously and defer the rest. The pusher can immediately read back its own write.
The key choice is what the server advertises. A normal server lists every branch so the client can omit objects the server holds. With millions of branches, that list can exceed 100 MiB. Listing more refs also makes packs smaller but harder to reuse, because another reader may lack objects the writer left out. Listing none would make every pack contain full history. Pando by default advertises only trunk, the designated main branch, and OpenAI reports most of the size reduction comes from advertising just one ref.
Worked example: an agent branches from trunk and pushes commits A and B. Its pack holds only what isn't on trunk, so anyone with that trunk version can fetch the branch with that one pack. When it later adds commit C, the pack contains A, B and C again. That redundancy costs client bandwidth, but the median pack was under 20 KiB and the 99th percentile under 3 MiB.
The fetch path
A fetching client sends "haves" and "wants", the commits it holds and needs. Pando maps these to ref versions and selects packs that cover the gap, adding any trunk dependencies the client lacks. Git allows only one pack in the HTTP response, so Pando sends an empty one plus links, using a little-known protocol feature called 11. Clients download from Express, a delivery service that caches packs regionally. 12, which sends each pack's requests to a predictable server, helps keep hit rates above 99%.
Compaction
Catching up trunk could otherwise mean tens of thousands of packs per day. Pando borrows from 13, storage structures that merge small sorted files into larger ones in the background. Each push is an L0 pack, and workers group these into geometrically larger covers, currently up to L4.
Covers do two jobs. Repacking improves compression, and the levels act like a 14, an index with express lanes. As an illustration (OpenAI doesn't publish the ratio), a client 1,000 pushes behind might take one large cover rather than 1,000 small packs. Planning takes O(log Δ) metadata reads, where Δ is how many ref versions the client is behind. Packs at every level are kept and continue serving clients.
Results
Pando has served more than 57 TB in one hour, about 127 Gbps on average, with over 99% of bytes from local disk cache. OpenAI says a petabyte a day takes only a handful of CPU cores. Clones and fetches saturated 10 Gbps links on standard cloud virtual machines. Its simulation had 3PC write latency and WAL read latency climbing as disks saturated, while Pando was unaffected with many thousands of concurrent pushers.
Building and migrating
One engineer designed the core, agents implemented it, and a handful of engineers deployed it, taking 10 weeks to reach production in April. Validation included a Git conformance suite, 15 (replayable runs that expose race conditions), and agent-written models in the formal languages 16. Pando first ran as a read- and write-through proxy to the old system, so traffic moved without downtime. Hundreds of integrations migrated too.
What stays open
The simulation is OpenAI's own, and the article's text gives few absolute latencies. It doesn't name the metadata or blob stores, explain how merges changed, or quantify the storage cost of keeping every pack level. Tools needing a cross-branch snapshot won't get one. Some client improvements are upstream in Git, others remain in OpenAI's public copy, and any wider release of Pando's technology is only being explored.
Remember
Global ordering was the write bottleneck; contention disappears for unrelated branches when each ref has its own pointer.
Advertising only trunk during pushes makes packs reusable, trading some redundant client uploads for far cheaper serving.
Pando's gains depend on clients and agents not needing a consistent point-in-time view across branches.
Rebuilding derived data from scratch is simple and reliably correct, because it needs no knowledge of what changed, but its cost grows with total data size. Incremental rebuilding costs roughly what the change costs, but misjudging the affected parts leaves stale output. Compilers and build systems face the same trade-off.
The pipeline: API and service writes flow through Kafka, the Aggregator and Zone Builder into Quicksilver.1 / 4
Cloudflare has reworked how it turns a 1 change into data its servers can use. DNS is the system that maps domain names to network addresses. Changing a setting on a 2 (one domain's records and settings) no longer rebuilds zones with tens of millions of records. Peak memory fell 85%, and median delay fell from about 7.7 seconds to 3.3.
The problem
A service called the 3 reads a zone from a database, converts it into keys, compares them with 4, Cloudflare's distributed key-value store, and writes the differences. It learns about changes from 5, a durable message log.
Since 2022, changing one record has rebuilt only the affected name. Setting changes still forced a full build, which reads and compares every record while holding the zone in memory. Some zones exceed 20 million records.
A full build is safe because it never needs to know why a zone changed. A targeted build must work out which names can change, whether shared data changes, and what old data to remove. Many setting events don't say what changed.
The mechanism
Cloudflare made events carry the changed fields and traced each setting through the code that generates DNS output. A planner now picks one of five builds: specific names only; names plus shared metadata; the bare domain plus metadata; a purge; or a full build. The rule is strict: every key written must match a full build's output byte for byte. Anything uncertain gets a full build.
Because a queued event can go stale, the builder rereads current state just before running, which can upgrade, purge or skip the build.
One new scheduler merges queued work per zone. An address change at www.example.com plus a wildcard (catch-all) change at *.example.com become one build. Merging only ever adds work.
This also helps Kafka, whose saved position advances only past finished messages. One slow build holds back its whole partition (an ordered slice of the stream), and a restart replays everything after it. Shorter builds shrink that risk.
Checking it
A mirror Zone Builder consumes production events but writes to a separate Quicksilver serving no customers. A comparer samples 20% of zones for differences.
Results
92.95% of builds avoided a complete rebuild; full builds fell about 40%, to 7.04%.
The largest spike in 6, the time within which 99% of events finished, fell from 14.6 minutes to 1.21 in a side-by-side test.
Average memory fell from 49 GiB to 7; peaks fell from 79 GiB to 12.
Typical delay barely moved at first. The median halved later, because the freed capacity let Cloudflare shorten two safety waits. These figures exclude Quicksilver's distribution time.
The catch
Zones above a fixed size never get full builds, because those builds cannot finish. Rare cases need manual rebuilds of individual names. Cloudflare also dropped its 2022 goal of eliminating full builds.
Cloudflare has changed how it turns a 1 change into data its servers can answer from. DNS, the Domain Name System, maps names like example.com to network addresses. Changing a 2 setting (a zone is one domain's records and settings) no longer rebuilds zones with tens of millions of records. Author Alex Fattouche reports peak memory down 85% and median delay down from about 7.7 seconds to about 3.3.
How a change reaches the servers
A change lands in a database and produces an event in 3, a durable message log. A service called the DNS Kafka Aggregator merges events from several Kafka streams and passes them to the 4. That service reads the zone, converts it into keys for Cloudflare's 5 (which hold a domain's official answers), compares them with 6, Cloudflare's distributed key-value store, and writes only the differences. Quicksilver then spreads them across the network.
Why full builds stopped scaling
A full build reads, encodes and compares every record, holding the whole zone in memory. Its virtue is that it never needs to know why a zone changed. Its cost grows with the zone, and some zones now exceed 20 million records, heading toward hundreds of millions. Traffic also rose, from about 250 record changes per second in 2022 to about 700, but Fattouche says the count was never the real problem.
By 2022, per-record builds were already 150 times faster on average. Settings were harder. A zone event can come from many products, may not say why the zone changed, and can alter data shared between zones. Universal SSL, Cloudflare's automatic certificate feature, can change 7 (Certification Authority Authorization) records, which say who may issue certificates for a domain, at the 8, the bare domain. Too much work wastes capacity; too little leaves stale DNS data live.
Choosing the smallest safe build
Cloudflare made events carry the changed fields, then traced each setting through the code that generates DNS output. Some events stay vague: certain database functions only update a timestamp, which may be bookkeeping or may mean data changed elsewhere. Those still cause full builds. The planner never turns uncertainty into less work.
Quicksilver output has record keys, holding answers for one zone and name, and a smaller shared 9, telling servers how to use the zone. The planner picks one of five build types:
Resources only: rebuild specific names. Ordinary changes, such as to A (address) or TXT (free text) records, usually go here.
Resources and metadata: for nameserver records (which servers answer for the domain) and wildcards (catch-alls such as *.example.com).
Apex and metadata: settings such as Universal SSL can use this.
Purge: remove a zone that should no longer be published.
Full zone: when nothing smaller can be proven safe.
The rule: every key a targeted build writes must match a full build's output byte for byte. Old state goes by scanning Quicksilver under each rebuilt name and removing keys the build did not write.
One name, several zones
During customer onboarding or offboarding, several internal zone objects can briefly exist for one public domain, so one metadata key is shared by all of them. It works like a directory of usable zone IDs. Suppose example.com has Zones 101, 202, 303 and 404, and the key lists the first three. A TXT change at www.example.com in Zone 202 touches only that zone's record keys. A wildcard change must also update the key, which is rebuilt from a freshly read list rather than patched, after the zone's records are written.
Planning twice
An event describes the past, and a build may wait in a queue. So the event creates a conservative work list, and just before running, the builder rereads current settings, publication status and same-name zone IDs. That can turn a targeted build into a full build or a purge, or skip it entirely. Reads come from 10, read-only database copies. Because an event can arrive before its change reaches a replica, the Aggregator delays events, and a final check rejects reads from a lagging replica.
Merging work without losing messages
One unified scheduler replaced separate ones for record and full-zone work. If an A record changes at www.example.com and a wildcard changes at *.example.com before a build starts, one build covers both names plus metadata. Merging only adds work: one event needing the full zone makes the whole build full, and a purge overrides any rebuild.
Kafka adds a constraint. Each ordered partition has one 11, the point before which everything is known to be finished. Under 12, builds finish out of order and are marked complete in memory, but the offset advances only when all earlier messages are done. If message 2 is a long build, messages 3 through n cannot commit, and a restart replays 2 through n. Cloudflare accepts repeated work over lost changes, so messages stay attached to a build until its result is written. A per-zone rebuild interval, varying by plan, stops a busy zone from taking every worker.
Proving it
Equivalence tests run full and targeted builds from the same state and compare keys byte for byte. Every release also runs through a mirror Zone Builder, which consumes production events but writes to a separate Quicksilver serving no customers. A comparer samples 20% of zones; a dashboard screenshot shows a 0.31% diff rate across 234,313 zones, mostly timing differences. Rollout hashed the zone name, not its ID, so two schedulers never wrote the same metadata key.
Results
Over 24 hours, 92.95% of builds avoided a complete rebuild; 86.81% were resources only. Full builds were 7.04%, down about 40% from what would have been 11.88%. Those remaining average 0.35 seconds, mostly on new, small zones.
Running old and new schedulers side by side on the same events, the largest spike in 13 (the time within which 99% of events finished) fell from 14.6 minutes to 1.21. Typical delays barely moved. Average working-set memory, the memory actively in use, fell from 49 GiB to 7; peaks fell from 79 GiB to 12.
The median halving came next, from spending that headroom: shorter rebuild intervals on most plans, and a smaller Aggregator delay once databases rejected lagging replicas. So that gain is mostly less waiting, not faster building. The figures stop at the Quicksilver write, excluding distribution, and are not per-zone guarantees. A finer-grained histogram now puts p90 at about 5.5 seconds and p99 at about 12.
What remains open
Zones above a fixed record count never escalate to a full build, because it cannot finish and its retries block a partition. They rebuild the apex, metadata and named resources instead, accepting a gap: rare cases, such as enabling a zone on another network, need manual rebuilds of individual names. The post gives neither the threshold nor how often this happens. Cloudflare has also dropped its 2022 goal of eliminating full builds, since first publication genuinely needs every record.
Remember
Most of the median gain came from shortening safety waits that cheaper builds made affordable, not from faster builds themselves.
Events that don't say what changed still get full builds; missing information always means more work, never less.
Zones too large for memory never get full builds; rare cases need manual rebuilds of individual names.
Mechanistic interpretability is the study of how a network's internal numbers produce its behaviour, much like reverse-engineering a program without its source code. Researchers do this by hand with mathematical analysis and by probing activations, the values that appear inside a network while it runs.
The newsletter's reference point: Karpathy's autoresearch, the earlier demonstration of models autonomously running training experiments.
Researchers including Rikiya Takehi and Alex Zhang report that a frontier 1 (LLM, a text-generating AI trained on vast datasets) can inspect and directly change another neural network's 2 from a plain-language goal. The editor was GPT-6 Astra, and no training run was involved. Reddit posts place the work at MIT's computer science lab. This account relies on Latent Space's newsletter, which summarizes the paper and reactions to it.
Why it's hard
Weights are the numbers that define a network's behaviour. They have no labels, and a single behaviour is usually spread across many of them. Normally they change through 3, which measures error and nudges them repeatedly. Swyx, the newsletter's author, compares direct editing to reading the 1s and 0s of a tiny compiled program, then fixing its bugs.
Why people noticed
Eight months ago, Andrej Karpathy's 4 showed a model running training experiments on its own, feeding worries about 5, or AI improving AI. Direct editing could skip the experiments.
What was reported
Reading: identifying what small models do, such as Atari-style game players, from raw weights.
Repairing: fixing a failed car-control network by editing 3.5% of its weights.
Writing: producing weights from scratch for small game-playing networks.
The headline: changing 131,072 weights, about 0.016%, in 6, a small open model. Its score on 7, a math benchmark, rose from 7.9% to 48.1%.
The pushback
Critics focus on that 7.9%. Reportedly, 93% of the model's answers hit the token limit, the cap on generated text, because it got stuck repeating itself. After the edit, 33% did. By our rough arithmetic, about 7% of answers finished before and 67% after, so the gain may come almost entirely from more answers finishing. On that reading the edit removed a defect and added no math ability. The same approach reportedly failed on Gemma 3 270M, a small model without the looping problem.
Commenters raise other doubts. Outer layers can resemble readable heatmaps, and dense middle layers reportedly defeated the model until it could run its own probes, which test a network's internal values while it runs. That is closer to standard interpretability, the study of how networks work inside, than to reading weights. Swyx agrees it's a variant of 8 that could be done by hand, and is unlikely to scale soon past simple games and control tasks.
An early replication
One commenter tried it on a small transformer model. A naive edit cut false positives from 43 to 33 but lost correct results, so it was rejected. A targeted edit gained 6 correct links with none lost across 102 pages, raising recall only from 75.69% to 76.03%.
The open question is whether this can add abilities to a healthy model, not just repair a broken one.
A paper called "Sparks of Weight-Space Programming," from Rikiya Takehi and coauthors including Alex Zhang, claims that frontier 1 (LLMs, text-generating AI systems trained on vast datasets) can inspect and directly edit another neural network's 2 from a plain-language goal. There is no 3 and no training loop. The editor in the widely shared results is GPT-6 Astra, and Reddit posts attribute the work to MIT CSAIL, MIT's computer science lab. Latent Space's newsletter, the source for this write-up, calls it a "MONSTER discovery," and its own text then adds caveats. It summarizes the paper and its online reception rather than reproducing the method, so much of the detail below is second-hand.
Why this is hard
Weights are the numbers that define a neural network's behaviour. They carry no names or comments, and a single behaviour is usually spread across many of them, so you can't find an "if" statement and flip it. Swyx, the newsletter's author, offers an analogy: this is like ignoring source code and reading the 1s and 0s of a very small compiled executable, then saying what it does, fixing its bugs, or writing a new one directly.
The usual way to change a network avoids reading weights altogether. Gradient descent, the standard training method, measures the error and nudges the weights, many times over. Karpathy's 4, shown about eight months earlier, automated the human work around that process: writing PyTorch or JAX code (the common machine-learning frameworks), running compute, watching loss curves and reading evaluations. It helped fuel a summer of worry about 5, meaning AI systems improving AI systems. The newsletter's point is that weight editing could remove the experiment-running step from that loop.
What the researchers report
Going by the summaries, the demonstrations fall into three groups:
Reading. The LLM identifies what a small model does from its raw weights, including recognizing Atari-style game policies. A policy is a network that picks actions in a game or control task.
Repairing. It fixes a failed car-control policy, originally trained with 6 (proximal policy optimization, a common reinforcement-learning method), by editing 3.5% of the weights.
Writing. It produces weights from scratch for small game-playing (multi-layer perceptrons, the simplest common network type), including one for MinAtar Breakout, a simplified Atari game. Swyx says some of these beat independently trained models.
The headline experiment targets 8, a small open-weight model with about 0.8 billion weights. Astra changed 131,072 of them, roughly 0.016%, and the model's score on 9, a math-problem benchmark, rose from 7.9% to 48.1%. The authors also claim instruction-following gains of up to 3×.
Commenters say the agent had access to a Python sandbox, and that it made about 50 attempts on this task. Swyx also flags that the claim of improving a model "in a general direction" with 50 steps may be an overstatement.
The looping objection
The strongest pushback concerns that baseline. A score of 7.9% looked implausibly low for a model this size, and reports say 93% of its answers hit the token limit, the cap on how much a model may generate. In other words, the model usually got stuck repeating itself. One critic adds that this came under poor sampling settings, the parameters controlling how a model picks each next word, and that the model card warns about this failure.
After the edit, token-limit failures fell to 33%. A rough calculation of ours shows why that matters. Before the edit, about 7% of answers ended within the limit while 7.9% were correct, so virtually every finished answer was already right, or truncated answers sometimes still scored. Afterward, about 67% finished and 48.1% were correct. Accuracy among finished answers did not obviously improve, and may have fallen to around 72%. The score could therefore rise simply because more answers finished, which fits the critics' reading and doesn't require any new math ability.
Critics compare the edit to 10, based on Arditi and colleagues' finding that removing a single direction in a model's internal representations can suppress refusals. Here, on this reading, the suppressed behaviour was looping. Reportedly the same approach failed on Gemma 3 270M, a small model without the looping problem.
Other doubts about "native" reading
A detailed Reddit critique goes through the other experiments. These are claims from a commenter and not a formal review:
The first and last layers of small models can have spatial structure, with bands of large weights resembling heatmaps. Reading those may be much easier than reading a network in general.
One experiment may be applying 11, a known hand-technique from Elhage and colleagues for working out what attention layers do by multiplying their weight matrices.
Experiment 7, on dense intermediate layers, reportedly failed several times until the model was allowed to create its own probes. Probing activations is ordinary interpretability, not reading weights.
Beating a 512×6 MLP at Go may be a low bar, because that network is likely a weak player.
Swyx concedes some of this. He describes the capability as "some variant of 12 (which could be done by hand)" and thinks it is unlikely to scale soon beyond simple games and reinforcement-learning policies. His judgment is that it still moves from zero to one, and that its efficiency will encourage people to use it right away. The newsletter gives no cost or runtime figures to support the efficiency claim.
An early reproduction attempt
One Reddit commenter applied the idea to a smaller transformer checkpoint that finds links between objects on document pages. Astra had to analyze weights numerically first, then run limited tests, without changing the architecture. It checked for broken values, collapsed attention heads, zeroed output layers and matrix rank.
A naive edit, shifting an object bias by -0.35, cut false positives from 43 to 33 but also cut correct objects from 32 to 27, so a no-harm rule rejected it. A later, targeted edit to query and key weights gained 6 correct links and lost none across 102 pages. Recall (the share of true links found) went from 75.69% to 76.03%, and precision (the share of found links that are correct) from 89.09% to 89.49%.
That result is real but tiny, and comes from a small sample. It also shows the practical pattern: an edit needs held-out validation, because it can improve one metric while quietly damaging another.
What remains open
The main open questions are whether the method works on models without an obvious defect, whether it adds abilities rather than removing failures, and whether it reaches dense middle layers without relying on probes. Direct edits also already exist in a narrower form: Heretic 2.0, a refusal-removal tool released the same week, uses conventional numerical optimization. The test for Astra is whether it can do something those tools and a skilled interpretability researcher can't.
Remember
Always inspect a benchmark's baseline: 93% token-limit failures can make a defect repair look like a large capability gain.
Weight edits need held-out validation; one rejected edit reduced false positives while also losing correct results.
Critics' key test remains unmet: adding ability to a healthy model, since the same approach reportedly failed without the looping defect.
Legora sells an 1 to law firms, yet it cannot read a single 2 of what that agent does. A trace is the step-by-step log of an agent's actions, and it is the usual way to debug one. The data belongs to the firms' clients. On a Latent Space podcast episode, CTO Jacob Lauritzen discusses how the company builds and tests the product anyway.
The published text is only an episode outline, so it names many methods without explaining them.
Why this is hard
AI teams normally improve products by studying real failures and turning them into 3, automated tests with scored results. Legora's agent drafts Word documents, runs 4 (checking a company's records before a deal), and reviews 10,000 contracts in one table. Legora cannot start by reading what went wrong in that confidential work.
What Legora does instead
Simulated worlds: Three engineers and three lawyers build test environments modeled on customers' work. They resemble the "worlds" of 5, where software learns by acting in an environment and receiving scores. One example is a 10,000-file 6, the document collection examined in a deal.
Legora paraphrases traces and narrows failures down to 10 or 20 types. The outline does not say how the paraphrasing works or protects client details.
The numbers
On one citation problem, the model was right 70% of the time, then 99% after one model release, with no change from Legora. The outline does not name the model or define the test.
Lauritzen also estimates that models already do about 60% of legal work well, and says the rest takes a smarter model. No method is given.
His headcount forecast proved wrong. He once used a slide about the 300 Spartans, the small Greek force of legend, to argue that 20 engineers would be enough forever. There are now 100, and he still feels short-handed.
Other choices
Data privacy led Legora to run everything on Microsoft's 7 cloud. For drafting, Lauritzen finds the Fable and Opus models too chatty and prefers Astra's concise writing. He also argues that drafting a long contract is a search problem, and he advises against default 8, the standard numeric text representations used for search. The outline does not give his reasoning.
The episode also asks whether model labs will cut off legal tools and what happens to the billable hour and junior lawyers' jobs. The outline does not record the answers.
Legora sells an 1 to law firms, and it cannot read a single 2 of what that agent does for a lawyer. A trace is the step-by-step log of an agent's actions, and it is the usual way engineers find out why an agent failed. Here the data belongs to the law firms' clients. On a Latent Space podcast episode, CTO Jacob Lauritzen discusses how the company builds and tests the product anyway.
One caveat applies to everything below. The published text is an outline of the episode, not a transcript. It names many techniques without explaining them, so this piece marks where the detail runs out.
What the product does
Legora began in a Stockholm basement as ChatGPT combined with Swedish law and a search tool. It later moved from an assistant to an agent. An assistant, broadly, answers when asked, while an agent takes a series of steps toward a goal. Today a lawyer can use it to draft and edit Word documents, run 3 (checking a company's contracts and records before a deal), or review 10,000 contracts in one table. The agent also coordinates work among lawyers, clients and other agents. Legora used the product for diligence on its own acquisitions.
The testing problem
Most AI teams improve a product by looking at where it failed for real users. They read the trace, spot the bad step, and turn the case into an eval, an automated test scored against an expected result. Legora cannot start that loop by reading what happened.
Its answer has three parts in the outline:
Simulated worlds. Three engineers and three lawyers build test environments modeled on customers' work. The outline compares them to the "worlds" used in 4, a field where software learns by acting inside an environment and receiving scores. A rough analogy is a flight simulator: the agent performs a realistic job, and nobody's real data is at risk. One chapter mentions a 10,000-file , the collection of documents examined in a deal.
A separate chapter covers product metrics when traces are unreadable, but the outline does not list the metrics. Chapters also mention 100 legal engineers. The notes do not define the role here, but they contrast it with 6, a term generally used for engineers who work closely with a customer on deployment.
The citation result
The most concrete number concerns citations. On one citation problem, the model was right 70% of the time, then 99% after a single model release, and Legora did not have to change anything. The chapter pairs this with a period when 7 "didn't seem worth it".
The outline does not name the model, define "right", or give the size of the test. It also does not say what lesson Lauritzen draws. One plausible reading is that work built around a model's current weakness can be overtaken by the next release. That reading is this digest's inference, not his stated view.
Hallucinations, meaning confident fabrications such as invented sources, matter here because a false citation in legal work can be serious. The episode covers Legora's citation system and whether lawyers actually check citations, but the outline gives no answers.
Models and infrastructure
Lauritzen estimates that models already do about 60% of legal work well, and says the rest takes a smarter model. That is his estimate, and the outline gives no method behind it.
Other model and infrastructure choices are listed with little reasoning:
Legora resisted adding a 8, a menu that lets users choose the underlying AI model, for years before adding one.
For drafting, Lauritzen finds Fable and Opus too chatty and likes Astra's concise writing. The outline does not say who makes Fable or Astra. Opus is the name Anthropic uses for a line of its Claude models.
Data privacy led the company to run everything on Microsoft's 9 cloud.
It does not use 10, a voice AI company, in a discussion about transcription. The reason is not stated.
Tabular Review and long documents
Tabular Review is a spreadsheet-style product the hosts call a million-cell spreadsheet, and the outline says the industry copied it "down to the name". As an illustration of the scale, not a figure from the episode, 10,000 contracts with 100 questions each would make one million cells. One chapter covers what a user learns from the first 10 rows, which suggests checking a small sample before trusting the whole table. The outline does not confirm that.
Lauritzen also argues that drafting a long contract is a search problem. Related chapters ask whether a million-token contract should go through 11 or one big 12. A token is a small chunk of text. MapReduce here would mean processing pieces separately and then combining the results, while a context window is the amount of text a model can consider at once. The trade-off, in general terms, is that splitting can lose connections between clauses, while one huge window costs more and may strain the model's attention.
He also advises against default 13, the numeric representations of text commonly used for search, and the episode touches on 14, a retrieval method that compares a query and document at the level of individual tokens. The outline gives no results for either.
Team size and open questions
Lauritzen once used a slide about the 300 Spartans, the small Greek force of legend, to argue that 20 engineers would be enough forever. Legora now has 100, and he still feels short-handed.
Other chapters raise questions without recorded answers in the text: whether model labs will cut off legal tools as they cut off coding tools, whether lawyers will work in Legora or directly through Claude, and what happens to law firm partnerships, the billable hour and jobs for junior lawyers. For those answers, and for how the testing methods really work, the episode itself is the only source.
Remember
Without readable logs, simulated customer work and grouped failure types can stand in for direct failure analysis, at least in Legora's approach.
A model upgrade alone moved one citation task from 70% to 99%, though the test itself is undefined.
Legora's headcount grew fivefold past the 20 engineers its CTO once thought would be enough forever.
Companies often release a change by randomly assigning users to the old or new version and comparing measurements between the groups. Because assignment is random, a meaningful gap can be attributed to the change. If the numbers match, the team gains evidence the change caused no harm to those particular measurements.
The Quest player, the most feature-rich of Discord's players and the first one the team migrated.1 / 4
Discord has merged its separately built video players into one shared component, the Discord Video Player, or 1. Staff engineer Richard Kuo reports that each product now maintains up to 94% less player code.
DVP runs Quests, videos that pay watchers in a Discord reward called Orbs, and Clips, short shared videos, on web and desktop. Ordinary chat video attachments are on it for a small percentage of users, with more coming over the next month.
The problem
An audit found four video player implementations. The two biggest, for attachments and Quests, shared no code and had no tests, so every feature was built twice and every bug fixed twice.
The missing tests were the dangerous part. Without them, nobody could say exactly what the old players did, so a replacement could silently lose behaviour.
How they did it
The team started with Quests, which had the most features (reward markers, end cards, animations) but less exposure than the attachments player. It never replaced the player in one step:
Record current behaviour. It wrote 60 2, which check small pieces of code, and 7 tests in 3, a tool that drives a real browser like a user.
Define one interface. Old and new players both targeted the same agreed set of inputs and behaviours, so one could stand in for the other.
Extract piece by piece. The progress bar, controls and other parts were separated and tested until both players could use them.
Test on real users. An 4, which randomly assigns users to one version or the other, split a million users 50/50. Quest starts, completions and claims stayed within 0.1% between the groups.
Midway, the Clips team asked to build on DVP. Kuo says that second real customer forced the team to keep the code truly shared.
What sharing buys
Details now get fixed once for every product. One example is the time readout. In most fonts a "1" is narrower than an "8", so a running clock jiggles. DVP gives every digit equal width using a CSS setting, tabular-nums.
New features also spread easily. Hovering over a Clips timeline shows a preview frame, drawn from a 5, a single image holding a grid of small frames. Discord's media service finds the needed frames from the MP4 file's index instead of reading the whole video, returning a sheet for a two-minute video in 1.6 seconds. Enabling previews took Clips two lines of configuration.
The caveats
"Up to 94%" is the best case, and it counts code each product maintains, not the shared player itself. The experiment shows matching engagement on Quests, but the post gives no playback-quality numbers. The broadest test, attachments, is still rolling out.
Discord's Media Infrastructure team has replaced its separately built video players with a shared component, the Discord Video Player, or 1. In a post by staff engineer Richard Kuo, the team says each product now maintains up to 94% less video player code. DVP runs Quests and Clips in Discord's web and desktop apps. Quests are videos that pay watchers in Orbs, a Discord reward, and Clips are short shared videos. Ordinary video attachments in chat are live on DVP for a small percentage of users, with a wider rollout planned over the coming month.
The problem: four players and no safety net
The project began as an audit of everywhere Discord plays video, and it turned up four separate implementations. The post describes three kinds of use:
The attachments player, the most common one, appears whenever someone uploads a video to a chat.
The Quest player was the most feature-heavy, with reward markers on the timeline, end cards, progress rings and custom animations.
Silent video surfaces use video as an effect or backdrop, such as the Orbs animation.
The two biggest players, attachments and Quests, shared no code and had no tests. Every feature had to be built twice and every bug fixed twice.
The missing tests made the duplication hard to fix. With no tests, nobody could say precisely what the old player did, so a replacement could silently drop behaviour. Writing a new player from scratch would have carried exactly that risk.
The silent surfaces turned out to be a smaller problem. They received a lightweight video effect component that plays a silent video without the player machinery, leaving the two big players as the real merger.
Why start with Quests
The team started with the harder player for two reasons. Quests had the richest feature set, so matching it early would prove the design could carry demanding requirements. It was also more contained than the attachments player, which appears across conversations, so the work could develop more quietly.
How the swap worked
The team worked in stages, never replacing the player in one step.
Pin down the old behaviour. Before moving anything, the team wrote 60 2, which check small pieces of code in isolation. It also placed the Quest player in a 3, an environment for running interface components by themselves, and added 7 tests using 4, a tool that drives a real browser the way a user would. These 5 check that all the pieces work together.
Define one interface. The team designed a single shared interface for both the old Quest player and the new DVP to target. An interface here means the agreed set of inputs and behaviours that callers rely on. With both players behind it, one could eventually stand in for the other.
Extract piece by piece. The team separated subcomponents such as the progress bar, 6 indicators and playback controls, adding unit and end-to-end tests for each. The playhead is the marker showing the current position on the timeline. Where a piece could serve both players straight away, it did. Where it could not, the team broke it down further and rebuilt the customizations on top. Kuo stresses that the player was never rewritten outright.
Accept an early second customer. Partway through, the Clips team asked to build its new embed on DVP. Clips reached early access in late March, seven weeks before Quests shipped. Its needs went into the shared player, including a placeholder thumbnail shown while a clip loads and a download button in the control bar. The team says this felt like a detour but forced it to share as much code as possible.
Run an 7. An A/B test randomly gives users one of two versions and compares the results. Here the final gate covered a million users, split 50/50 between DVP and the old Quest player. Key metrics, including Quest starts, completions and claims, stayed within 0.1% of each other. The team says it caught essentially every issue before users saw it.
Details that are cheaper to get right once
A shared player means a detail fixed once reaches every product. The post gives several examples:
Smooth playhead: browsers report playback progress about four times a second, and not every old player handled that smoothly. DVP runs on its own clock so the marker animates fluidly. The post does not describe how the clock is implemented.
Controls at any size: controls work from a 240-pixel tile up to fullscreen, with no click target below 24 pixels.
Readable timestamps: time text sits on dark pills so it stays visible over bright and dark scenes.
A time readout that holds still: in most fonts a "1" is narrower than an "8", so a running clock jiggles. Monospaced fonts fix that, but the team found them clunky here. DVP instead sets the CSS property font-variant-numeric: tabular-nums, which gives every digit equal width. In gg sans, Discord's brand font, those digits looked padded, so the readout switches to Roboto, Helvetica Neue or Arial.
New features built on the base
Timeline thumbnails. Hovering over a Clips timeline shows a preview of that moment, using a 8, one image containing a grid of small frames. A companion 9 file, the same text format used for captions, maps each moment of the video to one tile.
As an illustration, not Discord's actual settings: take a two-minute video with one tile every five seconds, giving 24 tiles. Hovering at 0:12 falls in the third five-second window, so the player displays only the third tile of the image.
Generating these sheets took backend work. The team added an endpoint to 10, Discord's media service written in Rust. It avoids reading the whole video: it scans the MP4 index, the file's table of where its data sits, then fetches the relevant 11 directly. A keyframe is a complete stored picture, whereas most compressed frames only record differences from others. A full spritesheet and VTT file for a two-minute video took 1.6 seconds to parse and return.
On the frontend, turning previews on for Clips took two lines of configuration, passing the two file URLs to the player. Previews reached all Clips users and remain Clips-only for now, though other surfaces can enable them the same way.
Variable speed. DVP has seven playback speed settings in the base player. The post mentions 1.5x but does not list the rest.
Product-specific additions. Clips added timeline comments and custom interface behaviour without forking the player. It uses 12, which let a product drop its own interface into fixed slots, and an extendable button API for adding buttons to the player's controls.
Results and what stays unanswered
Test coverage grew from none to more than 400 unit tests and 40 Playwright tests. The post's headline number deserves some care. "Up to 94%" is the best case, and it measures code each product maintains, not total code, since the shared player itself still has to be maintained. The product-by-product breakdown appears in a chart whose figures aren't in the post's text.
The experiment also has limits. It shows parity on Quest engagement, but the post reports no playback-quality measures, such as startup time or stalling, and no statistical detail. The largest test is still ahead: the attachments player has the broadest exposure and is only partly rolled out. The post also says nothing about mobile apps, naming only web and desktop.
Remember
Tests written against old code turn a replacement into a measurable comparison rather than a leap of faith.
A second real product joining mid-project exposes code that only looks reusable, even when it feels like a detour.
Reading a video's MP4 index and fetching only keyframes makes preview generation fast enough to run nearly on demand.
Anonymized examples: The team seeks these too, and the episode raises the idea of buying a law firm for its data.
5
Paraphrased traces. Legora works with paraphrases of traces and narrows failures down to 10 or 20 types. The outline does not say who or what writes the paraphrases, or how they protect client details.
Anonymized examples. The team also tries to get anonymized examples, and the episode raises the idea of buying a law firm for its data. The outline does not say how seriously this was considered.