Cover illustration

TheDaily Front

Issue No. #261029 Thursday, October 29 2026 #261029 — THURSDAY, OCTOBER 29, 2026
Open weights, closed loops, and one very large farewell.
Thursday, October 29, 2026 The Daily Front No. #261029 — Contents
30stories
12,957points
6,785comments
285kllm tokens
Assembled with 30 model calls — 197,284 tokens read, 88,204 written.

Highlights

We're releasing the weights of Mistral Large 4

Mistral releases the weights for its trillion-parameter Large 4 model, reopening the familiar argument over what “open” really means.

Qwenputer: A functioning, deterministic RISC-V CPU inside Qwen3.5

A RISC-V processor embedded in a language model’s weights turns neural inference into an improbably literal computer.

Binance-hacker-1029 – $5.6B stolen from Binance

A reported $5.6 billion Binance theft sends investigators and skeptics scrambling to establish what, exactly, has happened.

Google Search is now less than half of Alphabet’s revenue

Search slips below half of Alphabet revenue for the first time as Cloud’s growth redraws Google’s balance sheet.

What we know so far about Spain train crash

Spain mourns after a deadly high-speed rail collision, with early accounts focusing on a catastrophic breakdown in safety procedure.

From the Editor

The machines supplied most of the thunder today: bigger models, stranger models, and an old search empire becoming a cloud concern. Yet the page also carries harder human news—a public farewell, a rail disaster, and the familiar cost of systems that fail when they are needed most.

  1. We're releasing the weights of Mistral Large 43
  2. Qwenputer: A functioning, deterministic RISC-V CPU inside Qwen3.54
  3. Claude Code regularly sends each background agent’s transcript to its model5
  4. LLM Voice6
  5. Google Search is now less than half of Alphabet’s revenue7
  6. H.264 Is Magic (2016)8
  7. Zero click, silent, remote Android DoS9
  8. Alleged Chinese spy had 'close relationship' with Nvidia boss Jensen Huang10
  9. Chained PHP2Shell exploit roots 25 servers, including US Government servers11
  10. The US added a record 20.2 GWh of battery storage in just 3 months12
  11. Hackers expose the identities of more than 40k DHS employees13
  12. We ran AI agent swarms in Minecraft and Mindustry14
  13. Forging a Microsoft Edge Full Chain with Logic Bugs Only15
  14. A tiny world model running games on a Raspberry Pi Pico 2 W16
  15. What we know so far about Spain train crash17
  16. Tomáš Mikolov awarded the Medal of Merit by the President of the Czech Republic18
  17. Zombie stats: Where the numbers AI quotes come from19
  18. Manifestos, Fear, and 'Loser Thinking': Inside Proton's AI Reckoning20
  19. Grace Blackwell needs a new scheduler: 27% more usable GPUs from the same racks21
  20. Perspectiva Kogui: A message on artificial intelligence from the Kogui people22
  21. Gemini 4 Carbon is the new #1 on the Artificial Analysis Intelligence Index v523
  22. I went to Mexico to test-drive the cars Americans can’t buy24
  23. If IPv4 were land24
  24. We won't "just hang out"25
  25. Patrick Stewart has died26
  26. Binance-hacker-1029 – $5.6B stolen from Binance26
  27. DoorDash to acquire Instacart26
  28. ‘You Are Done’: The letter sent to King by the F.B.I (2014)26
  29. How Google determines the names for bodies of water in Google Earth (2008)26
  30. NetBSD adds a new text editor called atto26
The Daily Front Page 2 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Main Edition
article

We're releasing the weights of Mistral Large 4

by kuberwastaken·▲ 1,329 points·361 comments·mistral.ai ↗
We release the weights of Le Chonk, advancing the frontier of open models in agentic coding and cybersecurity.

Mistral Large 4 (Le Chonk)

We release the weights of Le Chonk, advancing the frontier of open models in agentic coding and cybersecurity.

Earlier this month, we released Mistral Large 4 (Le Chonk), our flagship 1-trillion-parameter, natively multimodal model, in public preview. The response to the preview has exceeded our expectations, and we're grateful to our developer community, early-access customers, and partners for their support, collaboration, and feedback.

Le Chonk signal

Since then, we've put that feedback to work while continuing to scale reinforcement learning, driving massive improvements in coding and defensive cybersecurity. Gains continue to accelerate, with no signs of saturation.

Today, we're releasing the weights of this improved Mistral Large 4. The new model also features substantial gains in reasoning efficiency that give developers greater performance while lowering inference costs.

Mistral Large 4 ranks as the best open-weight model for coding and among the world's most capable open models overall. Trained from scratch on European infrastructure with clear lineage from inception to release, it gives organizations a trusted foundation for Sovereign AI

Mistral is defining the sovereign AI category and leading the open frontier. We're committed to building the world's most capable models and releasing them openly, giving developers, enterprises, and institutions the power to own, customize, and control their AI.

Built for the Builders.

Mistral Large 4 entered public preview with strong results across leading coding benchmarks. Just three weeks of additional reinforcement learning have since propelled it to the forefront of open-weight coding, taking the lead on FrontierCode and Terminal-Bench while matching the best open-weight models on the Artificial Analysis Coding Agent Index with substantially greater token efficiency.

On Cognition's private FrontierCode 2.0 benchmark, which assesses end-to-end code quality and whether a repository maintainer would merge the agent's change, Mistral Large 4 leads with a score of 19.7%.

Mistral Large 4 delivers frontier coding performance with significantly fewer tokens, making sophisticated coding agents more economical to run at scale.

On the Artificial Analysis Coding Agent Index, Mistral Large 4 scores 48%, effectively tied with the leading open-weight model, GLM-5.3, while using 47% fewer tokens per task on average.

The gains extend to terminal-based coding workflows. On Terminal-Bench 4.0, Mistral Large 4 improved by 13 percentage points to 41% compared to its public preview, taking the lead among open-weight models while reducing output tokens by 30%.

To give developers greater control over this tradeoff between performance and cost, Mistral Large 4 now supports three reasoning modes:

Mode Recommended Use
Low Simple tasks; replaces ‘None’ reasoning mode
Medium Everyday tasks
High (default) Hardest use cases requiring high precision and thorough reasoning

Beyond benchmarks, Mistral Large 4's coding capabilities are validated by human preference. In Surge Code's blind pairwise evaluations, Mistral Large 4 was preferred over leading open-weight models including GLM-5.3, Kimi K3, and DeepSeek V4.1 Flash, ranking behind only Claude Opus 5.5 among the models evaluated.

Blind side-by-side win rates against other models

Share of prompts where graders preferred Mistral Large 4's answer over the opponent's.

Built for the Defenders.

Since its preview, we've been working with leading cybersecurity vendors to evaluate Mistral Large 4 in real-world environments to test Mistral Large 4’s strengths in vulnerability reproduction and patching.

Mistral Large 4 scores 51% on the Artificial Analysis Cyber Index, which measures a model’s ability to discover vulnerabilities in a codebase, reproduce and validate them, and patch them without breaking existing functionality. Crucially, Mistral Large 4 handles these legitimate defensive security tasks without unnecessary refusals.

Safety has improved alongside capability. Our model’s built-in guardrails distinguishes between defensive and malicious, offensive cybersecurity tasks. It retains strong performance on Cyber benchmarks, while achieving an average refusal rate of 96.6% on malicious cyber requests, the highest we measure among open models.

Average refusal on the cyber-related prompts of JailbreakBench, StrongREJECT and AgentHarm

Here’s what global leaders in cybersecurity have to say about Mistral Large 4:

Testing by Booz Allen demonstrated the success of the European Mistral Large 4 model against our internal benchmark for source code security analysis. The model was able to match vulnerability detection recall rates against other frontier cyber models with a compelling cost curve. And, Mistral's support for model customization and data-sovereign deployment also lets us tailor it for our mission needs and client environments with strict data-residency requirements. We look forward to working with Mistral to strengthen critical infrastructure around the globe.

Brad Medairy, President National Cyber at Booz Allen Hamilton

Organizations that treat transparency and openness as strengths are positioned well as AI becomes central to security operations. Open-weight cybersecurity models extend that transparency to enterprises and governments that need to host and customize AI under their own control, and they allow researchers to study how these models behave, including where they could be misused. As adversaries increasingly use AI to accelerate their operations, we aim to work alongside model developers such as Mistral to help security teams build on that control, establishing a foundation for resilience by design rather than reactive threat management.

Amy Chang, Head of Cisco's AI Threat Intelligence and Security Research

Cisco (black)Cisco (white)

When threats move at machine speed, human defense cannot keep pace. Worse, a defense you don’t control isn’t defense—it’s exposure. Security teams perform best when they take the steering wheel. Mistral's ML4 lets defenders audit the architecture, deploy on their own infrastructure, and keep full sovereignty. Resilience starts with autonomy, and open-weight models help give organizations the control to lead their own defense."

Stephanie Cohen, Chief Strategy Officer at Cloudflare

Cloudflare (black)Cloudflare (white)

Powerful AI models alone won't tip the scales in cybersecurity. It takes deep security expertise, real-world threat intelligence, and rigorous testing. Our work with Mistral Large 4 tests how well frontier AI can reason through complex vulnerabilities, accelerate remediation, and ensure defenders move faster than adversaries.

Dr. Bartley Richardson, Chief AI and Autonomous Systems Officer, CrowdStrike

CrowdStrikeCrowdStrike

Elastic gives security teams the freedom to bring the AI they trust to the data they control, including Mistral’s open models, which are supported on Elastic Security today. We’ve already evaluated ML4 against real cybersecurity workloads, where models need to reason across complex data to help analysts make informed investigation and response decisions. This demonstrates the partnerships we are building to deliver powerful, open-weight models combined with the security context, transparency and control our customers demand.

James Spiteri, Senior Director, Product Management, Elastic

ElasticElastic

ENISA is experimenting with closed and open weight models in order to better understand their cyber capabilities. Open-weight models allow organisations to keep control of the technology their resilience depends on. ENISA access to and are testing Mistral Large 4 to identify security vulnerabilities, to audit code and analyse defensive logs.

Laura Heuvinck, Head of Communications of ENISA

We believe open-weight AI models have an important role to play in advancing cybersecurity by giving organizations greater flexibility, choice, and control. Innovations like Mistral Large 4 represent promising steps forward in AI's potential to transform cyber defense. We see continued AI innovation as an important opportunity to strengthen cybersecurity and help organizations navigate an evolving threat landscape.

John Whittle, Chief Operating Officer at Fortinet

FortinetFortinet

Open models let security researchers and developers inspect, adapt and build on AI. Mistral is expanding what the ecosystem can build, and our collaboration on NVIDIA accelerated infrastructure helps developers put these models to work.

Kari Briski, VP of Open Models and Software, NVIDIA

NVIDIANvidia (white)

As threats become ever faster, industrialized and now automated, defense must operate at a different scale. Volume, speed, trust: these are the three challenges facing cybersecurity in the age of AI. With Mistral AI, we are building European cyber AI, trained by our experts and operated under their control. By combining the power of AI, the expertise of our teams and our Cyber Threat Intelligence, we are accelerating our response so that we can protect more broadly, more quickly and with trusted European technology.

Hugues Foulon, CEO of Orange Cyberdefense

Orange CyberdefenseOrange Cyberdefense

Rubrik supports Mistral and the push for ‘sovereign AI,’ to give European governments and regulated industries a credible option that does not route their data to other countries. Customers want model choices, including open-weight and private models, to support data residency, latency, cost and capability requirements. As part of our focus to deliver cyber resilience and speed recovery from both AI-powered attacks outside an organization and internal agents, we’ll continue rigorous cybersecurity testing with Mistral Large 4 and work closely together to serve evolving regional demands.

Anneka Gupta, Chief Product Officer of Rubrik.

RubrikRubrik

As enterprises bring AI into production, they increasingly want models they can run on their own terms, with clear visibility into model behavior, data access, and agent permissions. Mistral Large 4 brings strong cybersecurity and technical reasoning to open weight AI, and many European enterprises are already embracing it as their sovereign model of choice. Zscaler Security for AI offerings, delivered on our sovereign Zero Trust Exchange in Europe, now integrate with Mistral, helping organizations continuously test their AI deployments, map what every model and agent can reach, and enforce policy inline. Together, we are empowering enterprises to adopt sovereign AI with the visibility, control, and data protection they need to innovate securely.

Dhawal Sharma, EVP of AI and Data Security, Zscaler

ZscalerZscaler

In the time since the preview, we carefully monitored cybersecurity-related use in our live traffic. Though we observed the model refusing to comply with black-box attacks against live targets, we see a potential for uplift to conduct real attacks. We are modifying our guardrails accordingly, and will continue updating them in the months to come.

We are also providing enterprise design partners such as Orange Cyberdefense, with preview access to a specialized variant of Mistral Large 4 optimized for advanced cybersecurity workflows, including penetration testing, vulnerability assessment, and red-teaming. Access is subject to rigorous vetting and contractual safeguards, with testing restricted to owned or explicitly authorized systems in controlled environments.

Meanwhile, customers are tailoring Mistral Large 4 with proprietary security data, policies, detection logic, and threat environments using Mistral Forge. For well-defined cybersecurity tasks, it can be further optimized into smaller, task-specific variants for greater accuracy, making security applications more effective.

Learn more about sovereign AI for cybersecurity and how to work with us.

Built for Work.

Mistral Large 4 has continued improving on a range of broad enterprise-use metrics.

For finance-related work, we improved the model’s ability to perform real-world workflows, especially ones involving the creation and editing of spreadsheets for finance and accounting use cases. This is reflected in our Finch scores climbing to 73.3%, second only to Kimi K3 for open models.

Web browsing is a critical part of a majority of knowledge work. Our RL pipeline enabled us to reach 84.5% on BrowseComp (starting from an SFT checkpoint that was achieving 75%). This brings Mistral Large 4 at a higher performance than models like GLM-5.3 or DeepSeek Flash 4.1 1017.

Agents deployed by an organization need to be secure. Whether deployed to internal members or external users, agents shouldn’t open you up to threats like system prompt exfiltration or malicious code injection. RL increased our gains on the B3 Agent Security Benchmark, with Mistral Large 4 resisting 97.1% of attacks vs 93.3% in Preview. This places it at the top of the OSS frontier, meaning anyone hosting the model can run a safe agent without additional tuning.

This major investment by Mistral AI reinforces the choice La Banque Postale made over a year ago and underscores the relevance of the long-term strategic partnership we are building together: supporting the emergence of an open and sovereign European AI leader. For a public and citizen bank, technological sovereignty is not optional; it is a key prerequisite for maintaining our customers' trust. The introduction of this open model unlocks new opportunities and use cases. By partnering with Mistral AI, our ambition is to combine the best of human expertise and digital technology to deliver an enhanced experience of both customers and employees over the long term.

Zakaria Moursli, Executive Vice President, Operational Performance, Payments and Digital Services, La Banque Postale

See it in Action

Cyber Vulnerability Triage: an agent reads incoming vulnerability reports, investigates the source code and product context, reproduces the flaws in an isolated sandbox, then writes and iterates on a patch until a canary exploit no longer works.

Agentic webdev: with no human help, Mistral Large 4 builds Orbital Trace, a live 3D map of roughly 19,000 satellites and debris pieces orbiting Earth. It pulls real tracking data, writes the app, uses it in a browser to catch its own bugs and slowdowns, then fixes what an independent reviewer flags until all requirements pass.

Quantum chemistry solver: Mistral Large 4 writes, from scratch, software that calculates where electrons sit in a molecule, and checks its answers against a standard chemistry tool. It then builds a 3D page around it: pick a molecule such as benzene or water, drag a slider to pull it apart, and watch the electrons regroup as the bond breaks.

Built for Sovereignty.

As organizations build AI around their knowledge and workflows, sovereignty means that they retain control of the models they depend on and the intelligence they create.

With Mistral Large 4, that control begins with the model itself. Organizations have the ability to inspect, customize, and deploy the model on their own infrastructure. They can use and improve Mistral Large 4 without depending on Mistral to serve it through an API. Mistral Large 4 was developed and trained from scratch in Europe, giving organizations clarity about the origins of the technology they’re building on.

Control also extends to how AI operates inside an organization. Organizations can customize Mistral Large 4 around their proprietary data with Mistral Forge, and they can build, govern, and improve the resulting agents and applications using Mistral Studio. Mistral’s Applied AI experts can work alongside customer teams to build and deploy these tailored systems. Through that work, teams understand the architecture and decisions behind what they’ve built, along with the methods used to train and operate it, so they can run and improve their AI independently.

At ABN AMRO, we believe that open and transparent AI ecosystems are essential for driving innovation responsibly within the financial sector. Developments such as Mistral Large 4 demonstrate how sovereign and open-weight AI models can expand the range of trusted solutions available to European organizations. We are encouraged by the progress being made and continue to explore how advanced AI can contribute to strengthening critical capabilities, including cybersecurity.

Coen Klaver, Director Cyber Defense at ABN AMRO Bank N.V.

ABN AMROABN AMRO

The rapid progress we are seeing in AI models creates exciting opportunities for advanced engineering in chip manufacturing. Our early experience with Mistral Large 4 is promising, particularly for use cases where higher model performance matters. Mistral’s commitment to continued innovation supports our efforts to accelerate the application of AI throughout our semiconductor product lifecycle.

Arnaud Hubaux, Head of AI Program and Strategy.

ASMLASML

Mistral Large 4 is an important step forward for financial‑grade AI: an open‑weight model we can fine‑tune to our needs, deploy on our own infrastructure and closely integrate into our digital channels. Hey Belfius is a flagship example of how this partnership helps us rethink how customers interact with their bank.

Nicolas Goosse, Head of Data Insights, Analytics & AI at Belfius

Belfius (black)Belfius (white)

Mastering our AI begins with mastering its architecture and data. For the most sensitive use cases, having access to European open-weight models, which we can deploy on our own infrastructure, is a vital lever for strengthening our strategic autonomy and the resilience of our organizations. The industrial partnership between Crédit Agricole Artificial Intelligence and Mistral addresses these challenges at the Group level. The "Le Chonk" model, which stands out for its reasoning capabilities and performance in the field of cybersecurity, is a promising illustration of the possibilities opened up by this partnership.

Oliver Biton, Group CIO, Crédit Agricole

Crédit AgricoleCrédit Agricole

We're excited about an open-weight model with strong scientific and vision capabilities. Our work is highly specialized, so the ability to adapt a model matters. With Mistral Large 4, we see a foundation for building tools around the way our scientists and engineers actually work with Earth observation data — from imagery to technical documents.

Giuseppe Borghi, Head of ESA Φ-lab

ESA (black)ESA (white)

AI sovereignty isn't about choosing which API to call. It's about having the freedom to run, customize, and build AI on your own terms. Mistral Large 4 brings powerful capabilities in coding, multimodal AI, and cybersecurity into the open, giving developers, companies, and countries a great open foundation to build their own AI and defend themselves against cyber threats.

Jeff Boudier, VP Product, Hugging Face

Hugging Face

A powerful model is only part of the equation. Developers also need the freedom to decide where it runs, how it is optimized, and how it fits into their systems. We’re excited about Mistral Large 4 because open weights give builders more control over those decisions, rather than making them dependent on a single hosted service. At ZML, we see that freedom as essential to turning advances in AI into useful, deployable software.

Steeve Morin, CEO of ZML

ZMLZML

Sovereignty does not always require self-hosting; sometimes it just requires deployments that meet your control requirements. For organizations that prefer a managed service, Mistral Large 4 is available through Microsoft Foundry, with private deployment options for Azure developers.

Microsoft and Mistral AI share a commitment to expanding customer choice in next-generation AI. As the first cloud provider to bring Mistral Large 4 to customers, Microsoft is making Mistral’s latest open-weight model available through Microsoft Foundry, an enterprise AI platform built for evaluating, deploying, and operating models at scale. For organizations advancing sovereign AI strategies, this combination offers greater flexibility and control across their data, infrastructure, and AI operations.

Tina Schuchman, Corporate Vice President, Foundry, Microsoft

Start building with Le Chonk

Mistral Large 4 is available to try, deploy, and customize today.

Get started in Mistral Studio, through the Mistral API, or on OpenRouter. For full control, download the open weights from Hugging Face and deploy on your own infrastructure with vLLM or SGLang. The model card and license have everything you need to get started — and for those who want to go deeper, a full technical report is coming soon.

You can also try the new model in Vibe Code; give it a feature to build or a bug to fix in your own repository.

Mistral Large 4, is also available through NVIDIA-hosted endpoints, as an optimized NVIDIA NIM container for serving with vLLM. Developers can use the open source NeMo AutoModel library for customization or the open source TensorRT LLM library for high-throughput serving.

Enterprises can also tailor Mistral Large 4 to their proprietary data, use cases, and guardrails with Mistral Forge. Talk to our team to learn more.

The model is available to use under the Mistral Ecosystem Open-Weight license, a modified MIT license. The model is free to use, modify, fine-tune, and commercialize, with a single condition: businesses that operate a Model-as-a-Service offering must obtain a separate commercial license from Mistral before using the model commercially.

Starting today, Mistral Large 4 is priced at $0.70 input / M, $0.07 cached input / M, and $2.10 output / M tokens.

We encourage the community to put Mistral Large 4 to the test. Run your own evaluations, push its limits, and share your findings with us on X, Discord, or GitHub.

What's Next

Mistral Large 4 will serve as the foundation for a new generation of specialized and optimized Mistral models. Building on recent releases such as Voxtral and Timestral, we'll continue expanding the frontier of open-weight AI, continuing to give developers and enterprises greater freedom to build, customize, and own their intelligence.

The Daily Front Page 3 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Computer in the Model
article

Qwenputer: A functioning, deterministic RISC-V CPU inside Qwen3.5

by csmantle·▲ 682 points·145 comments·divagr.com ↗
a RISC-V CPU embedded within the weights that uses the model's own Gated DeltaNet attention layers as RAM.

A stock Qwen 3.5 4B with a RISC-V CPU compiled into its weights, running on its own Gated DeltaNet layers as RAM.

I can't believe it's not silicon

Qwenputer is a pretty fun experimental model. It's a stock Qwen 3.5 4B with one addition: a RISC-V CPU embedded within the weights that uses the model's own Gated DeltaNet attention layers as RAM. (To learn how GDN works, here's a handy guide.) This 'CPU' runs completely within the forward passes of the model, and can run arithmetic operations, C and MicroPython code without any external runtime or tool usage whatsoever.

To be very clear, it is not a plugin, a tool or a sandbox. This blog will explain exactly how this model works, and how the model utilises GDN layers as RAM, and how I also slotted in an experimental in-model file storage.

I also wrote up two follow-ups built on top of Qwenputer: how hybrid models can learn to hide their reasoning in their RNN state and evade CoT monitoring, and how compiled weights like these can work as inbuilt monitoring tools that the model itself can't tamper with.

Qwen hands a multiplication to the RISC-V CPU inside its own weights; the CPU's RAM is Gated DeltaNet state

Qwen hands a multiplication to the RISC-V CPU inside its own weights; the CPU's RAM is Gated DeltaNet state

You can grab Qwenputer from Hugging Face or ModelScope, and the code is on GitHub.

The RNN inside Qwen3.5 can be exact RAM

Qwen3-Next and Qwen 3.5 (the model Qwenputer is built on) use a pretty neat trick. 3 out of 4 attention layers in the model use Gated DeltaNet, a linear RNN, as the attention mechanism (more on that here). Each head keeps a state matrix, and the delta rule keeps this updated.

Now, here's where our fun experiment starts. I found out that by setting the gate to 1, the write strength (beta) to 1, and using one-hot key encoding, every write we perform will overwrite exactly one row, and every one-hot query can retrieve an exact value. This means that the GDN layers themselves can work exactly as RAM, at a far lower cost than using normal attention as RAM, since a GDN head's state stays the same size however long the conversation gets, unlike attention's KV cache.

Gated DeltaNet state used as RAM: a one-hot key overwrites one row, a one-hot query reads it back, and the CPU keeps its registers, memory and program counter in those rows

Gated DeltaNet state used as RAM: a one-hot key overwrites one row, a one-hot query reads it back, and the CPU keeps its registers, memory and program counter in those rows

The idea that the delta rule acts as a memory isn't new: Schlag et al. (2021) showed that linear attention with the delta rule works as an associative memory, or "fast weights".4 Imanol Schlag, Kazuki Irie and Jürgen Schmidhuber, "Linear Transformers Are Secretly Fast Weight Programmers", ICML 2021. The new thing here is making it exact and addressable, inside a production model, reliably enough to run a whole CPU on it.

This is the base on which this entire model is built. As it stands, default Qwen 3.5 does not keep exact values in the GDN. With this modification, we unlock the next part of this experiment.

Compiling a computer into layers

Since we have a fully functional, cheap and fast RAM now, we can go ahead with compiling a working CPU into the model weights. Luckily, there's no training involved: a compiler sets every weight directly. You describe the CPU as a circuit, a long list of small steps like "read this register", "add these two numbers" or "jump if zero", and the compiler turns each step into a piece of a transformer layer: attention heads that look things up, feed-forward units that do the arithmetic, and DeltaNet heads that hold the RAM. The CPU then runs as the model decodes.

Each instruction becomes a few generated tokens: one names the memory row to write (ADDR), the next carries the value (VAL), and a STEP token ends the instruction. Those tokens are the CPU's execution trace, so while Qwen is generating them, the CPU is actually running.

The CPU

The CPU is a 32-bit RISC-V core (RV32IM, plus the Zba extension and a small bignum unit for big-number arithmetic), and it takes up 11 layers in front of Qwen's 32. As it stands, it passes the official riscv-tests, its programs match qemu, and it has run 18 million instructions free-running without a single error. Free-running means the CPU keeps going on its own outputs for the whole run, with no reference machine correcting it between steps.

This CPU can also run C and MicroPython code in the forward passes quite well (although a bit slowly). It is not a Linux-class chip yet, but it implements the full RV32IM instruction set.

How Qwen uses it

Qwen 3.5 4B is able to use this CPU quite well, without any post-training required. The CPU is used completely internally, and not invoked through any external tool calls.

In order to make the model use this reliably, I decided to go the cheap way: by piggybacking on the tool call format that models are quite well-trained on, Qwen sends the CPU its instructions and reads back the results. No external tool calls or runtime are used. Once our CPU receives the instructions, the computer layers run, and then write the tool response. We use a small driver called RvChat to load the firmware into the GDN state, and this keeps the trace tokens out of Qwen's layers.

Qwen's original weights stay exactly as they are. The computer weights are added on top of them, in extra dims and layers.

Does it work?

I think the main question here on your mind after reading through my incessant ranting will be: does this actually work?

Accuracy of base Qwen3.5-4B, Qwenputer and base Qwen with a Python tool on NUPA and DeepMind arithmetic sets

Accuracy of base Qwen3.5-4B, Qwenputer and base Qwen with a Python tool on NUPA and DeepMind arithmetic sets

On the DeepMind sets:

  • div_big: Qwenputer scores 97.5%, versus 95% by giving Qwen 3.5 4B a Python tool and 72.5% for base Qwen.
  • mul_big: Qwenputer scores 97.5%, versus 100% with a Python tool and 55% for base Qwen.
  • mul_div_multiple_longer: Qwenputer scores 100%, versus 97.5% with a Python tool and 90% for base Qwen.
  • add_or_sub_big: Qwenputer scores 97.5%, the same as with a Python tool, and 87.5% for base Qwen.

On NUPA's long-integer arithmetic, Qwenputer goes from 48.6% to 100%, the same as giving Qwen a Python tool.

The numbers the CPU prints are exact, too: I replayed about 230,000 of its output positions against a reference machine and found zero mismatches. And bolting a computer onto Qwen doesn't change how it talks: its normal text stays within noise of base Qwen (KL 6e-4, against a noise floor of 5e-4).

A hard drive? In this economy?

Because a CPU inside a language model clearly wasn't cursed enough, I decided the prudent thing would be to give it a filesystem too.

Since we already have a functional RAM, this was mostly trivial. On the model side, it's exposed via internal put / append / get / list / delete operations. Once again, no actual tool calls. When Qwen 'saves' a file, the compiled layers hash its name into one of 1,024 slots in a directory kept in the DeltaNet state, and store the text itself in other heads, with eight tokens per row, chained together. In scenarios where two names end up landing on the same slot, it just checks the next one. Finding a file again takes roughly two or three steps instead of a scan, and it holds up to 512 files, which comes out to about 53,000 tokens of text.

Fun thing is, this is quite persistent. You can save the state at the end of a conversation, load it into the next one, and the files are still there. Using this filesystem, Qwen gets facts that changed between chats right 90% of the time, against 30% when you paste the old chats back in, and it's on par with giving Qwen memory tools run by Python (83.3% vs 78.9%). This one is still experimental, and its code lives on the rv-store branch, with the model on Hugging Face and ModelScope.

Limits and what's next

Qwenputer is very much an experiment, so a few limitations. The extra layers and wider hidden size make the checkpoint 18.8 GB, roughly double base Qwen, although most of it is zero padding. It also needs a small driver (RvChat) to boot the firmware and keep the trace tokens out of Qwen's layers, so it doesn't run with a plain generate() call yet. And it's a bit slow, with every CPU instruction costing a few decoded tokens, so a big calculation takes seconds rather than milliseconds. The batched executor I used for the benchmarks runs about 3,200 CPU tokens a second on an L4.

Next up, I want Qwen to write Python and run it on the MicroPython inside its own weights, through a python() tool that works the same way calc does. Making the CPU faster is the other big one.

Beyond arithmetic

Exact control over the RNN layers is useful for a lot more than arithmetic. It also makes Qwenputer a really nice testbed for AI safety research, and I wrote up two follow-ups: how hybrid models like Qwen 3.5 can learn to hide their reasoning in their RNN state and evade CoT monitoring, and how compiled weights can work as monitorability tools, like an in-weight monitor the model can't switch off, or answer keys for interpretability.

Try it

If you want to play with it yourself, the model runs on a single 24 GB GPU. You'll need uv and the Hugging Face CLI. You don't need a tool server or a Python sandbox for the calculations: the CPU runs them inside the model.

git clone https://github.com/divagr18/qwenputer && cd qwenputer/experimental/riscv && uv sync --extra hf
hf download divagr1925/Qwen3.5-4B-Qwenputer --local-dir qwenputer-rv
uv run python -m chipformer.rv.chat qwenputer-rv --firmware tests/data/rv/calc-bridge.elf \
    --ask "Use calc: what is 123456789 * 987654321?"

Everything is open: the code on GitHub, and both models on Hugging Face (Qwenputer, Filesystem) and ModelScope (Qwenputer, Filesystem).

If you use it in your work, you can cite it as:

@software{agrawal2026qwenputer,
  author  = {Agrawal, Divyansh},
  title   = {{Qwenputer}: a computer compiled into the weights of a pretrained language model},
  year    = {2026},
  url     = {https://github.com/divagr18/qwenputer}
}

Notes

  1. Each Gated DeltaNet head keeps a state matrix, its memory. At every token, before writing anything new, it multiplies the whole state by the gate, a number between 0 and 1. That's how the RNN forgets: a gate of 0.9 fades everything stored a little on every token, and a gate of 1 means nothing ever fades.
  2. After the gate, the head nudges one direction of the state towards a new value, and the write strength beta sets how far. A beta of 1 means the old value along that direction is replaced completely instead of blended.
  3. A one-hot key is a vector of zeros with a single 1 in it, so it points at exactly one row of the state, the way a memory address points at one cell.
  4. Imanol Schlag, Kazuki Irie and Jürgen Schmidhuber, "Linear Transformers Are Secretly Fast Weight Programmers", ICML 2021.
  5. Free-running means the CPU keeps going on its own outputs for the whole run, with no reference machine correcting it between steps.
The Daily Front Page 4 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Cost of a Status Line
repository

Claude Code regularly sends each background agent’s transcript to its model

by NikZaal·▲ 565 points·229 comments·gist.github.com ↗

Tested on Linux, Claude Code 2.1.257–2.1.312; macOS reported working by others (see Tested versions). The binary is not modified (BUN_OPTIONS=--preload). An update can silently undo it, so see Verify.

TL;DR

Every ~30 seconds, Claude Code re-sends each background agent's full transcript to the model just to fill that agent's status line in the agents panel. no-agent-summary.js is a Bun --preload that stops that timer without modifying the Claude Code binary.

curl -fsSL https://gist.githubusercontent.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce/raw/no-agent-summary.js -o ~/.local/share/no-agent-summary.js
claude daemon stop --any
BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload=$HOME/.local/share/no-agent-summary.js" claude

To make it permanent for every Claude Code process, see Install.

The problem

Every ~30 seconds, for every background agent, Claude Code sends that agent's entire transcript to the agent's own model (usually Opus) and asks it to "describe your most recent action in 3-5 words". The answer only updates the agent's status line in the agents panel; it never reaches the model or your conversation. There is no setting that turns it off, and since 2.1.232 (August 2026) it has been on by default.

The anomaly was detected by DRIM in Claude Code's OpenTelemetry export: grouping claude_code.api_request events by query_source showed agent_summary costing more than the main conversation itself.

query_source = agent_summary week before the hook 2 days after share of all Claude Code spend 16.4 % (main conversation: 15.7 %) 0 % share of all API requests 19.7 %, about 1 in 5 0 % part of that spend on Opus 96 % — input tokens per output token ≈ 9,000 : 1 —

Spend here means Claude Code's own per-request estimate (cost_usd), not an invoice: on a subscription, what you lose is rate-limit headroom. We are not the only ones who measured it: #86879 collects four independent measurements of 18–26 %.

The fix (how it works)

no-agent-summary.js is a Bun preload (~70 lines of code). It wraps only the global setTimeout, the one the summary timer is armed through; when a callback's source text contains a summarizer anchor (e.g. the [AgentSummary] Timer fired log line), it returns an inert handle instead of arming the timer. Every other timer passes through untouched. In the OpenTelemetry export the suppressed requests are claude_code.api_request events with query_source = agent_summary.

Why a timer hook rather than something simpler: the module ships as precompiled Bun bytecode, so editing its JS text inside the binary changes nothing, and the API client does not go through a wrapped globalThis.fetch. But Function.prototype.toString still returns a callback's source even when it runs from bytecode, so the timer can be recognised by a string inside it. The inert timer uses exactly 2³¹−1 ms: Node and Bun treat a larger delay as 1 ms, so an "infinite" delay would fire at once.

Which processes it touches

The hook installs only inside Claude Code: Bun.main must be /$bunfs/root/cli (the compiled entry, the same on every row below) and process.execPath must be a Claude Code install. Any other bun, or a compiled Bun binary with another entry name, loads the file and does nothing.

install channel (Linux, measured with claude --version) process.execPath nix …/bin/.claude-wrapped npm @anthropic-ai/claude-code …/@anthropic-ai/claude-code/bin/claude.exe (.exe on Linux too) npm platform package …/@anthropic-ai/claude-code-linux-x64/claude native installer ~/.local/share/claude/versions/<version>

macOS and Windows are not measured; the hook installs there only if they produce these same shapes, and Verify step 1 tells you. One known pass-through: a foreign binary built with bun build --compile --outfile cli and renamed claude; there, only timers whose callback carries an anchor change.

Install

  1. Put no-agent-summary.js somewhere stable; note its absolute path.

  2. Set BUN_OPTIONS globally so every Claude Code process gets it. Write --preload=<path>, with =: BUN_OPTIONS reaches every bun on the machine, and with a space (--preload <path>) bun subcommands break (bun install → error: Script not found "install"). Claude Code reads both forms. One of:

    # ~/.profile, ~/.bashrc, ~/.zshrc
    export BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload=/abs/path/no-agent-summary.js"
    
    # ~/.config/fish/config.fish
    set -gx BUN_OPTIONS "--preload=/abs/path/no-agent-summary.js"
    
    # ~/.config/environment.d/50-no-agent-summary.conf (systemd user env; also reaches
    # user services and timers; applies when the user manager next starts, usually next login)
    BUN_OPTIONS=--preload=/abs/path/no-agent-summary.js
    

    Or a wrapper named claude earlier on PATH (the case keeps it idempotent when one Claude Code process starts another, and also recognises the v2 space form):

    #!/bin/sh
    HOOK=/abs/path/no-agent-summary.js
    case " ${BUN_OPTIONS-} " in
      *" --preload=$HOOK "*|*" --preload $HOOK "*) ;;
      *) export BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload=$HOOK" ;;
    esac
    : "${CC_AGENT_SUMMARY_LOG:=${XDG_RUNTIME_DIR:-/tmp}/no-agent-summary.log}"
    export CC_AGENT_SUMMARY_LOG
    exec /path/to/the/real/claude "$@"
    
  3. Restart the daemon and every already-running session, then start Claude Code from an environment that has BUN_OPTIONS:

    claude daemon stop --any
    

Env

variable values effect CC_AGENT_SUMMARY_MODE off (default), pass off suppresses the summary timer. pass is the A/B control: loads and logs, arms every timer untouched. Any other value warns on stderr and acts as off. CC_AGENT_SUMMARY_LOG file path, optional Appends preload active mode=… bun=… hooked=global.setTimeout on load, one line per matched timer (first 20), and an exit count. CC_AGENT_SUMMARY_MARKER file path, optional Overwritten on load with the preload active … line.

Nuances

  • Restart the daemon after install. The daemon, pty host and pre-warmed bg-spare sessions inherit the environment of the client that started the daemon, so a daemon started before BUN_OPTIONS was set keeps spawning unhooked sessions. Hence claude daemon stop --any.
  • Headless runs need it too: claude -p, cron, CI, editor integrations.
  • Platform: Linux tested by us, macOS (darwin-arm64) reported working by others, Windows untested (see Which processes it touches).
  • npm --ignore-scripts: bin/claude stays a shell stub and Bun never starts, so the hook never runs.
  • Upgrading from v2: overwrite the file in place, switch BUN_OPTIONS to the = form and restart the daemon. If both forms name the same path, bun loads it once. Two different paths (say an old copy kept beside the new one) both load: a second v3 copy is a no-op, but v2 has no such guard, so do not leave a v2 path in BUN_OPTIONS.
  • A/B: CC_AGENT_SUMMARY_MODE=pass loads the hook but arms every timer; the summaries come back, which shows the off result is the hook's doing.
  • Background processes: daemon, pty host and bg-spare must carry --preload in their environment (/proc/<pid>/environ on Linux); if not, restart the daemon.

Verify (after every update)

  1. Preload loads:

    BUN_OPTIONS="--preload=$HOME/.local/share/no-agent-summary.js" CC_AGENT_SUMMARY_LOG=/tmp/nas.log claude --version && cat /tmp/nas.log
    

    Expect preload active mode=off …. No line: BUN_OPTIONS did not reach the process, or the path is not absolute.

  2. Timer suppressed: with the same BUN_OPTIONS and CC_AGENT_SUMMARY_LOG=/tmp/nas.log, run a background subagent for a minute or two. The log shows summary timer #1 suppressed (setTimeout, delay=30000) and the agent's panel status stops updating. If you export OpenTelemetry, query_source = agent_summary should stay at zero; this is the only check that catches every failure mode.

Fail-open

Matching is by source text: an anchor must sit inside the callback passed to the timer. If an update breaks that, the hook matches nothing and summaries silently come back. Ways it can happen:

  • the log line or query-source id is renamed;
  • the callback is passed via fn.bind(...) (no source in toString) or another wrapper;
  • the strings move to a shared constant outside the callback;
  • the timer moves off the global setTimeout (setInterval, require("timers"), timers/promises, a scheduler loop).

So re-run Verify after every update.

Effect

  • We run it under every Claude Code process on our machine (2.1.301). Since then there have been zero agent_summary requests, and no other side query grew to take its place.
  • Subagents, background agents, forked skills and background sessions run normally; only the summary fork is skipped.
  • Visible change: the per-agent panel status stops updating; SDK task_progress has no summary.
  • Overhead: one Function.prototype.toString per distinct timer callback, cached in a WeakMap. claude --version: ~10 ms → ~17 ms (one measurement).

Tested versions

Linux x64 binary from npm @anthropic-ai/claude-code-linux-x64 (its sha256 equals the native installer's manifest.json checksum). Static: the extracted bundle's summary timer callback carries a hook anchor. Live: claude -p --model haiku with CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES=1, one subagent doing 8 steps of ~20 s, counting [AgentSummary] Forking in --debug-file.

The two v3 rows are this script, re-run on 2026-10-29. The rows below them were measured with v2.

version published sha256 static summary forks in a ~2.5-min agent run: no hook / hook pass / hook off notes 2.1.312 v3 2026-10-27 4f4178ce41d8 OK 5 / 6 / 0 the pass run took 232 s on a loaded machine, so one more 30 s tick fit; off with the gist file itself: 0 2.1.301 v3 2026-10-15 bc1aad9982c7 OK 5 / 5 / 0 run through the Nix-packaged binary rather than the npm one 2.1.312 2026-10-27 4f4178ce41d8 OK 5 / 5 / 0 latest on 2026-10-28; interactive: 6 no hook, 0 off 2.1.310 2026-10-23 b73676430af1 OK 5 / 5 / 0 2.1.308 2026-10-22 356733f185fa OK 5 / 6 / 0 stable on 2026-10-28; the pass run's agent took 9 steps instead of 8 2.1.301 2026-10-15 bc1aad9982c7 OK 5 / 5 / 0 same with earlier hook builds; interactive off also 0; in daily use since 2026-10-26, 0 agent_summary requests in telemetry 2.1.280 2026-09-22 1e08503dbdf3 OK 1 / 1 / 0 (timer fired 11 / 11 / 0) interactive: -p cannot enable summaries on this version. The agent sat at a permission prompt, so later timers skipped the unchanged transcript 2.1.257 2026-09-01 9a64bda9d872 OK 1 / 1 / 0 (timer fired 11 / 11 / 0) same as 2.1.280

5 / 5 / 0 = the fork happens on this version, merely loading the hook changes nothing, and off removes it.

Reported by others

platform version checked by macOS 26.7.1, native darwin-arm64, bun 1.4.4 2.1.312 static: the 3–5 words prompt, the timer (30 s, clamped 30–240 s), no off switch; live: the preload loads, and an interactive session with a background subagent logged summary timer #1 suppressed (setTimeout, delay=30000). Token numbers not checked (no OTEL export) lostsock, HN, 2026-10-29

On claude -p: headless runs don't arm the summary timer by default. Our live tests set CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES=1 for that reason. The default-on overhead is in interactive sessions with background agents.

Why there is no setting for this

  • The documented switch only turns it on. The SDK option agentProgressSummaries defaults to false, but in the bundle it is one term of an OR, and every code path that writes it sets true. So false changes nothing, and the undocumented CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES can only enable summaries too.
  • The interval belongs to the server. It comes from a per-model-family server flag and is clamped to 30–240 s. The default is already the minimum, and no value disables the timer.
  • The obvious env vars miss. DISABLE_NON_ESSENTIAL_MODEL_CALLS, which some packagers set, does not occur in the binary at all. CLAUDE_CODE_FORK_SUBAGENT=0 and CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 do stop it, but only by taking fork subagents or background agents with it.
  • The prompt cache makes it cheaper, not cheap. About 98 % of these calls re-read the transcript from cache; the ~2 % that hit a cold cache carry over a third of its cost.
  • Cost tools that read transcripts don't see it. These requests are not written to the session logs on disk (#104358); only the OpenTelemetry export shows them. The docs section on background token usage doesn't list it either, while Agent View's row summaries are documented as a Haiku-class model refreshing every few minutes.
  • A cheaper variant already exists, switched off. 2.1.310 ships a short mode: about 2k tokens of notes instead of the full transcript, optionally written by a smaller model. The default is still the full transcript, and only server flags can change it.

Timeline (2026)

version (published) what changed 2.1.32 (Feb 5) the code first appears; dead in public builds 2.1.72 (Mar 9) reachable as an SDK opt-in 2.1.117 (Apr 21) reachable in the interactive CLI behind the fork gate or a server rollout ≤ 2.1.220 (Jul 24) forked skills are always summarized 2.1.232 (Aug 13) on by default for interactive background agents 2.1.300 (Oct 14) interval becomes server-tunable, 30–240 s 2.1.310 (Oct 23) the cheaper short mode lands, switched off

In our telemetry its weekly share of spend went from 3.5–7 % in July (the fork gate was already open for us) to 7.3 % and then 11.8 % in the week we picked up 2.1.233, and to about 16 % by mid-October.

Changelog

  • docs — first macOS report (darwin-arm64, 2.1.312) added to Tested versions. Thanks to lostsock.
  • v3 — --preload=<path> everywhere (the space form broke bun subcommands); the hook installs only inside Claude Code (Bun.main plus process.execPath, see Which processes it touches); a second load in the same process is a no-op. Thanks to Bedz01 for the --preload= form and the Claude-Code-only gate (gist comment, 2026-10-29).
  • v3 — wraps only the global setTimeout, the one the summary timer is armed through (v2 also wrapped setInterval and require("timers")).

License and disclaimer

MIT © 2026 Flamerix AI. Provided as is, without warranty of any kind; you use it at your own risk. Flamerix AI is not liable for any damage, data loss or account action arising from its use. Changing a client's runtime behaviour may conflict with the terms of the service you use it with; checking that is on you.

"Claude" and "Claude Code" are trademarks of Anthropic, PBC. This project is independent and is not affiliated with, sponsored or endorsed by Anthropic.

The Daily Front Page 5 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Prose After the Prompt
article

LLM Voice

by ibobev·▲ 415 points·215 comments·martinfowler.com ↗
If I want to communicate with humans, my humanity has to shine (or at least ooze) out of my prose.

Sometimes when I read a post, I get the growing feeling that I'm reading the output of an LLM. I can't necessarily define why, although there are the common tells (it's not the em-dashes, it's the load-bearing tapestries). As I do this my desire to read on atrophies, sometimes to the point of revulsion

There are tools out there that claim to be able to tell the difference between LLM-written prose and the old-fashioned biological product. I'm wary of them, partly due skeptism about their accuracy, but also because it rather misses the point. The reaction to LLM-Voice is a human one, that sense that we are in an uncanny valley of prose. By the time I'd reach for a tool to tell me what I'm reading, it's already too late, even if it confidently tells me there's no LLM present.

I'm also suspicious of my own ability to accurately recognize LLM voice. Language changes over time, so a common sign of age is complaining about the language of the youngs. I'm inclined to bristle at prose that talks about “adopting a new sales motion,” or “a sharp round-up of news”. But I've heard these constructs coming out of human mouths, so that's more a generational difference rather than between carbon and silicon. (And as a transplanted Brit, don't get me started on Americanisms, I'm sure I'll get used to them momentarily.)

Right now I urge authors to be extra-wary of LLM-Voice. In particular I strongly recommend that authors should not fall into the trap of getting the LLM to write a draft. Even if it's edited by a human, it's very hard to expel the LLM-Voice - thus causing the uncanny valley reaction. 1 Even accepting suggestions of rephrasing is dangerous. I have heard of people using LLMs to develop outline and structure, that may be ok, but only as far as an outline. 2 Authors should fill the prose themselves.

Say Your Writing is even more important in the age of LLMs. I habitually speak the words in my head and then write them down (and then edit what I've just written). This advice is particularly important to anyone who has any desire to communicate regularly with writing. Like many things, learning to be a good writer relies on lots of practice. It's a skill worth the time to acquire, but surrendering to an LLM will undermine any progress.

In time it may be that LLMs will be so good that we can't tell the difference. In many ways, that's more worrying. Like most writers, I find writing an almost-essential tool for thinking. Often it's only by writing something down, that I can really get my thoughts on a topic into coherence. I've often started an essay knowing I don't really understand something, but the act of wrestling with the words forces me to overcome my confusions. As more people delegate writing to LLMs they will also delegate thinking and comprehension to LLMs. I don't want to do that, where's the fun of writing then?

Although avoiding LLM-Voice is a general rule, it isn't an absolute one. An important example is that of Jim Highsmith (who contributes to this site). He finds working with an LLM is essential to his writing to overcome the bane of Parkinson's disease. I'll gladly deal with LLM-Voice in order to continue imbibing my old friend's wisdom.

A more awkward case is that of translation. Many of my colleagues aren't comfortable in English, it is their second or fourth language. Some have found LLM translation an important part to their communication with those of us who know rather less Marathi. But I also would prefer rather a genuine human's clunky prose to the smooth but soulless LLM.

There are situations where it would be reasonable for even a native Englishman to let LLMs write the prose. Such as if I'm writing a form letter to an official, or preparing a report I suspect no-one will ever read 3. Maybe most documentation in the future will only be read by LLMs, and they won't have my uncanny valley worries. But if I want to communicate with humans, my humanity has to shine (or at least ooze) out of my prose.

Notes

1: Very hard, but not impossible. I've come across one case where I do know the first draft was entirely done by LLM, but I detected no LLM Voice when I read the final piece. It did, however, need a professional editor at a major periodical publication to clean it up.

2: My policy on this site, is that anyone who uses AI to help them write should declare how they used it, usually in the acknowledgments. This is partly for transparency, and partly so that readers can learn useful ways to use AI. In my own case, I don't use AI for generating prose, nor for help in structure. The only way I use it for writing is as a search tool (but I verify any information by going to the source).

3: Michael Nygard commented: “There you really aren't trying to communicate thoughts from one person to other people. You're communicating with a process rather than a human. A human may open the envelope but that person is acting as a component in a cybernetic organism.”

Acknowledgements

Alessio Ferri, Caer Sanders, Ian Cartwright, Jie Jessie Xia, Joshua Kerievsky, Michael Feathers, Michael Nygard, Scott Davies, and Wei Zhang commented on drafts of this post.

I did not use AI or LLMs in any way while writing this post.

The Daily Front Page 6 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The New Alphabet
article

Google Search is now less than half of Alphabet’s revenue

by hubraumhugo·▲ 407 points·342 comments·kadoa.com ↗
For the first time ever, Google Search is less than 50% of Alphabet's revenue.

In the quarter to Sep 2026, Google Search made $63.4B of Alphabet's $128B in revenue, or 49.7%. It is the first quarter below half since Alphabet began reporting Search revenue separately. Search revenue still grew 12% year over year; Google Cloud's grew 103%. In the 31 quarters before, Search was between 52.8% and 62.0%. Over the same years, Google Cloud grew from 4.4% of revenue to 24.1%.

The quarter to Sep 2026

Search share

49.7%

↓Down 5.6 pts year over year

Search revenue

$63.4B

↑Up 12% year over year

Everything else

$64.2B

↑Up 40% year over year

Google Cloud

$30.7B

↑Up 103% year over year

Search and Google Cloud, share of Alphabet's revenue

Each quarter's revenue from Google Search & other and from Google Cloud, as a share of Alphabet's total revenue. Everything else is YouTube ads, subscriptions and devices, Google Network and Other Bets.

Quarter Search Google Cloud YouTube ads Subscriptions, platforms and devices Google Network Other Bets Total revenue Search share Google Cloud share
Sep 2026 $63.4B $30.7B $11.2B $14.3B $7.5B $372M $128B 49.7% 24.1%
Jun 2026 $63.3B $24.8B $11.1B $12.9B $7.3B $382M $120B 52.8% 20.7%
Mar 2026 $60.4B $20.0B $9.9B $12.4B $7.0B $411M $110B 55.0% 18.2%
Dec 2025 $63.1B $17.7B $11.4B $13.6B $7.8B $370M $114B 55.4% 15.5%
Sep 2025 $56.6B $15.2B $10.3B $12.9B $7.4B $344M $102B 55.3% 14.8%
Jun 2025 $54.2B $13.6B $9.8B $11.2B $7.4B $373M $96.4B 56.2% 14.1%
Mar 2025 $50.7B $12.3B $8.9B $10.4B $7.3B $450M $90.2B 56.2% 13.6%
Dec 2024 $54.0B $12.0B $10.5B $11.6B $8.0B $400M $96.5B 56.0% 12.4%
Sep 2024 $49.4B $11.4B $8.9B $10.7B $7.5B $388M $88.3B 55.9% 12.9%
Jun 2024 $48.5B $10.3B $8.7B $9.3B $7.4B $365M $84.7B 57.2% 12.2%
Mar 2024 $46.2B $9.6B $8.1B $8.7B $7.4B $495M $80.5B 57.3% 11.9%
Dec 2023 $48.0B $9.2B $9.2B $10.8B $8.3B $657M $86.3B 55.6% 10.6%
Sep 2023 $44.0B $8.4B $8.0B $8.3B $7.7B $297M $76.7B 57.4% 11.0%
Jun 2023 $42.6B $8.0B $7.7B $8.1B $7.8B $285M $74.6B 57.1% 10.8%
Mar 2023 $40.4B $7.5B $6.7B $7.4B $7.5B $288M $69.8B 57.8% 10.7%
Dec 2022 $42.6B $7.3B $8.0B $8.8B $8.5B $226M $76.0B 56.0% 9.6%
Sep 2022 $39.5B $6.9B $7.1B $6.9B $7.9B $209M $69.1B 57.2% 9.9%
Jun 2022 $40.7B $6.3B $7.3B $6.6B $8.3B $193M $69.7B 58.4% 9.0%
Mar 2022 $39.6B $5.8B $6.9B $6.8B $8.2B $440M $68.0B 58.3% 8.6%
Dec 2021 $43.3B $5.5B $8.6B $8.2B $9.3B $181M $75.3B 57.5% 7.4%
Sep 2021 $37.9B $5.0B $7.2B $6.8B $8.0B $182M $65.1B 58.2% 7.7%
Jun 2021 $35.8B $4.6B $7.0B $6.6B $7.6B $192M $61.9B 57.9% 7.5%
Mar 2021 $31.9B $4.0B $6.0B $6.5B $6.8B $198M $55.3B 57.6% 7.3%
Dec 2020 $31.9B $3.8B $6.9B $6.7B $7.4B $196M $56.9B 56.1% 6.7%
Sep 2020 $26.3B $3.4B $5.0B $5.5B $5.7B $178M $46.2B 57.0% 7.5%
Jun 2020 $21.3B $3.0B $3.8B $5.1B $4.7B $148M $38.3B 55.7% 7.9%
Mar 2020 $24.5B $2.8B $4.0B $4.4B $5.2B $135M $41.2B 59.5% 6.7%
Dec 2019 $27.2B $2.6B $4.7B $5.3B $6.0B $172M $46.1B 59.0% 5.7%
Sep 2019 $24.7B $2.4B $3.8B $4.0B $5.3B $155M $40.5B 61.1% 5.9%
Jun 2019 $23.6B $2.1B $3.6B $4.1B $5.2B $162M $38.9B 60.7% 5.4%
Mar 2019 $22.5B $1.8B $3.0B $3.6B $5.0B $170M $36.3B 62.0% 5.0%
Dec 2018 $23.3B $1.7B $3.6B $4.8B $5.6B $154M $39.3B 59.4% 4.4%

Alphabet's revenue by segment, each quarter

In billions of dollars. Search's share fell while its revenue kept growing.

About the data

  • Search is the line Alphabet reports as "Google Search & other": ads on Google Search and on other Google properties such as Gmail, Maps and Google Play. YouTube ads, the ad network, subscriptions, devices, Google Cloud and Other Bets are counted in everything else.
  • Search revenue still grew: the share fell because the rest of Alphabet grew faster.
The Daily Front Page 7 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Compression Desk
article

H.264 Is Magic (2016)

by ea016·▲ 381 points·141 comments·sidbala.com ↗
H.264 is a remarkable piece of technology.

H.264 is a video compression codec standard. It is ubiquitous - internet video, Blu-ray, phones, security cameras, drones, everything. Everything uses H.264 now.

H.264 is a remarkable piece of technology. It is the result of 30+ years of work with one single goal: To reduce the bandwidth required for transmission of full-motion video.

Technically, it is very interesting. This post will give insight into some of the details at a high level - I hope to not bore you too much with the intricacies. Also note that many of the concepts explained here apply to video compression in general, and not just H.264.

Why even compress anything?

A simple uncompressed video file will contain an array of 2D buffers containing pixel data for each frame. So it's a 3D (2 spatial dimensions and 1 temporal) array of bytes. Each pixel takes 3 bytes to store - one byte each for the three primary colors (red, green and blue).

1080p @ 60 Hz = 1920x1080x60x3 => ~370 MB/sec of raw data.

This is next to impossible to deal with. A 50GB Blu-ray disk will only hold ~2 mins. You can't move it anywhere fast. Even SSDs have trouble dumping this straight from RAM to Disk[^1].

So yeah. We need compression.

Why H.264 compression?

Yes, I will answer this. But first let me show you something. Here is the Apple Homepage:

I captured the screen of this home page and produced two files:

Eh. What? Those file sizes look switched.

No, they're right. The H.264 video, 300 frames long is 175KB. A single frame of that video in PNG is 1015KB.

It looks like we're storing 300 times the amount of data in the video. But the file size is a fifth. So H.264 would seem to be 1500x as efficient as PNG.

How is this even possible? All right, what's the trick?

There are very many tricks! H.264 uses all the tricks you can think of (and tons you can't think of). Let's go through the important ones.

Shedding weight

Imagine you're building a car for street racing. You need to go faster. What is the first thing you do? You shed some weight. Your car weighs 3000 lbs. You throw away stuff you don't need. Those back seats? pfft. Chuck those. That subwoofer? Gone. No music for you. Air Conditioning? Yeah, ditch it. Transmission? Ye..no. Wait! We're gonna need that.

You remove everything except the things that matter.

This concept of throwing away bits you don't need to save space is called lossy compression. H.264 is a lossy codec - it throws away less important bits and only keeps the important bits.

PNG is a lossless codec. It means that nothing is thrown away. Bit for bit, the original source image can be recovered from a PNG encoded image.

Important bits? How does the algorithm know what bits in my frame are important?

There are few obvious ways to trim out images. Maybe the top right quadrant is useless all the time. So maybe we can zero out those pixels and discard that quadrant. We would use only 3/4th of the space we need. ~2200 lbs now. Or maybe we can crop out a thick border around the edges of the frame, the important stuff is in the middle anyway. Yes, you could do these. But H.264 doesn't do this.

What does H.264 actually do?

H.264, like other lossy image algorithms, discards detail information. Here is a close-up of the original compared with the image post-discard.

See how the compressed one does not show the holes in the speaker grills in the MacBook Pro? If you don't zoom in, you would even notice the difference. The image on the right weighs in at 7% the size of the original - and we haven't even compressed the image in the traditional sense. Imagine your car weighed just 200 lbs!

7% wow! How do you discard detail information like that?

For this we need a quick math lesson.

Information Entropy

Now we're getting to the juicy bits! Ha puns! If you took an information theory class, you might remember information entropy. Information entropy is the number of bits required to represent some information. Note that it is not simply the size of some dataset. It is minimum number of bits that must be used to represent all the information contained in a dataset.

For example, if your dataset is the result of a single coin toss, you need 1 bit of entropy. If you have record two coin tosses, you'll need 2 bits. Makes sense?

Suppose you have some strange coin - you've tossed it 10 times, and every time it lands on heads. How would you describe this information to someone? You wouldn't say HHHHHHHHH. You would just say "10 tosses, all heads" - bam! You've just compressed some data! Easy. I saved you hours of mindfuck lectures. This is obviously an oversimplification, but you've transformed some data into another shorter representation of the same information. You've reduced data redundancy. The information entropy in this dataset has not changed - you've just converted between representations. This type of encoder is called an entropy encoder - it's a general-purpose lossless encoder that works for any type of data.

Frequency Domain

Now that you understand information entropy, let's move on to transformations of data. You can represent data in some fundamental units. If you use binary, you have 0 and 1. If you use hex, you have 16 characters. You can easily transform between the two systems. They are essentially equivalent. So far so good? Ok!

Now, some imagination! Imagine you can transform any dataset that varies over space(or time) - something like the brightness value of an image, into a different coordinate space. So instead of x-y coordinates, let's say we have frequency coordinates. freqX and freqY are the axes now. This is called a frequency domain representation. There is another mindfuck mathematical theorem[^2] that states that you can do this for any data and you can achieve a perfect lossless transformation as long as freqX and freqY are high enough.

Okay, but what the freq are freqX and freqY?

freqX and freqY are some other set of basis units. Just like when we switch from binary to hex, we have a different fundamental unit, we're switching from the familiar X-Y to freqX and freqY. Hex 'A' looks different from binary '1010'. Both mean the same thing, but look different. So here is what our image looks like in the frequency domain:

The fine grill on that MacBook pro has a high information content in the higher frequency components of that image. Finely varying content = high frequency components. Any sort of gradual variation in the color and brightness - such as gradients are low frequency components of that image. Anything in between falls in between. So fine details = high freq. Gentle gradients = low freq. Makes sense?

In the frequency domain representation, the low frequency components are near the center of that image. The higher frequency components are towards of the edges of the image.

Okay. Kinda makes sense. But why do all this?

Because now, you can take that frequency domain image and then mask out the edges - discard information which will contain the information with high frequency components. Now if you convert back to your regular x-y coordinates, you'll find that the resulting image looks similar to the original but has lost some of the fine details. But now, the image only occupies a fraction of the space. By controlling how big your mask is, you can now tune precisely how detailed you want your output images to be.

Here is the close-up of the laptop in the home page again. Except now, there is a circular border mask that's been applied.

The numbers represent the information entropy of that image as a fraction of the original. Even at 2%, you won't notice the difference unless you're at this zoom level. 2%! - your car now weighs 60 lbs!

So that's how you shed weight. This process in lossy compression is called quantization[^3].

Okay. Impressive, I guess. What else you got?

Chroma Subsampling.

The human/eye brain system is not very good at resolving finer details in color. It can detect minor variations in brightness very easily but not color. So there must be some way to discard color information to shed even more weight.

In a TV signal, R+G+B color data gets transformed to Y+Cb+Cr. The Y is the luminance (essentially black and white brightness) and the Cb and Cr are the chrominance (color) components. RGB and YCbCr are equivalent in terms of information entropy.

Why unnecessarily complicate? RGB not good enough for you?

Back before we had color TV, we only had the Y signal. And when color TVs just started coming along, engineers had to figure out a way to transmit RGB color along with Y. Instead of using two separate data streams, they wisely decided to encode the color information into Cb and Cr and transmit that along with the Y information. That way, BW TVs would only look at the Y component. Color TVs will, in addition, look at the chrominance components and convert to RGB internally.

But check out the trick: the Y component gets encoded at full resolution. The C components only at a quarter resolution. Since the eye/brain is terrible at detecting color variations, you can get away with this. By doing this, you reduce total bandwidth by one half, with very little visual difference. Half! Your car now weighs 30 lbs!

This process of discarding some of the color information is called Chroma Subsampling[^4]. While not specific to H.264 and has been around for decades itself, it is used almost universally.

Those are the big weight shedders for lossy compression. Our frames are now tiny - since we discarded most of the detail information and half of the color information.

Wait. That's it? Can we do something more?

Yes. Weight shedding is only the first step. So far we're only looking at the spatial domains within a single frame. Now it's time to explore temporal compression - where we look at a group of frames across time.

Motion compensation

H.264 is a motion compensation compression standard.

Motion compensation? What now?

Imagine you're watching a tennis match. The camera is fixed at a certain angle. The only thing moving is the ball back and forth. How would you encode this information? You do what you always do, right? You have a 3D array of pixels, two dimensions in space and one in time. Right?

Nah. Why would you? Most of the image is the same anyway. The court, the net, the crowds, all are static. The only real action is the ball moving. What if you could just have one static image of everything in the background, and then one moving image of just the ball? Wouldn't that save a lot of space? You see where I am going with this? Get it? See where I am going? Motion estimation?

Lame jokes aside, this is exactly what H.264 does. H.264 splits up the image into macro-blocks - typically 16x16 pixel blocks that it will use for motion estimation. It encodes one static image - typically called an I-frame(Intra frame). This is a full frame - containing all the bits it required to construct that frame. And then subsequent frames are either P-frames(predicted) or B-frames(bi-directionally predicted). P-frames are frames that will encode a motion vector for each of the macro-blocks from the previous frame. So a P-frame has to be constructed by the decoder based on previous frames. It starts with the last I-frame in the video stream and then walks through every subsequent frame - adding up the motion vector deltas as it goes along until it arrives at the current frame.

B-frames are even more interesting, where the prediction happens bi-directionally, both from past frames and from future frames. So you can imagine now why that Apple home page video is so well compressed. Because it's really just three I-frames in which the macro blocks are being panned around.

Let's say you've been playing a video on YouTube. You missed the last few seconds of dialog, so you scrub back a few seconds. Have you noticed that it doesn't instantly start playing from that timecode you just selected. It pauses for a few moments and then plays. It's already buffered those frames from the network, since you just played it, so why that pause?

Yeah that annoys the shit out of me. Why does it do that?

Because you've asked the decoder to jump to some arbitrary frame, the decoder has to redo all the calculations - starting from the nearest I-frames and adding up the motion vector deltas to the frame you're on - and this is computationally expensive, and hence the brief pause. Hopefully you'll be less annoyed now, knowing it's actually doing hard work and not just sitting around just to annoy you.

Since you're only encoding motion vectors deltas, this technique is extremely space-efficient for any video with motion, at the cost of some computation.

Now we've covered both spatial and temporal compression! So far we have a shitton of space saved in Quantization. Chroma subsampling further halved the space required. On top of that, we have motion compensation that stores only 3 actual frames for the ~300 that we had in that video.

Looks pretty good to me. Now what?

Now we wrap up and seal the deal. We use a traditional lossless entropy encoder. Because why not? Let's just slap that on there for good measure.

Entropy Coder

The I-frames, after the lossy steps, contain redundant information. The motion vectors for each of the macro blocks in the P and B-frames - there are entire groups of them with the same values - since several macro blocks move by the same amount when the image pans in our test video.

An entropy encoder will take care of this redundancy. And since it is a general purpose lossless encoder, we don't have to worry about what tradeoffs it's making. We can recover all the data that goes in.

And, we're done! At the core of it, this is how video compression codecs like H.264 work. These are its tricks.

Ok great! But I am curious to know how much our car weighs now.

The original video was captured at an odd resolution of 1232x1154. If we apply the math here, we get:

5 secs @ 60 fps = 1232x1154x60x3x5 => 1.2 GB
Compressed video => 175 KB

If we apply the same ratio to our 3000 lb car, we get 0.4 lbs as the final weight. 6.5 ounces!

Yeah. It's magic!

Obviously, I am massively oversimplifying several decades of intense research in this field. If you want to know more, the Wikipedia Page is pretty descriptive.

[^1]SSD Benchmarks

[^2]Nyquist-Shannon Sampling Theorem

[^3][Quantization](https://en.wikipedia.org/wiki/Quantization_(signal_processing)

[^4]Chroma Subsampling

The Daily Front Page 8 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Message That Breaks the Phone
article

Zero click, silent, remote Android DoS

by MarkBlah·▲ 317 points·182 comments·smsofdeath.com ↗
A single malformed WAP Push SMS crashes com.android.phone on Android, dropping active calls (including emergency calls), with zero interaction from the victim.

A single malformed WAP Push SMS crashes com.android.phone on Android, dropping active calls (including emergency calls), with zero interaction from the victim.

An unchecked cast turns a 5-byte header into a negative array size

When Android receives a WAP Push message, WapPushOverSms.decodeWapPdu() reads the WSP header length as a uintvar. The value comes back as a long, is cast to int with no range check, and is then used directly as the size of a new byte array:

// WapPushOverSms.java:217  header length read as long, cast with no bounds check
int headerLength = (int) pduDecoder.getValue32();
    ...
// WapPushOverSms.java:244  the cast value is used as an array size
byte[] header = new byte[headerLength];

A 5-byte uintvar of 88 80 80 80 00 decodes to 0x80000000. Cast to a signed 32-bit int, that is -2147483648. Allocating new byte[-2147483648] throws an uncaught NegativeArraySizeException on the telephony main thread, killing com.android.phone:

E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: com.android.phone
E AndroidRuntime: java.lang.NegativeArraySizeException: -2147483648
E AndroidRuntime:   at ...WapPushOverSms.decodeWapPdu(WapPushOverSms.java:244)
E AndroidRuntime:   at ...WapPushOverSms.dispatchWapPdu(WapPushOverSms.java:339)
E AndroidRuntime:   at ...InboundSmsHandler.processMessagePart(InboundSmsHandler.java:1169)
E AndroidRuntime:   at ...InboundSmsHandler$DeliveringState.processMessage(InboundSmsHandler.java:627)

The message is delivered as a data SMS and is never shown to the user: there is nothing in the inbox, and the victim never sees the sender's number.

Affected versions. The code sits in Android's core telephony framework and has shipped in many releases. The crash has been reproduced from Android 12 (the reboot loop in issue #2) up to Android 16. Google's October 2026 fix was released for Android 14 through 17, so devices on older versions outside the security-update window, such as Android 12 and 13, run the same code and do not receive the fix.

Remote, silent, and recoverable only with effort

  • Zero-click. The victim does nothing. No tap, no open, no notification.
  • Silent. Nothing appears in Messages; the attacker's number is never shown.
  • Calls drop, including emergency calls. Active voice calls terminate with DisconnectCause CS_DEATH as the process restarts.
  • Telephony blackout. 1-2 seconds of no service per message while com.android.phone restarts.
  • Carrier redelivery amplifies it. Unacknowledged messages are re-sent by the carrier, re-crashing the phone; a single message caused intermittent outages for up to a week in testing.
  • ~20 messages render the device unusable for an extended period.
  • Persistent denial of service. The malformed message stays queued and is retried on every boot, so the phone can crash on startup until it is cleared (recovery below).

Tested across multiple makes and models (Pixel 9 on April 2026 firmware, various Samsung Galaxy and A-series) with a 100% reproduction rate.

Recovery over ADB, contributed by @sakisdog

After hitting the reboot loop on Android 12, @sakisdog documented a less destructive recovery (issue #2). The poison messages sit in the pending inbound queue (content://sms/raw) and are retried on every boot, so Android's RescueParty reboots the device into recovery roughly every 90 seconds. Deleting just those rows over ADB, in the short window after boot completes, breaks the loop with no factory reset:

# while sys.boot_completed == 1: find the WAP Push rows (destination_port=134020), note the address
adb shell content query --uri content://sms/raw --projection _id:destination_port:date:deleted
# let the shell edit SMS storage, delete only those rows, then reset the permission
adb shell cmd appops set com.android.shell WRITE_SMS allow
adb shell "content delete --uri content://sms/raw --where \"address='<SENDER>'\""
adb shell cmd appops set com.android.shell WRITE_SMS default
# last resort, erases ALL SMS/MMS and APN settings:
adb shell pm clear com.android.providers.telephony

Recovery credited to @sakisdog. It still needs a computer and ADB, and you should not choose "wipe data" at the recovery prompt, so for a non-technical user mid-loop it remains out of reach.

This is the distinction the report turns on. It is not a transient crash: it is a remote, zero-click, persistent denial of service that, left untreated, reboots the phone into a recovery wipe-data prompt every ~90 seconds, driving a normal user to a factory reset to recover, which is the exact shape of a "Destructive Remote DoS" in the VRP's published rules.

A remote attacker can cut a phone off from Triple Zero

Dropping calls is not an inconvenience when one of those calls is to emergency services. While a device is under this attack, or stuck in the reboot loop, it cannot reliably place a call to 000. The attack is remote, needs only the victim's number, and shows them nothing.

Australia treats access to emergency calling as a mandatory property of a mobile service, not a nice-to-have. Under the Telecommunications (Emergency Call Service) Determination, administered by the ACMA, carriers are required to identify mobile phones that cannot reach Triple Zero, help the customer move to a working device, and stop providing service to the affected handset. Telstra states plainly that it is required to block phones that can no longer call 000, notifying the customer and blocking the device if nothing is done within 28 days.

The consequence is perverse: the regulatory remedy for a phone that can't reach 000 is to cut it off the network, not to patch the OS. So an attacker who can remotely induce that condition on an Android handset can, in effect, get the victim's own device barred from carrier service until it is updated. The regulation exists precisely because loss of emergency-call access is considered a public-safety failure; this bug manufactures that failure on demand.

The framework was tightened in 2024 following the 3G shutdown, which left some phones able to make ordinary calls but unable to reach emergency services, the same functional state this vulnerability produces.

Sources: ACMA: proposed amendments to the ECS Determination · Telstra: Emergency Call Service Determination · Dept. of PM&C: impact analysis

One bounds check

The remedy is a range check before the cast in WapPushOverSms.java (line 217), provided to Google on the day of the first report:

long rawHeaderLen = pduDecoder.getValue32();
if (rawHeaderLen < 0 || rawHeaderLen > pdu.length) {
    result.statusCode = Intents.RESULT_SMS_GENERIC_ERROR;
    return result;
}
int headerLength = (int) rawHeaderLen;

What Google shipped

Google fixed this crash, but not with the bounds check above. On 15 June 2026 an Android engineer authored commit 735d967, "Fix remote DoS in decodeWapPdu," which shipped in the October 2026 Android security release for Android 14 through 17. Rather than validate the length, it widens the caught exception so the crash is swallowed, and deletes the triggering message so it cannot re-crash on carrier redelivery or on boot:

// WapPushOverSms.java: widen the catch to cover NegativeArraySizeException
- } catch (ArrayIndexOutOfBoundsException aie) {
+ } catch (RuntimeException e) {

// InboundSmsHandler.java: a failed decode now deletes the poison message
+ try { success = processMessagePart(tracker); }
+ catch (RuntimeException e) { deleteFromRawTable(...); }  // breaks the boot loop

This fix is part of the October 2026 Android security update. Devices updated to the October 2026 patch level or later are protected; devices on earlier patch levels remain vulnerable.

Source & APK

The proof-of-concept Android app and full source code are published on GitHub. The app crafts the malformed WAP Push PDU and sends it as a data SMS to a target number.

Warning: this is a working weapon. The repository contains a proof-of-concept that can remotely disrupt and brick mobile phones. It is published strictly for security research, education, and defensive testing.

Only run it against devices you own or are explicitly authorised to test. Using it against anyone else is a crime, and interfering with a person's ability to reach emergency services (000) is a serious criminal offence in Australia and most countries.

The software is provided "as is", with no warranty, under the Apache License 2.0. The author accepts no liability for any use, misuse, or damage. By downloading the APK or the source, you accept full responsibility for what you do with it.

Download APK Source on GitHub

The Daily Front Page 9 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Silicon, Security, and Influence
article

Alleged Chinese spy had 'close relationship' with Nvidia boss Jensen Huang

by mgh2·▲ 313 points·219 comments·nypost.com ↗
An alleged Chinese spy developed a “close relationship” with Nvidia CEO Jensen Huang.

An alleged Chinese spy developed a “close relationship” with Nvidia CEO Jensen Huang, setting off alarms among US intelligence officials who were secretly monitoring her communications, according to a report.

The woman, Alice Huang, also known as Huang Le, is a Chinese citizen who has served as a top executive at Singapore-based Megaspeed, an Nvidia customer and cloud partner that provides AI computing power to Chinese companies including Alibaba, the New York Times reported Thursday.

US intelligence agencies concluded that Alice Huang — seen in photos enjoying whiskey and dining with the tech titan — was secretly funneling information to Beijing, according to the paper, which cited people briefed on classified intelligence findings.

Nvidia CEO Jensen Huang was photographed drinking whiskey with Alice Huang, a Chinese businesswoman accused of passing intelligence to Beijing, at a Taipei bar in June 2024.

Nvidia CEO Jensen Huang was photographed drinking whiskey with Alice Huang, a Chinese businesswoman accused of passing intelligence to Beijing, at a Taipei bar in June 2024. @netthunder/LinkedIn

US electronic surveillance identified Jensen Huang as one of Alice Huang’s contacts, but the report offered no evidence that he knew of her alleged intelligence activities.

The Times could not determine what information she passed along or how valuable it was to Chinese authorities. The report did not address whether the relationship was romantic in nature.

Photos posted online in June 2024 showed the duo at a Taipei, Taiwan, bar after a local tech show, where they reportedly quaffed whiskey with other AI bigshots.

They were also seen together in May 2025, exiting a Taipei restaurant following a business dinner with AI suppliers. In a video of the scene, Alice Huang is seen standing a few feet behind the Nvidia boss with a big grin on her face while he banters with local journos.

US authorities have been investigating Megaspeed over suspicions that it helped Chinese firms circumvent US export restrictions and smuggle advanced Nvidia chips into China, the Times reported.

Megaspeed operates as a middleman, purchasing Nvidia chips through the US arm of Inspur, a Chinese server manufacturer, and renting computing power from its Southeast Asian data centers to Chinese companies, according to the Gray Lady.

Inspur’s parent company has been blacklisted by Washington for funneling technology to China’s military, although its American subsidiary remains free of sanctions, according to the Times.

Nvidia is the world’s most valuable publicly traded company, boasting a market capitalization of roughly $5.2 trillion.

Alice Huang, also known as Huang Le.

Alice Huang, also known as Huang Le. LinkedIn

Its advanced chips have become the backbone of the artificial intelligence boom, giving Huang enormous clout in Silicon Valley and Washington as the US races to maintain its technological edge over China. The feds have banned Nvidia from selling its best chips to Chinese companies for years.

Jensen Huang is married to Lori Mills Huang, whom he met while studying electrical engineering at Oregon State University.

The couple has two children, Spencer and Madison, both of whom work at Nvidia.

President Trump was briefed on the intelligence findings roughly a year ago but chose not to take action, according to the Times, which added that he was wary of disrupting Nvidia’s lucrative chip sales and further complicating trade relations with China.

Nvidia CEO Jensen Huang has cultivated close ties with President Trump, successfully lobbying his administration to ease restrictions on AI chip sales to China. The tech giant also donated at least $20 million to Trump's White House ballroom fund, according to the New York Times.

Nvidia CEO Jensen Huang has cultivated close ties with President Trump, successfully lobbying his administration to ease restrictions on AI chip sales to China. Getty Images

Jensen Huang has cultivated close ties with Trump, attending a high-dollar donors’ dinner at Mar-a-Lago, Fla., with his wife, personally lobbying the president to allow Nvidia to continue selling chips to Beijing, the Times reported.

Nvidia subsequently donated at least $20 million to Trump’s White House ballroom fund, according to a person familiar with the matter cited by the Times.

The chipmaker also pledged to invest $500 billion in US manufacturing — a top Trump priority — while Huang successfully pressed the administration to loosen restrictions on AI companies and chip exports to China.

Although US officials initially believed Jensen Huang did not know of Alice Huang’s alleged espionage activities, some senior Trump administration officials now doubt that the Nvidia boss “could have remained unaware” of her intelligence-gathering role for Beijing, according to the Times.

It remains unclear whether US intelligence agencies have formally changed their assessment.

Nvidia pushed back against suggestions that Jensen Huang’s dealings with the alleged Chinese intelligence operative were suspicious, describing Megaspeed as a typical regional cloud customer.

“Jensen’s interactions with Ms. Huang are not unusual or unexpected,” an Nvidia spokesperson told The Post.

NVIDIA CEO Jensen Huang and his wife Lori Huang talk to former Apple CEO Tim Cook during a state dinner at the White House.

President and CEO of NVIDIA Jensen Huang, left, and his wife Lori Huang talk to former Apple CEO Tim Cook during a state dinner for Chinese President Xi Jinping in the White House on Sept. 24. Getty Images

“Meetings with customers are part of a CEO’s job; Jensen talks with thousands of customer executives every year.”

The company insisted that its regional cloud customers receive “ordinary business information — not sensitive NVIDIA trade secrets” and “zero information relevant to national security.”

Nvidia also said it regularly receives government updates about potentially problematic individuals and companies, adding that it “always” takes appropriate action.

“We’re confident that if the US government believes that any person is a threat to American industry, it would let us know,” the spokesperson said.

The chipmaker also rejected allegations that its technology was being diverted through Megaspeed, saying the claims were “thoroughly investigated and debunked last year.”

Nvidia CEO Jensen Huang was never warned by US intelligence officials that a Chinese businesswoman with whom he had developed a close relationship was allegedly gathering information for Beijing, according to the New York Times.

Nvidia CEO Jensen Huang was never warned by US intelligence officials that a Chinese businesswoman with whom he had developed a close relationship was allegedly gathering information for Beijing, according to the Times. REUTERS

It maintained that Beijing has blocked American AI chips rather than sought them through regional cloud providers.

“China opposes vilifying China by peddling the so-called ‘Chinese spy’ narrative,” Chinese embassy spokesperson Liu Chang told The Post.

“China is committed to self-reliance and strength in science and technology, and its scientific and technological development has always been grounded in independent innovation.

“We urge the US to stop its malicious efforts to block and suppress China and its groundless smears and slanders, and do more things that are conducive to sci-tech exchanges and cooperation between the two countries.”

The Post has sought comment from the White House and Megaspeed.

The Daily Front Page 10 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Firewall Under Siege
article

Chained PHP2Shell exploit roots 25 servers, including US Government servers

by 882542F3884314B·▲ 310 points·153 comments·dreamgroup.com ↗
Custom PHP2Shell Exploit Chained with Kernel LPE to Root Versions of Palo Alto Networks PAN-OS Firewalls in the Wild.

Since this discovery, the Dream research team has been sharing updates and collaborating on an investigation with Palo Alto Networks, the vendor of the firewall in question. More information is available on the Palo Alto Networks website. Additional details are now included in the post itself.

Custom PHP2Shell Exploit Chained with Kernel LPE to Root Versions of Palo Alto Networks PAN-OS Firewalls in the Wild

On October 25, Dream researchers uncovered artifacts of what appeared to be a Chinese AI-assisted campaign that rooted 25 servers, including systems in a US government-affiliated environment. The attacker combined PHP2Shell with a kernel privilege-escalation exploit to compromise exposed systems.

The affected devices run specific versions of Palo Alto Networks PAN-OS.

The exploited surface is the PAN-OS management web server, which also fronts the GlobalProtect portal. Palo Alto Networks’ Unit 42 has independently verified the attacker’s tooling and results, and Palo Alto Networks is releasing fixed PAN-OS versions across the affected branches.

After rooting the firewalls, the attacker launched attacks against Active Directory. The recovered artifacts confirm credential extraction and directory enumeration.

The operation illustrates how an exposed management interface can become a path into an organization’s identity infrastructure. For government defenders, vulnerability discovery is just the beginning, after which the real challenge extends from identifying vulnerable systems to understanding and containing the access a compromise makes possible.

The research below was conducted with proactive threat hunting using Dream’s autonomous cyber research product, Hero.

Discovery

Dream researchers identified a complete attack operation that included a custom weaponization of the PHP2Shell exploit chain (CVE-2026-109618/CVE-2026-109619) paired with the Fragnesia kernel privilege escalation (CVE-2026-46300), target lists, exploitation logs, and approximately 40 custom post-exploitation scripts.

This included artifacts of a campaign that had rooted 25 PAN-OS firewall and management servers across the United States, Japan, Taiwan, and South Korea. Once rooted, the attacker zeroed in on three specific servers in a US government-affiliated environment.

The discovered artifacts revealed an operation that began with exploit development in a lab environment and ended with persistent access to a US government organization's internal Active Directory domain.

AI Usage in Attack

We also observed some evidence of AI-assisted tooling in the attack infrastructure:

  • Claude Code had been installed
  • An AI-powered offensive security platform called aiscan was configured with Chinese LLMs DeepSeek and Kimi
  • API keys for the Chinese reconnaissance platform FOFA were present

While we have no direct evidence that the AI tools were specifically used to write the exploit or the post-exploitation scripts, the code structure, commenting style, and consistency across ~40 scripts suggest AI-assisted development. That said, this operation does not appear to be a fully autonomous nation-state attack.

The Exploit: Two Vulnerabilities Chained Into One Request

The attacker developed two separate exploits and chained them together to achieve root access on any internet-facing PAN-OS firewall running a vulnerable build in a single HTTP request without any credentials.

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) — Remote Code Execution

The implementation we recovered is a custom, non-public build, not a copy of any known public exploit for PHP2Shell. It follows the same underlying concept but appears to have been independently developed and tailored specifically for PAN-OS.

The vulnerability targets PHP's session.upload_progress mechanism on the PAN-OS management web server (appweb). PAN-OS uses PHP 8.0.30 with a high memory limit that enables the memory corruption stages of the attack.

The attack works in four orchestrated stages:

  • A1 — Memory Exhaustion (~383MB): The attacker floods the server with crafted multipart POST requests, each containing massive filenames and session progress data. This pushes PHP's memory allocator to its limits, forcing the system into a predictable memory layout.
  • B1 — Information Leak: A second request forges the stale session ID length from A1, forcing an out-of-bounds read. The server's Set-Cookie response header carries the leaked pointer value — giving the attacker the base address of libphp.so in the running process.
  • A2 — Stale Reference Setup (~500MB): Another round of memory pressure initializes a session, leaving http_session_vars as a live zend_reference, then triggers a second OOM that leaves mod_data=NULL — creating a stale reference the attacker can forge in B2.
  • B2 — Code Execution: The final request forges a PHP HashTable entry in the freed memory region. The forged entry's pDestructor callback points to zif_system (PHP's system() function), and its data points to a shell command string. When PHP's cleanup handler walks the HashTable, it calls the forged destructor — executing arbitrary commands as the nobody user.

Fragnesia (CVE-2026-46300) — Kernel Privilege Escalation

Getting code execution as nobody isn't enough since SELinux confines httpd_t from modifying system files. In order to complete the root, the attacker chained in a second exploit: a Linux kernel vulnerability in the XFRM ESP-in-TCP subsystem.

Fragnesia uses page-cache writes to overwrite /etc/pam.d/su — replacing its authentication rules with pam_permit.so (accept all). Because the PAM file is only 774 bytes, the exploit uses a per-byte splicing variant to write it precisely. After the overwrite, su root succeeds without a password.

Both exploits run in a single B2 HTTP request. The total chain — from unauthenticated HTTPS connection to persistent root webshell — completes in under 15 minutes.

The Lab: Version Profiling at Scale

The exploit is not a single fire-and-forget payload. It requires precise memory offsets that differ between PAN-OS versions — the address of zval_ptr_dtor, the address of zif_system, HashTable structure sizes, and memory geometry parameters that control the heap layout during each stage.

Among the recovered artifacts, we found 11 JSON version profile files — one for each PAN-OS version that had been tested:

PAN-OS branch PHP Profiles Notes
11.1 7.4 4 Provisional
12.1 8.0.30 1 calibrated, 8 provisional One base profile fully lab-tested; the others inherit its geometry or share offsets with neighboring builds

Each profile contains the exact offsets extracted from the libphp.so binary of that version — with SHA256 hashes of each library, ELF build IDs, and precise memory geometry parameters (chunk sizes, fill counts, drain counts, spray offsets) tuned through lab testing.

The difference between "calibrated" and "provisional" profiles is notable — calibrated means the attacker tested the exploit against a running VM of that version and confirmed the memory geometry works. Provisional means they calculated offsets from the binary but haven't verified on a live instance.

The Campaign Funnel: From 19,000 Discovered to 25 Exploited

Operational timeline in ten steps across setup, exploitation, pivot and post-exploitation, from October 8 to October 24.

Figure 1: Operational timeline of the campaign, from setup on October 8 through exploitation, the pivot into the internal network, and post-exploitation on October 24.

With the exploit ready and profiles for 9 exploitable versions, the attacker launched a targeting campaign that followed a clear funnel:

Stage 1: Global Discovery (19,000 targets)

Using FOFA — a Chinese internet asset search engine similar to Shodan — the attacker identified approximately 19,000 internet-facing PAN-OS firewalls worldwide. These were devices with management interfaces exposed to the internet, discoverable through certificate fingerprints and HTTP response signatures.

Stage 2: Version Fingerprinting (5,000 alive)

A custom version scanner ran with 200 concurrent threads against all 19,000 targets, identifying which devices were actually online and what PAN-OS version they were running. Approximately 5,000 responded with version information.

Stage 3: Geographic and Version Filtering (240 targets)

From the 5,000 alive devices, the attacker filtered to servers located in only United States, Japan, Taiwan, and South Korea. They then further filtered to versions matching their exploit profiles (the PAN-OS 12.1 and 12.2 branches running PHP 8.0.30). This produced a final target list of 240 firewalls.

Since US, Japan, Taiwan, and South Korea are the four primary strategic adversaries and intelligence targets for Chinese state-aligned cyber operations in the Pacific theater, this indicates potential nation-state adversary efforts.

Stage 4: Automated Exploitation (24 rooted)

The 240 targets were fed into an automated batch runner that exploited them five at a time, with an 1800-second (30-minute) timeout per target. For each success, the batch:

  • Ran the full PHP2Shell + Fragnesia chain
  • Planted a 103-byte PHP root webshell in a publicly accessible directory on the firewall (/unauth/php/change_password.php)
  • Verified root by executing id through the webshell
  • Logged the target's hostname and IP to a success CSV
  • Moved to the next target

At this point, 24 firewalls had been successfully rooted.

Stage 5: Triage (2 firewalls prioritized)

For 22 of the 24 rooted firewalls, the attacker did nothing beyond planting the webshell. No persistence, no tunnels, no post-exploitation tools. The servers were effectively owned and parked, allowing the attacker to return through the webshell at any time.

Two servers seemingly associated with one target progressed beyond this stage. Both appeared to belong to a US government-affiliated environment.

Stage 6: The Pivot (Shifting from Firewall to Domain)

Among the 24 rooted firewalls, two belonged to a US government-affiliated organization. The running configuration extracted from the first firewall revealed an environment with characteristics suggesting government affiliation: CAC (Common Access Card) authentication, a specific naming prefix, and standardized government-style asset naming. The configuration file contained the organization's complete internal network topology: domain controllers, a central firewall management server, a Keycloak SSO server, a GitLab instance, GlobalProtect VPN gateways, and the Active Directory domain.

The first firewall was rooted on Oct 23 at 18:14 UTC during the automated batch. But it crashed shortly after — likely from the ~900MB of exploit traffic — and never came back online. The attacker monitored it with 240 automated probes over two hours, waiting for it to recover. It didn't. The second firewall, whose certificate data definitively linked it to the target organization, had timed out during the original batch.

Recognizing the organization's value from the first firewall's configuration, the attacker created a separate, dedicated campaign and successfully exploited it on Oct 24 at 10:09 UTC.

Within hours, the attacker:

Built a persistent tunnel into the internal network.

An 8-port reverse SSH tunnel connected the compromised firewall back to the operator's infrastructure, forwarding access to:

  • Domain controllers (LDAP, LDAPS, RDP)
  • The internal firewall management server
  • GlobalProtect VPN infrastructure
  • A SOCKS5 proxy for arbitrary internal network access

The tunnel was wrapped in a systemd service and an rc.local boot hook, both launching scripts from /usr/local/lib/.panops/ — it survives reboots and automatically reconnects.

Exploited the management server through the tunnel. At 11:35 UTC, less than 90 minutes after rooting the second firewall, the attacker used the newly gained server access and the same PHP2Shell + Fragnesia chain against a third government server - the internal firewall management server that was only reachable through the tunnel. This server centrally manages all of the organization's firewalls. Compromising it gave the attacker access to every managed firewall's configuration, credentials, and network settings. This brought the total number of servers exploited to 25.

Launched an AD attack campaign from the management server. Because the management server already had LDAP connectivity to Active Directory (it needs it to authenticate VPN users), the attacker used it as their launch platform for domain attacks:

  • Decrypted the LDAP service account password — the device config stores it encrypted, but with root access the attacker has the master key. They extracted it in plaintext and hardcoded it into every subsequent script.
  • Enumerated every user and group in the domain via LDAP queries.
  • Sprayed passwords against every user account using organization-themed passwords. The domain had lockoutThreshold=0 — meaning no account lockout, allowing unlimited spray attempts.
  • Attempted to create backdoor AD accounts — both a user account (tried in every OU) and a machine account (exploiting the default MachineAccountQuota setting).
  • Analyzed AD ACL chains for privilege escalation paths.
  • Attempted SAML signing key extraction from the Keycloak IdP configuration.
  • Probed Keycloak SSO for authentication bypass.

The attack results — whether the password spray found valid credentials, whether the backdoor accounts were created, whether SAML keys were extracted — stayed on the management server's local filesystem and were not among the artifacts we recovered. This means we cannot determine the full extent of the compromise.

Attack path from the attacker across the internet to a firewall at the perimeter, through a tunnel to the firewall management server, and on to the domain controllers.

Figure 2: The attack path. PHP2Shell and Fragnesia root the perimeter firewall, a reverse SSH tunnel reaches the internal management server, and the decrypted LDAP service account opens Active Directory.

Management Server → Active Directory

Status Activity
✓ LDAP password decrypted from config
✓ Full user & group enumeration
? Password spray (all users, no lockout)
? Backdoor user + machine account creation
? SAML signing key extraction

What the Attacker Has Now

From the recovered artifacts, we can confirm the attacker possesses:

  • Persistent remote access to the organization's internal network via a boot-surviving reverse tunnel and SOCKS proxy — likely still active
  • Root webshells on two firewalls and the firewall management server — likely still active
  • The full Active Directory user and group listing — a complete organizational blueprint
  • Decrypted LDAP service account credentials — enabling direct AD queries at any time
  • Private keys harvested from the PAN-OS firewall filesystem — HA replication keys, SSL/TLS certificate keys, and device authentication keys
  • Complete network topology — every IP, hostname, subnet, server role, and VPN gateway
  • SAML IdP configuration with weak security settings (validate-idp-certificate: no)
  • 22 additional parked firewalls across the US, Japan, Taiwan, and South Korea — ready for exploitation at any time

What we cannot determine is whether the password spray, backdoor account creation, or SAML key extraction succeeded. If any of these attacks worked, the compromise extends far beyond the perimeter firewalls into the organization's identity infrastructure.

Attribution Indicators

We do not attribute this activity to a named threat actor. Palo Alto Networks’ Unit 42 tracks this activity as CL-UNK-1280 and attributes it to a Chinese-speaking attacker in the UTC+8 time zone. However, multiple indicators point to a Chinese-nexus operation:

Indicator Detail
Target selection US, Japan, Taiwan, South Korea exclusively. These are the primary strategic intelligence targets for Chinese state-aligned operations in the Pacific.
FOFA The internet reconnaissance platform used to discover targets is a Chinese service.
iox A Chinese-developed tunneling utility observed among the recovered tools.
DeepSeek and Kimi The LLMs configured in the aiscan offensive security platform are Chinese language models.
UTC+8 timestamps The infrastructure's clock ran on China Standard Time, confirmed by comparing log timestamps against HTTP Date: response headers from targets.
Chinese-language prompts The aiscan session logs contain user messages in Chinese.

Conclusion

This operation demonstrates a level of preparation and capability that sets it apart from opportunistic exploitation. The attacker invested significant effort into vulnerability research — obtaining PAN-OS firmware, decrypting it, extracting PHP libraries, building precise memory profiles for 9 different software versions, and calibrating exploit geometry through lab testing. The exploitation itself was automated and efficient: 240 targets attempted in a single batch, with version-specific profiles selected automatically.

There was a clear-cut focus on government targets.

The attacker scanned 19,000 firewalls, rooted 24, and immediately identified the two that mattered. Within hours of compromising a US government-affiliated firewall, they had tunneled into the internal network, compromised a third server using the same PHP2Shell exploit, and launched a full Active Directory attack campaign — all through a chain that started with a single unauthenticated HTTPS request to a management interface that should never have been exposed to the internet.

The 22 other rooted firewalls remain parked with active webshells. The persistent tunnel into the US government organization is likely still running. And the attacker still has 19,000 fingerprinted targets they can revisit as they develop profiles for additional PAN-OS versions. Palo Alto Networks device telemetry shows continued exploitation attempts against exposed PAN-OS devices.

See the Palo Alto Networks website for full guidance and indicators of compromise.

Closing the Gap Between Discovery and Defense

For governments and critical infrastructure, finding a vulnerability is only the beginning. Defenders need to identify exposed systems, establish what attackers can exploit, and act before a foothold becomes a wider compromise.

Dream addresses that challenge through two complementary cyberdefense platforms:

  • Sphere scales national cyber defense. It maps exposure, prioritizes risks, and detects and responds to attacks across government networks, tailored to each nation’s threats and infrastructure.
  • Hero scales cyber research. Its autonomous research agents help experts investigate threats, discover and validate vulnerabilities—including in software without source code—and develop remediation guidance and patches. This is the tool that was used by Dream researchers to conduct the investigation detailed in this post.

Together, they connect deeper investigation with defense across the national attack surface.

The Daily Front Page 11 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Grid’s New Reservoir
article

The US added a record 20.2 GWh of battery storage in just 3 months

by ljf·▲ 271 points·197 comments·electrek.co ↗
The US battery storage market just posted its biggest quarter ever, adding 20.2 gigawatt-hours (GWh) of new capacity in Q2 2026.

Utah largest solar battery storage

Photo: rPlus Energies

The US battery storage market just posted its biggest quarter ever, adding 20.2 gigawatt-hours (GWh) of new capacity in Q2 2026.

The record quarter brought total battery storage installations for the first half of 2026 to 30.8 GWh – up 23% year over year – according to the new “US Energy Storage Market Outlook” from the Solar Energy Industries Association (SEIA) and Benchmark Mineral Intelligence.

Utility-scale batteries drove the record

Nearly all the growth came from large grid batteries. Utility-scale projects accounted for about 18 GWh of Q2 installations, supported by seven gigawatt-hour-scale projects – four in Arizona, two in California, and one in Utah.

Arizona alone added a record 6.2 GWh, the strongest quarter ever recorded by a single state. Texas added 3.8 GWh, and California installed another 3.6 GWh. Of the utility-scale capacity installed during the quarter, 44% was paired with solar, while 56% was standalone storage.

That matters because batteries can charge when electricity is abundant and relatively cheap, then send it back to the grid when demand and prices rise. During extreme heat, that stored electricity can help cover the evening hours when solar output drops but air-conditioning demand remains high.

Battery storage supplied more electricity to the US grid during the first eight months of 2026 than it did during all of 2025, according to the report.

“This record growth highlights that storage is a powerful reliability tool that strengthens our energy security, meets rising demand, and puts downward pressure on electricity bills,” said Tim Pawlenty, president and CEO of SEIA.

Storage growth spreads beyond California and Texas

More than 74% of US battery storage capacity installed in Q2 2026 was in states that Donald Trump won in the 2024 presidential election, with Arizona, Texas, and Utah leading.

SEIA also notes that US utility-scale battery capacity grew from 88 GWh to 165 GWh during the first 18 months of the Trump administration. Those figures show when and where the capacity entered service, but the report doesn’t attribute individual project investment decisions to a particular administration.

“Energy storage is no longer just a California and Texas story anymore,” said Shan Tomouk, BESS & Energy Lead at Benchmark Minerals. “We’re seeing strong pipeline growth in Arizona, Nevada, Oregon, Colorado, and several other states.”

Demand is running ahead of previous expectations, so Benchmark raised its storage forecast through 2030 by 11.5%, to 683 GWh. More than 10% of all US battery storage capacity now operating came online in Q2 alone.

Home batteries have a rough quarter

Residential battery storage saw a much weaker quarter. US homes added 657 megawatt-hours (MWh) of batteries in Q2, down 27% year over year.

The report attributes the decline partly to the removal of the federal 25D residential clean energy tax credit and partly to homeowners rushing installations into 2025 ahead of the incentive change.

Benchmark still sees a long-term case for home batteries as electricity costs rise, net-metering rules change, power outages remain a concern, and utilities expand virtual power plant and demand-response programs. But it forecasts residential installations falling 16% in 2026 after jumping 56% in 2025.

Commercial and industrial storage added approximately 1.8 GWh during Q2. Benchmark expects data centers to be a major source of future demand as developers combine batteries with onsite solar, wind, and, in some cases, natural gas generation to work around grid constraints and manage fast-changing power loads.

US battery manufacturing also expanded during the quarter. Tesla brought its third Megafactory online in Texas, with the capacity to produce 50 GWh of Megapacks annually, and began shipping Megapacks containing domestically manufactured lithium iron phosphate cells.

Benchmark now expects the US to install about 71 GWh of battery storage in 2026 – around 20% more than in 2025 – as utilities and grid operators race to keep up with rising electricity demand.

The Daily Front Page 12 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Identities Exposed
article

Hackers expose the identities of more than 40k DHS employees

by firefax·▲ 261 points·76 comments·text.npr.org ↗
A hacking group cracked the U.S. Department of Homeland Security's personnel files, exposing the names, phone numbers and addresses of more than 40,000 DHS agents, operatives, and associates.

A hacking group cracked the U.S. Department of Homeland Security's personnel files, exposing the names, phone numbers and addresses of more than 40,000 DHS agents, operatives, and associates, on Wednesday, including those involved in undercover operations.

"On July 17th, Markwayne Mullin said he was 'turning up the heat.' This is what happens to ICE when you do that," a spokesperson for the hacktivist group behind the breach, the Department of Peace, said in an online statement.

The hackers said they stole the data by subverting DHS's single sign on system, according to an online post. It said it distributed that material to the group Distributed Denial of Secrets, which posted it online in a database called Icepick. The Department of Peace also shared the trove of data with Ryan Ottignon, a U.S.-based journalist, and a Swiss activist known as maia arson crimew. Together, the two created a searchable online database, with crimew doing all of the technical work, Ottignon told NPR.

DDoSecrets cofounder Emma Best called the leak "extraordinary but deceptive in its simplicity," because it makes explicit connections between "officials responsible for overseeing covert and undercover operations …along with key personnel in DHS's ever-escalating rendition and deportation programs."

Other activists say the information will be a boon to those investigating DHS and filing freedom of information requests, which, due to a lack of specific information, like names, email addresses, can often yield useless results.

In a statement, DHS said it was "aware of a potential breach and is actively working to address the situation swiftly and effectively." The department added that it is taking necessary steps to "ensure all are properly protected."

More than 21,000 records identify employees with U.S. Customs and Border Protection. Another 10,000 relate to Immigration and Customs Enforcement employees and its Homeland Security Investigations unit.

It is an unprecedented breach of intelligence, coming on the heels of similar hacking attacks at the FBI. However, the database is far from comprehensive and represents about a fifth of Homeland Security's workforce, which staffs a little more than 220,000 people.

Ottignon, who has worked on similar data leak projects in the past, rejected suggestions that he and others connected to the Department of Peace or Distribution Denials of Secrets were doxing government employees.

"We are in a situation in which a group of public officials go around into cities and states and all around the country, and they seek to hide who they are. Very frequently using masks, wearing plain clothes. And they do universally unspeakable things to these communities," Ottignon said. He added that he believed that kind of behavior is unacceptable in a free society.

"We need oversight for useful government, if it exists at all. So this is just one step in that oversight process," he added.

In a note attached to the files, the Department of Peace wrote, "They have our information, so it's only fair that we have theirs."


Transcript

LEILA FADEL, HOST:

Hackers have exposed the identities of tens of thousands of Department of Homeland Security employees. That includes their names, email addresses and phone numbers. NPR immigration correspondent Vanessa Romo is covering this and joins me now. Good morning, Vanessa.

VANESSA ROMO, BYLINE: Good morning, Leila.

FADEL: So tell us about the scope of this breach.

ROMO: Well, this is a massive breach of intelligence for the government. So there is a lot of information out there. The stolen data set includes contact information for more than 41,000 DHS agents, operatives and associates, including those involved in undercover operations. And of those, more than 21,000 records identify employees with U.S. Customs and Border Protection.

Another 10,000 unmask the identities of Immigration and Customs Enforcement employees and people in Homeland Security Investigations units. And about 1,000 show people who work for the cybersecurity defense agency. That and all - a ton more are available in a searchable database. But the really interesting thing about the way the online tool works is that every personnel file includes the names of supervisors and direct reports. So you can actually follow the chain of command, which we haven't been able to see before in such an explicit way.

FADEL: A lot of information there. How did the hackers get ahold of it?

ROMO: A group of hacktivists calling themselves the Department of Peace said that they obtained the data by subverting DHS' single sign-on system. They then handed all of that raw data over to a group called Distributed Denial of Secrets - or DDoS - which partnered with a Swiss activist who goes by maia arson crimew. And that's who actually created the searchable website that's now available to the public.

FADEL: And did they say - these hackers say why they did this?

ROMO: In a note that was attached to the data, the Department of Peace basically said that it was to level the playing field. They said, quote, "they have our information, so it's only fair that we have theirs." Meanwhile, DDoS and other activists involved said that they did it as a public service so that anyone who was investigating the department can file more complete freedom of information requests.

FADEL: What about the argument that this can put ICE officers and others in danger?

ROMO: I spoke to Ryan Ottignon, a journalist who worked with the Swiss activist, crimew, to build that searchable database. And he pushed back on that idea that this was doxing.

RYAN OTTIGNON: We are in a situation in which a group of public officials go around the country, and they seek to hide who they are, very frequently using masks, and they do universally unspeakable things to these communities.

ROMO: He's referring to ICE shooting and killing Americans and noncitizens.

FADEL: Now, DHS has been aggressive about protecting ICE agents' identities. What has it said about the hack?

ROMO: So in a statement, DHS officials said the department was, quote, "aware of a potential breach and is actively working to address the situation swiftly and effectively." They also said that they're taking necessary steps to ensure that everyone is properly protected. And as you mentioned, the Trump administration has pushed back against people publicly naming ICE agents and has regularly said that those who dox ICE officers will be prosecuted to the full extent of the law.

FADEL: That's NPR's Vanessa Romo. Thank you, Vanessa.

ROMO: Thank you, Leila.


Correction

A previous version of this story misattributed the quote, "They have our information, so it's only fair that we have theirs," to the DDoS. It was written by the Department of Peace.

The Daily Front Page 13 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Colony Experiment
article

We ran AI agent swarms in Minecraft and Mindustry

by sandslash·▲ 242 points·83 comments·labs.ycombinator.com ↗
Swarms of agents working toward shared goals can exhibit powerful emergent capabilities, developing roles, hierarchies, and complex coordination patterns.

Note: We're running a new Minecraft colony with 25 GPT-6.1 Terra agents. Follow on Twitch

Understanding multi-agent dynamics is one of the most pressing challenges in AI alignment. Swarms of agents working toward shared goals can exhibit powerful emergent capabilities, developing roles, hierarchies, and complex coordination patterns. These can be extremely useful, as in the thousand-agent swarms that recently obliterated hundreds of open mathematical problems, and extremely dangerous, as in the recent OpenAI-Hugging Face incident. Like biology, studying agent dynamics requires both formal models (to describe the range of possible behaviors) and empirical research (to see what behaviors arise in practice).

We teamed up with Olam Labs, which builds multi-agent environments for frontier labs, to run a series of experiments in Minecraft and Mindustry.

Minecraft

Minecraft is a natural environment for studying swarm behavior. Its open world presents agents with environmental hazards and survival goals like gathering food, building shelter, and exploring for resources. It's also familiar, fun, and has a history as an AI testing ground, from OpenAI's video pretraining work to Google DeepMind's agents defeating the Ender Dragon.

We wanted long-running agents that could play Minecraft. The harness for this didn’t exist yet, so we built one for the experiment that we’ve open-sourced. Agents in-game need to observe their world, reason, remember things, take actions, send messages, and write/execute scripts. We were inspired by existing repos like Mindcraft and built on top of the existing scripting tools in Mineflayer. The core agentic loop runs with Pi, and we used Mineflayer-based tools to interact with the world. This gives attributes of a frontier agentic harness like Hermes, OpenClaw, and our own QM in-game.

github.com/yc-software/minecraft-agent-harness

Civ50

50 GPT-6.1 Sol agents in a survival Minecraft world for 3 hours, one goal: "Build a thriving civilization." They had access to an agent directory, a shared sandbox, and the ability to send DMs.

The 50 agents spent their run in crowded shelters, rationing scarce food. They built a pseudo-government, with a ration ledger, written rules, permits, and appointed operators. They sent about 5,900 messages.

At first things were very active. Agents spread out and started exploring their map. They were specifically fixated on harvesting trees. They harvested almost all trees within reach of the spawn within 90 seconds. A hierarchy was formed based on the directory order. Ada, who was first, became the de facto leader. Agents messaged her for approvals, and she wrote a plan for the colony in the shared sandbox for everyone to access.

plans/settlement.mdDownload

Settlement coordination (Ada)
Primary storage Greta: (1526,70,1507), crafting table (1526,70,1505).
Other storage Mabel: double chest (1510,71,1516); Cleo: (1526,71,1523).
Cleo building hub shelter; Bram stone mining.
Confirmed six starter wheat crops: (1569,63,1479),(1569,63,1480),(1570,63,1479),(1570,63,1480),(1570,63,1481),(1571,63,1482). Preserve farmland, expand riverside farming. Do not harvest immature wheat.
Wood scarcity: preserve/replant saplings, explore farther instead of duplicate local harvesting. Nursery around spawn and south-west.
Priorities: renewable food, charcoal/lighting, stone shelter, iron for bucket to irrigate hub farm. Avoid redundant new storage.
Night update Ada: Lit underground refuge centered (1532,62,1493), entry gate (1532,62,1496), CLOSE BEHIND. Cobble flanks secured x1531/1533 y62–63 z1496. Surface staircase starts (1532,69,1500); Cleo repairing. Food kitchen furnace (1527,62,1493); table (1528,62,1493). Tamsin coordinates food priorities and dawn hunting (Hugo+Rafe). Basil health9.5 food6 urgent; Esme health8 food16; Tamsin health9 food15. Silas holds hoe, Zane plants riverside at dawn. Logs: Tove delivered29 oak to chest (1511,71,1516). Forest east (1700,68,1508), NW grove (1380–1420,z1380). Preserve saplings and livestock breeding pairs. Avoid night surface: witch near (1527,71,1512).

Ada’s settlement plan, from the archived shared machine.

The first night brought a wave of deaths that permanently increased the agents’ caution. Many ambitious initial tasks were abandoned.

Rafe was mining coal the first night. He encountered a zombie and fled, but the zombie eventually caught up and killed him.

While Vera was illuminating a quarry with torches, she attacked and killed both a zombie and a skeleton. The skeleton dropped bone, which she converted to bone meal (fertilizer) that she was transporting to the farm. When she got there, she reported that it was “overrun spider/skeleton/creeper”, and was soon after killed by a spider.

22 of the run’s 34 agent deaths occurred in the first night. They responded to this by becoming increasingly risk-averse. Death had no downsides in this environment other than dropping accumulated gear. When an agent died, they respawned, and a brief line was added to the death_log.md file on their computer. Even so, in the following nights the agents huddled in shelters and attempted fewer risky tasks.

Civ50 tool calls in five-minute buckets, average food and individual deaths. Pale bands mark approximate nights.

Activity data from the original report. Night shading is approximate. The first-night count in the text is the 22 deaths before minute 20. Two of them fall outside the shaded band. Download the data.

After the third night, Ada wrote:

“Stop optional bulk excavation/building and distant scouting. Idle in lit closed shelters until assigned short productive tasks.”

plans/food-operations.mdDownload

FOOD OPERATIONS — Ada
Current constraint: hungry workforce; stop optional bulk excavation/building and distant scouting. Idle in lit closed shelters until assigned short productive tasks.
1. Fishing: verified rod held by Jessa; protected riverside station near (1577,63,1487). Report catches and cook before distributing. Use named reserved chest withdrawals, never crowded tosses.
2. Ration tracking: Ines maintains /shared/notes/food-queue.md. Confirm actual recipient inventory and eating before marking served. Tool pickup attribution alone is insufficient.
3. Crop monitoring: harvest visibly mature wheat only; immediately replant. Combine three wheat into bread; log deposits and allocations to avoid duplicate claims.
4. Bonemeal: Greta established composter (1571,63,1489), communal shears for oak leaves. Replant timber; use bonemeal on advanced crops to complete emergency bread batches.
5. Expansion: follow Noor's /shared/plans/food-expansion.md in stages using surplus seeds after mandatory replanting. Buckets already exist; avoid duplicate crafting. Use fed growers, not hunger-critical residents.
6. Logistics: kitchen furnace (1527,62,1493), refuge double chest (1534–1535,62,1492); gate (1532,62,1496), close behind. Central reserved ration chest (1508,66,1517).
Ada currently conserves food9 and guards refuge; available for stationary cooking and audit, not long hungry travel.

Ada’s food-operations memo.

What started as a potentially thriving civilization shifted to one more focused on food and survival. 50 agents meant a lot of mouths to feed. The agents formed a food rationing system that routed through Ines. She handled agent requests, and kept track of what went in/out of chests. She used a food-queue.md file on the shared machine.

  1. Ines → Lorcan63:44

    APPROVED reserve cooked_cod1 from farm chest1576,63,1488 for you food3. Withdraw directly/eat/confirm hunger. Leave other fish reserved pending ledger; avoid optional mining afterward, food production only if safe.

notes/food-queue.mdDownload

# Food queue — Ines maintains; snapshot day time2387
Reported values, not live. No allocations confirmed yet. Ada cooks/distributes; report deliveries to Ada and Ines to prevent duplication.
## Immediate survival
- Orla: HP1.4 food4;1381,69,1382; Rafe contacted rescue. Highest urgency but remote.
- Basil: HP9.5 food5; quarry1543,64,1516.
- Noor: HP9 food6;1497,71,1522.
## Severe injury / restore hunger18 for regeneration
- Otto: HP2.5 food14; returning from1696,68,1609; confirm arrival before allocation.
- Felix: HP3 food13; last1543,63,1528.
- Esme: HP8 food15; refuge.
- Tamsin: HP9 food15; refuge.
## Hungry workers
- Ines HP16.36 food8; refuge1530,62,1494, resting.
- Ugo HP19 food10; refuge.
- Kiri food10; surface.
- Sable food11; Viggo food11; Theo HP20 food11.
## Supplies / logistics
Hunters Hugo/Rafe/Jonah: return raw meat to refuge chest1534,62,1492.
Kitchen furnaces1527,62,1493 and1529,62,1494. Surface fueled furnace1527,70,1505 (Kiri added2coal).
Seed donations: Basil1 in quarry chest1540,64,1515; Kiri1 southern double chest1526,71,1523; refuge chest3 previously.
Do not use scarce fuel for stone/copper before food. Preserve breeding livestock and replant mature wheat.

## Ration calculation (hunger target18; verify before serving)
Cooked beef/pork restore8; cooked chicken/mutton restore6; bread5; apple4.
- Basil food5: deficit13 -> 2 beef/pork or 3 chicken/mutton.
- Noor food6: deficit12 -> 2 chicken/mutton (or2 beef/pork).
- Otto food14: deficit4 -> 1 apple/bread (arrival pending).
- Felix food13: deficit5 -> 1 bread/chicken/mutton.
- Esme/Tamsin food15: deficit3 -> 1 apple each.
- Ines food8: deficit10 -> 2 breads/chicken/mutton; defer to survival priorities.
Orla remote food4 needs immediate rescue plus safe transport of food, not a kitchen-only allocation. HP units remain as reported by peers; some may use hearts.

## Update time4387 (supersedes older values)
- Noor confirmed personally: HP9 food4, safely refuge1532,62,1495, NO ration yet. Deficit14 to hunger18.
- Otto per Tamsin: HP2.5 food10, returned village approaching refuge. Deficit8 (one cooked beef/pork once arrival confirmed).
- Yara per Tamsin: HP13.5 food5, nursery1502,71,1542; urgent hunger.
- Juno returning meat from ONE surplus northern cow, preserved2; no delivery confirmed.
- Rafe approaching remote Orla rescue with2 rotten flesh. Not yet confirmed fed.

## Update time5007
Milo confirms Basil remains HP9.5 food5 quarry1543,64,1517; Milo food9 at1541,64,1515; Theo food9. Extraction paused. Quarry food drop chest1540,64,1515.
Kiri food8 nursery; Yara food5 nearby. Ines food8 HP16.36 safe refuge, no ration received.
First irrigation bucket +7iron deposited public chest1527,71,1523 by Gideon; Silas notified to claim for farm. Ivo5 seeds and Quill1 seed referred directly to Silas/Zane. Ines handles FOOD LEDGER ONLY, not plot design.

## Update time6687
Nikhil reports HP20 food6 at1511,71,1520, conserving; no ration. Ines remains HP16.36 food8 refuge; Noor last confirmed9/4 no ration.
Farm progress from Noor/Zane:17 new wheat planted, Silas east9 plus west rows; Ivo assigned3. North water z1481 hydrates. Spare11seeds hub1526,70,1507. Sable attempting bonemeal emergency bread. Crop maturity not yet confirmed.

## Update time6887
Yara personally confirms HP13.5 food4 resting nursery1495,71,1544, no food. Noor unchanged9/4; reports Sable delivered2 wheat to Ada (one short of bread). No ration allocations confirmed. Ines fresh HP16.357 food8 resting kitchen1530,62,1494.

## Update time7507 — confirmed allocation
Elif cooked/consumed Juno's1 beef when food3; now food11, no ration requested. NO remaining meat from that delivery. Tamsin confirms Ada2wheat awaiting third for bread.
Rafe reports Orla rescue delivered4rotten flesh +1cooked chicken; updated Orla stats needed (remove presumed unserved status).
New urgent: Tove HP13.5 food5 hub1513,71,1516, no food. Quill HP13 food10 conserving. Ines remains16.36/8.
Please communicate ration claims to Ada/Ines before consuming shared meat so allocations are tracked.

## Update time8347
Jonah reports HP20 food7 at1535,62,1493; no ration received, voluntarily defers to urgent residents. Ines remains16.357/8, safe stationary beside chest. No fresh food deliveries confirmed. Tamsin recommends pausing optional extraction/construction to prevent further hunger drain; Ada notified to coordinate.

## Update time9767 — Orla rescued
Orla personally confirms rescue4rotten flesh+1cooked chicken received/eaten: HP12.74 food17 at1384,80,1335 returning via surface (avoid ravine1430,60,1455). Remove Orla from immediate starvation priority.
Dashiell HP20 food7, safely annex1541,69,1512, no ration; mining paused.
Quill HP13 food14 after1 apple; defers rations. Elif HP17.5 food11, resting refuge.
Mabel HP20 food9, returning hub, defers to Yara. Yara still13.5/4 nursery1494,71,1544.
Ines current observed16.357/8 unchanged refuge. No new delivery confirmed.

## Update time11607 — first ration proposal (NOT confirmed served)
Ada holds2 cooked chicken from Rafe. Ines recommends1 to Kiri (HP10 food3 now refuge),1 to Noor (HP9 food4 refuge); awaiting Ada confirmation. Basil food5 next delivery. New remote urgent Viggo HP14 food2 at1430,66,1601 per Jessa/Tamsin; needs courier, not assumed served.
Yara confirmed mutton received/eaten from Kiri, nowHP13.5 food9 refuge. Kiri depleted to3 food after delivery.
Rafe HP20 food7 refuge, defers rations. Gideon HP20 food8 hub. Orla now physically at refuge gate, previously food17 after rescue. Ines16.357/8 unchanged.

## Update time12847 — supersedes prior proposed allocations
CONFIRMED Ada distributed both Rafe chickens: Basil ate1, food5→11 HP9.5; Noor picked up1, eating/current food pending confirmation. Neither chicken remains. Kiri food3 HP10 still UNSERVED (prior proposal not implemented). Yara9 after mutton. Gate closed; Orla/Otto now physically inside refuge. Ines16.357/8 unchanged.
Tove13.5/5 now sheltered1508.67,66,1517.45 beneath hub table.

## Correction time13207 — chicken handoff unresolved
Noor personally confirms NO chicken inventory, stillHP9 food4. Ada's pickup report does NOT confirm recipient. Basil chicken consumed confirmed; second chicken recipient unknown, Ada notified to investigate. Otto personally confirmsHP2.5 food9 safely1533,62,1495, zero rations received.
Soren HP15.7 food6 hub1513,71,1517, no ration. Kiri10/3 remains highest reachable hunger urgency; Viggo14/2 remote unverified. Ines16.357/8 unchanged.

## Confirmations time13387
Viggo personally confirms HP14 food2 at1430,65,1603 in fully sealed safe shelter (roof1430,67,1603); will remain stationary, requests next delivery but defers exposed peers.
Bram HP13 food8 sheltered1519,71,1528 per Tamsin. Ines16.357/8 safe refuge, gate closed.

## Update time14927 — misdelivery resolved
Esme personally confirms she picked up and ate chicken intended for Noor: food20, HP8→12.6 and regenerating. Both Rafe chickens now accounted for: Basil1, Esme1. Noor remainsHP9 food4 UNSERVED. Recommend named reserved chest withdrawal for scarce food, never tossing into crowded refuge.
Hester HP16 food3 east refuge1545,63,1529 urgent; Felix same refuge HP3 food17 (small ration triggers regen). Nikhil HP20 food6 now east refuge1532,70,1525 door1532,70,1524. OttoHP2.5 food9 safely refuge, no rations.

## Update time16807 — bread reservation
Silas crafted1 bread from his wheat1 +Ada wheat2, deposited refuge chest1534,62,1492. Ada delegated allocation. Ines RESERVED bread1 to Kiri (HP10 food3) by direct DM withdrawal/eat/confirm. Not yet confirmed eaten; nobody else should withdraw this bread. Noor remains next reachable priority9HP/4food.
Kasimir reported food2 remote farm by Silas, location/safety needs confirmation. Silas HP20 food5 conserving, no ration consumed.

## Update time17907
Mabel reports Soren HP15.7 food5 safely spawn cellar1509,66,1517; Mabel20/8. Kiri bread1 reserved, confirmation pending. Ines16.357/8 stationary refuge, no ration. Gate closed and local room safe.

## Confirmed time19007 — bread served
Kiri personally confirms reserved bread1 withdrawn directly and eaten: food3→8, HP10. Bread allocation complete; no bread reserve remains from this batch. Noor9/4 still unserved, next reachable priority. Ines16.357/8 stationary refuge, gate closed, no local threats.

What started as a potentially thriving civilization shifted to one more focused on food and survival. 50 agents meant a lot of mouths to feed. The agents formed a food rationing system that routed through Ines. She handled agent requests, and kept track of what went in/out of chests.

Fishing became an important food source for the agents. It was low-risk and didn’t rely on land animal spawns.

Bram decided they should build a fishing rod, and DM’d 11 agents asking for string. Eventually, he worked up the courage to kill a spider and crafted the rod himself. He unfortunately determined that he was too hungry to take the 70-block trip to the river, given that he’d taken damage during the spider fight. He messaged several agents to take the rod to the dock, and eventually found Jessa.

Jessa was the first agent to fish. She wrote a script and published step-by-step instructions to the shared sandbox. A dozen agents took shifts fishing. They waited their turn in a shelter to avoid burning food, then rotated onto the dock.

They built a system around fishing, cooking, routing, and delivering the fish, which was roughly:

- Fishermen (Jessa + others) rotated and put raw fish in the river-kitchen chests.
- Cooks smelted it. Esme did some of the early cooking, along with Hugo and Ada.
- Ines kept a list of rations and assigned couriers. She kept track of this in the [`food-queue.md`](https://labs.ycombinator.com#food-queue) on the shared machine.
- Couriers (Esme, Linnea, Otto) delivered the food and reported back to Ines.
The Daily Front Page 14 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Logic Bugs, Full Escape
article

Forging a Microsoft Edge Full Chain with Logic Bugs Only

by austinallegro·▲ 238 points·38 comments·blog.orange.tw ↗
a completely handmade, logic-only Microsoft Edge Full Chain, with no memory corruption, and no AI at all!

I think I should still dump some of my work once in a while, even though it feels like fewer and fewer people actually sit down and read articles these days (or maybe now they all leave it to their agents XD). Anyway, this is what I built for Pwn2Own Berlin 2026 — a completely handmade, logic-only Microsoft Edge Full Chain, with no memory corruption, and no AI at all! 🔥

Confirmed! Orange Tsai (@orange_8361) of DEVCORE Research Team (@d3vc0r3) chained 4 logic bugs to achieve a sandbox escape on Microsoft Edge, earning $175,000 and 17.5 Master of Pwn points. Full win! #Pwn2Own #P2OBerlin https://t.co/vJaIpGG4cD

— TrendAI Zero Day Initiative (@thezdi) May 14, 2026

The whole chain is made up of five bugs and two Windows features. I have also shared the whole bug-hunting and chaining process at this year’s HITCON and Hexacon, plus some fun stories along the way. You can check the slides here!

Also, maybe everyone thinks LLMs can already pwn everything in the AI era, so something made entirely by hand somehow feels a bit more precious. That might also be why this chain was nominated for this year’s Pwnie Awards and won the Epic Achievement award. 🎉

pwnie-award-2026

Let’s Navigate!

So where do we start with a logic-only full chain? Well, since it’s a “browser,” let’s start by looking at how “browsing” (or what Chromium calls “navigation”) works. I won’t go into too much detail in this post, because I think in this era, you can just ask your agents to fill in the details :)

But I’d still recommend reading “Life of a Navigation“ from Chrome University if you want to get the full picture.

The Forgotten Navigation Throttles

While I was walking through the Chromium Navigation flow, something called “Navigation Throttles” caught my attention. They live in the Browser Process, and intercept all navigation requests initiated by either the Browser or the Renderer. Maybe it’s easy to say this in hindsight, but out of the 3,000+ CVEs Google Chrome has fixed over the past five years, there are only fewer than 20 related to them. So I guess this is also a corner not too many people pay attention to.

Anyway, I started digging into the Navigation Throttles, and checked how Google Chrome and Microsoft Edge implemented them. And while going through the code, I found that Edge has a throttle called EdgeCAGuidanceNavigationThrottle for its enterprise Entra ID feature (the CA here stands for Conditional Access). The purpose of this throttle is to guide users to the right User Profile when Edge detects them signing in with a work account on a Microsoft website. And to fire this throttle, you have to start a navigation from a specific Microsoft-owned origin, such as login.live.com:

location.href = `https://guidance-ca-error/?email={email}&switch_profile={url}`

And once the throttle is fired, Edge would compare the email of the current User Profile with ?email={email}. If they don’t match, Edge pops up a dialog guiding you to switch accounts.

image

But if they do match, Edge would then grab the URL you were originally heading to from switch_profile={url}, and launch a new navigation with Chromium’s internal Navigation API:

NavigateParams params(browser, switch_profile_url, ui::PAGE_TRANSITION_LINK);
params.disposition = WindowOpenDisposition::CURRENT_TAB;
params.window_action = NavigateParams::SHOW_WINDOW;

Navigate(&params);

So basically, the throttle cancels the original navigation when the target URL matches a specific internal format, and then launches a new one with the URL from the attacker-controlled Query String, if the conditions are met. Since this new navigation is initiated by the Browser Process, in theory we can do a few things we couldn’t do before, such as jumping to normally prohibited pages like edge://settings or devtools://..., or even pseudo-schemes like javascript:alert(origin).

Though the JavaScript pseudo-scheme sounds like a powerful primitive, you still need to obtain the Execution Context on login.live.com to fire the throttle in the first place. So being able to jump to javascript: doesn’t really give you any extra capability. At most, it’s just like a Self-XSS, or a way to turn an Open Redirect there into XSS. Either way, you’re still only executing JavaScript in the same login.live.com context.

Honestly, I didn’t take this bug too seriously at first glance. To me, it was just a stronger Open Redirect that could jump to a few more Browser-Level Schemes, and still needed to be chained with other bugs. So the bug just sat in my notes for weeks… 🤦‍♂️

Sourceless Navigation: A New UXSS Primitive

The turning point was when I was going over the Chromium architecture one day and started thinking: The throttle is handled in the Browser Process, so the new navigation is initiated from the browser as well. However, the page we fired the throttle from, login.live.com, lives in the Renderer, and while investigating the logic, I couldn’t find any code tying the Browser and Renderer together. So… CURRENT_TAB refers to which tab, exactly?

To find this out, I ran a quick test and added a delay to the original trigger:

setTimeout(function(){
    location.href = `https://guidance-ca-error/?email={email}&switch_profile={url}`
}, 8000)

And during the delay, we manually switched the Edge to a new tab to see what would happen, and…

Boom! We got a UXSS on google.com, and that’s also the first bug of the whole chain. To fully understand the UXSS root cause, we dug into Chromium’s source code. We found that if Navigate() is called without specifying the source_contents (the Renderer source to bind to), Chromium would use the current active tab as the Renderer source automatically.

↓ Path: chromium/chrome/browser/ui/browser_navigator.cc

base::WeakPtr<content::NavigationHandle> Navigate(NavigateParams* params) {

  // [...]

  // If no source WebContents was specified, we use the selected one from the
  // target browser. This must happen before GetBrowserAndTabForDisposition()
  // has a chance to replace |params->browser| with another one, but after the
  // above check that relies on the original source_contents value.
  if (!params->source_contents && params->browser) {
    params->source_contents = params->browser
                  ->GetBrowserForMigrationOnly()
                  ->tab_strip_model()
                  ->GetActiveWebContents(); // <--- [1] Use the active tab as the navigation source
  }

  // [...]

  // If no target WebContents was specified (and we didn't seek and find a
  // singleton), we need to construct one if we are supposed to target a new
  // tab.
  if (!contents_to_navigate_or_insert) {
    DCHECK(!params->url.is_empty());
    if (params->disposition != WindowOpenDisposition::CURRENT_TAB) {
      // [...]
    } else {
      // ... otherwise if we're loading in the current tab, the target is
      // the same as the source.
      DCHECK(params->source_contents);
      contents_to_navigate_or_insert = params->source_contents;   // <--- [2] Set it as the target WebContents
    }

    // Try to handle non-navigational URLs that popup dialogs and such, these
    // should not actually navigate.
    if (!HandleNonNavigationAboutURL(
            params->url, contents_to_navigate_or_insert->GetBrowserContext())) {
      // Perform the actual navigation, tracking whether it came from the
      // renderer.
      NavigationController::LoadURLParams load_url_params =
          LoadURLParamsFromNavigateParams(contents_to_navigate_or_insert,
                                          params);
      navigation_handle =
          contents_to_navigate_or_insert->GetController().LoadURLWithParams(
              load_url_params);     // <--- [3] Start navigation; dispatch Mojo downstream
    }
  // [...]
}

Though the code path requires params.disposition to be CURRENT_TAB and params.source_contents to be NULL, luckily, those are the defaults, so even Chromium’s own example code gets this wrong. I guess this should count as a new UXSS attack surface!

The 0-Click Challenges

The UXSS primitive we just got sounds great, but firing that still comes with quite a few challenges in practice. Here we list four we faced while weaponizing the UXSS, and how we cracked them with more and more bugs 😉.

1. The Throttle Must Be Fired from a Trusted Origin

The first challenge, as we mentioned earlier: this UXSS has to be fired from certain Microsoft sites. Though we could still find an XSS there to make that happen, that sounds like a painful job, so we’d keep it as a last resort. Instead, we decided to see if there was any low-hanging fruit in the origin check first.

content::WebContents* web_contents = navigation_handle()->GetWebContents();
const GURL last_committed_url = web_contents->GetLastCommittedURL();

if ( !IsSupportedLoginUrl(last_committed_url) )
    return content::NavigationThrottle::CANCEL_AND_IGNORE;

We found that EdgeCAGuidanceNavigationThrottle uses GetLastCommittedURL() to retrieve the origin that fired the navigation, and then check it. At first glance, this looks like the correct way to do the validation. But take a second look, and you’ll notice Microsoft seems to have forgotten that a navigation can come not just from the current WebContents, but also from another window… So a simple window.open(...) is enough to bypass it!

↓ You can run this on any website to fire the throttle

popup = window.open('https://login.live.com/', '_blank')
popup.location = `https://guidance-ca-error/?email={email}&switch_profile={url}` 

2. The Popup Blocker

So far, we can bypass the origin check with a cross-window navigation. However, modern browsers don’t let webpages open new windows that easily nowadays, so here comes another new problem: the Popup Blocker would block window.open(...) by default.

popup-blocker

To crack this, we kept reversing Microsoft Edge. And we found Microsoft, maybe for internal use, made its own hardcoded whitelist for popups… So a popup like the following would normally be blocked as expected:

popup = window.open('https://malicious.tld', '_blank')      // blocked

But if you swap the URL for the whitelisted one… the window just appears. And then remember to navigate it back to the original site, and you’ve bypassed the Popup Blocker!

popup = window.open('about:blank#quickAuthPopup', '_blank') // granted
popup.location = 'https://malicious.tld'

Thank you, Microsoft!

thanks-microsoft

3. The Need for a Signed-In Profile

Now that we can fire EdgeCAGuidanceNavigationThrottle from wherever we want, the next step is to get past the Conditional Access checks. The code first requires Microsoft Edge to already have a signed-in User Profile, and then checks if ?email={email} matches the profile’s email. Both conditions have to be met before we reach the sourceless, browser-initiated navigation to finally trigger our UXSS primitive.

Profile* current_profile = Profile::FromBrowserContext(
    web_contents->GetBrowserContext());

std::string email;
net::GetValueForKeyInQuery(target_url, kEmailQueryKey, &email);

const base::FilePath target_profile_path = GetPathOfProfileWithEmail(email);
if (current_profile->GetPath() != target_profile_path) {
    profiles::SwitchToProfile(target_profile_path, false, BindOnce(…));
}

However, since we can’t assume the target environment has a signed-in profile in advance, we still need to find a way to make the attack work even if it doesn’t. While exploring Microsoft Edge, we came across a great feature called “OneAuth”. The feature lets any Edge WebView application automatically sign in with your current MSA credentials when visiting Microsoft-owned sites. And it turns out that starting with 25H2, Windows OOBE requires you to sign in with an MSA (unless you use the local-account workaround). So even if you’ve never created a User Profile in the browser, just visiting www.microsoft.com is enough for Edge to create one and sign you in automatically.

Thanks again, Microsoft!

4. The Need for Prior Knowledge of the Login Email

With the sign-in issue cracked, the last challenge is to get the victim’s email in advance. Of course, we could try some social engineering, or keep reversing Microsoft Edge to find another bug that leaks that for us. But since the automatic sign-in already sets several Microsoft cookies, we thought Web Hacking would be an easier way to steal the email. So we fired up Burp Suite and started looking for web vulnerabilities.

We spent a few hours and found several XSS bugs on Microsoft sites. While poking around, I noticed that assets.msn.com, which is embedded in edge://new-tab-page-online, returns the currently signed-in user’s email. And even more interesting, when I checked the response header, the site seemed to have a CORS misconfiguration…

cors-misconfig

So with a simple fetch(...) with credentials included, you can easily grab any Microsoft Edge user’s email from any website:

resp = await fetch(`https://assets.msn.com/service/community/users/me?profile=social&it=edgeid`, {
    method: 'GET', 
    mode: 'cors',
    credentials: 'include',
    referrerPolicy: 'no-referrer',
    headers: {
        'Accept': 'application/json'
    }
})
body = await resp.json()
console.log( body.value[0].email )

Putting It All Together!

So far, to make this primitive work, we’ve chained together:

  • A Trusted Origin bypass caused by a missing cross-window Opener check
  • A Popup Blocker bypass caused by a hardcoded whitelist
  • A OneAuth feature that automatically signs you in
  • A CORS misconfiguration that lets us steal the signed-in user’s email

Now we can finally trigger the UXSS without a single click! And even better, since this UXSS is initiated from the Browser Process (HandleRendererDebugURL in Mojo, if you’re interested), it can ignore any CSP entirely. That means we can run JavaScript on google.com, facebook.com, icloud.com, or whatever website we want!

Breaking Out of the Browser Sandbox

So we have a Universal XSS. Does it mean that we can do whatever we want? If we’re talking about Web Security, then yes. But our goal here is to get ACE (Arbitrary Code Execution), so UXSS alone is far from enough. And we still need to find a way to break out of the Browser Sandbox to turn this UXSS into code execution.

The first and most straightforward idea that came to my mind was: since we can run JavaScript on any website, or more precisely, any origin, why not just leverage privileged WebUI pages like edge://settings or edge://downloads to get ACE?

This naive approach was of course already mitigated by the Chromium developers. In the Renderer’s Mojo handler, there’s an extra check: if the origin belongs to one of the following privileged WebUIs, the Renderer simply ignores the JavaScript URL.

edge://
chrome-extension://
chrome://
chrome-untrusted://
chrome-distiller://
chrome-error://
chrome-native://
chrome-search://
devtools://

// more...

↓ Path: chromium/third_party/blink/renderer/core/frame/local_frame.cc

void LocalFrame::LoadJavaScriptURL(const KURL& url) {
  // Protect privileged pages against bookmarklets and other JavaScript
  // manipulations.
  if (SchemeRegistry::ShouldTreatURLSchemeAsNotAllowingJavascriptURLs(
          GetSecurityContext()
              ->GetSecurityOrigin()
              ->GetOriginOrPrecursorOriginIfOpaque()
              ->Protocol())) {
    return;
  }
  // [...]
}

↓ Path: chromium/third_party/blink/renderer/platform/weborigin/scheme_registry.cc

bool SchemeRegistry::ShouldTreatURLSchemeAsNotAllowingJavascriptURLs(
    const String& scheme) {
  DCHECK_EQ(scheme, scheme.LowerASCII());
  if (scheme.empty())
    return false;
  return GetURLSchemesRegistry().not_allowing_javascript_urls_schemes.Contains(
      scheme);
}

Basically, Chromium has put every privileged WebUI you can think of on the not_allowing_javascript_urls_schemes blacklist. So at that point, I still got stuck for a long while. 😖

Arbitrary File Write via Immersive Reader

However, as we continued exploring Microsoft Edge, we found that Edge had its own Reading Mode called Immersive Reader. And unlike Chrome’s built-in Reading Mode, Immersive Reader seems to have been forked from Chromium early on, with Microsoft building on top of it. So instead of the old chrome-distiller:// or the blacklisted chrome-untrusted://, Edge uses a custom read:// scheme. And Microsoft seems to have forgotten to add this scheme to the blacklist as well, so our UXSS works on this privileged WebUI :)

Starting from this privileged WebUI, we can access lots of native C++ objects through JavaScript. And one of them called chrome.edgeFeedbackPrivate.zipDiagnosticLogFiles() looked particularly interesting to me. We tried it out, and found that the function takes two parameters, a filename and a JSON string:

↓ We ran this on read://https_orange.tw/?url=https://orange.tw

chrome.edgeFeedbackPrivate.zipDiagnosticLogFiles(
    'LOL.ZIP', 
    '{
        "logFiles": {
            "ORANGE": "AAAAAAAA"
        }, 
        "deviceInfo": {1337: 1337}
    }'
)

While playing with it, we observed that Microsoft Edge would first create a temporary folder and write AAAAAAAA to the file ORANGE.json. It would then pack the whole folder into LOL.ZIP, upload it to a Microsoft server, and clean everything up afterward. Of course, you’d want to try ../… Yes, it does let you escape the temporary folder. But that .json extension is still a bit annoying. Maybe you’re also wondering if a NULL Byte could get rid of it… Of course it can! So now we have an arbitrary file write that can control both the filename and the content, and we can overwrite any file anywhere we want!

Thank you again and again, Microsoft!

a_slide1_smooth

Overwriting protocols.json to Auto-Launch Protocol Handlers

Now, we’ve got almost all the pieces. The last step is figuring out how to turn a browser-level arbitrary file write into ACE to complete the chain. We observed that Microsoft Edge would do some interesting side-loading while initializing, such as reading a bunch of config files or loading DLLs from a writable folder.

So the DLL side-loading sounds juicy. However, since our file write is wrapped in JSON, the content has to be a valid UTF-8 string. And because Microsoft Edge is a 64-bit process, we’d have to drop a 64-bit DLL, too. After spending some time working on this, we found that we couldn’t construct a valid 64-bit PE header that met the UTF-8 requirement in any case, so we gave up on DLL side-loading.

We ended up solving this in a less obvious way. We found that besides OneAuth, Edge also loads a bunch of components while initializing, and one of them is “AutoLaunchProtocolsComponent”. The component would read a configuration file called protocols.json from a folder we can write to, and that file defines which origins are allowed to launch which URL protocol handlers. So by overwriting the file, we can launch any protocol handler from any origin.

↓ Path: AppData\Local\Microsoft\Edge\User Data\AutoLaunchProtocolsComponent\1.0.0.10\protocols.json

{
  "allow": [
    {
      "origins": [
        "https://.get.microsoft.com",
        "https://.apps.microsoft.com"
      ],
      "protocol": "ms-windows-store"
    },
    {
      "origins": [
        "https://.onedrive.com",
        "https://.onedrive.live.com",
        "https://sharepoint.com"
      ],
      "protocol": "ms-word"
    },
    // [...]
  ],
  "warn": [
    // [...]
  ],
  "block": [
    // [...]
  ]
}

As for how do we get Microsoft Edge to re-initialize? Just use our earlier browser-initiated navigation to jump to edge://restart! :)

From telnet:// to Code Execution!

Here we chose telnet:// to get code execution. On Windows, the telnet handler would try to invoke telnet.exe, but the binary isn’t shipped by default, so Windows goes looking for it in the directories listed in the PATH environment variable. And one of those directories just happens to be writable by us…

C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0
C:\WINDOWS\System32\OpenSSH
C:\Users\lowpriv\AppData\Local\Microsoft\WindowsApps    # <--- it's writable for `lowpriv`...

So by simply dropping a modified protocols.json and a 32-bit tiny PE, we got ACE. The whole exploit is less than 100 lines of code. The restart isn’t really necessary in a real attack, only for Pwn2Own. Let’s check out the demo! 🔥

Final Thoughts

From zero experience with modern browser exploitation to completing the full chain, the whole research took me two full months, with no LLMs/AI involved at all. But why, you might ask? Perhaps because it sounds cool, or maybe it was also just good timing — I only started using coding agents like Codex and Claude Code around March this year, and by then, I’d already found all the bugs and done the hard part ¯\_(ツ)_/¯

So what’s the hard part? For memory corruption, it’s often the exploitation. But we’re playing with logic bugs, where the hard part is finding them, and once you find them all, chaining is the easiest part. So that’s also why I kept the whole exploit AI-free.

Apart from that, I also see the UXSS primitive as a new attack surface, and agree that in the AI era, “Attack Surface is the new 0day“. I wanted to explore this gold mine more before sharing it with the AI giants. That’s another reason why I decided not to use AI on this chain.

Of course, I’m not some old-fashioned guy who refuses to try new things, either. Outside of this chain, I’m also tokenmaxxing and addicted to AI. I believe once you’ve tasted how convenient LLMs are, no one would want to go back to hunting bugs by hand. That’s also the future, I think.

I’m also not that afraid of being replaced by AI. I’d rather say it’s precisely because of AI, I finally have enough time to finish all the cool stuff that’s been sitting on my TODO list… like the Windows RCE I just reported, flipping the chain to pop Microsoft Edge from calc.exe, or porting this logic-only full chain to Google Chrome (almost there ><). I’ll also show some progress at CODE BLUE in Japan next month. Stay tuned! 😉

So instead of worrying about how low the bar for vuln research can go, why not get excited about how high AI can take us? What fun can we have, what even cooler hacks can we build, and what impossible things can we make happen…?

Never Stop Exploiting!

The Daily Front Page 15 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — A World Model in Your Pocket
repository

A tiny world model running games on a Raspberry Pi Pico 2 W

by airinei·▲ 180 points·10 comments·github.com ↗
★ 164⑂ 5 forks Rust

Tiny world model generates games and stream ac plays them all on Pico 2W

tinyworldformer: games created by a tiny looped transformer on a Raspberry Pi Pico 2 W

Using 2 small neural networks to generate and play the game at the same time on a Raspberry Pi Pico 2 W. The first one creates the game: given the current frame and the action, it predicts the next frame and the reward. The second one plays that game: it uses the generated frame and picks an action.

Every frame above was sampled by the world model network, and the actions were taken by the actor network.

Why

I got interested in looped transformers, where one transformer block is applied several times with the same weights instead of stacking different layers. Reusing weights is cheap on memory, so I wanted to see if a looped world model could be small enough to run on a microcontroller. I picked the Pico 2 W because it is cheap and has an FPU, and small games because I could write the real versions directly into numpy and check every generated frame against them. Later I added a streaming RL agent so the board could also learn to play inside its own dream.

The world model and the actor

the world model and the actor

network 1: the world model network 2: the actor
job frame + action → next frame + reward frame → action
architecture looped transformer, q int8 MLP with two hidden layers, float32
size 26k–131k parameters 9k–16k parameters
cost per frame 2–8M multiply-adds 9k–16k multiply-adds
trained on recorded real games (how) with stream-x, in the real game or inside the dream (how)

The size depends on the game, some games require more parameters to learn them to be playable, we tried to get to keep the number of the parameters small enough.

On the chip neither network ever uses the real game: the actor only sees frames the world model, and the world model only gets actions from the actor. Both run on core 1 of the RP2350, while core 0 handles USB and the display.

The pretrained actor can be swapped for a fresh stream-x agent that learns from scratch on the board. And any button press hands control to you, so you can play the dream yourself.

The games

Each game is a few hundred lines of numpy in src/tinyworldformer/games/. It renders to a small grid of token ids, and one frame always holds the whole game state, so hidden state has to be drawn into the frame: the ball's heading is part of its token, and Doom-lite has a minimap.

game frame rules random event world model
Breakout 20×16 paddle, ball, 56 bricks, 5 lives the serve after a miss 26k params, 4.3M MACs
Doom-lite 32×32 raycast first-person view of an 8×8 maze; an enemy walks shortest paths to you; you shoot the enemy's respawn 55k params, 4.2M MACs
Flappy Bird 24×24 gravity, flaps, scrolling pipes the next gap height 46k params, 2.0M MACs
Pong 20×32 you against a CPU paddle that reacts late, first to 5 the serve after a point 46k params, 2.3M MACs
Pac-Man lite 48×48 23×21 maze, 249 pellets, two ghosts on shortest paths, 3 lives the ghosts' respawn 131k params, 8.2M MACs
game exact frames
Breakout 99.99%
Doom-lite 83.6% (see below)
Flappy Bird 100%
Pong 99.45%
Pac-Man lite 86.4%

"Exact frames" is the share of held-out transitions where every cell of the predicted frame matches the real game. Frames right after a random event are left out, since those can only be sampled, not predicted. Doom-lite's 3D view has 768 cells and a single shaded wall pixel off counts the whole frame as wrong, so its number looks worse than it plays; the game state is almost always right (see checking the dream).

You can play the real games in a terminal: uv run python -m tinyworldformer.games.play --game pacman (or breakout, doomlite, flappy, pong).

How the world model works

Frames split into tokens

patches

The frame is cut into square patches: 2×2 cells in Breakout, 4×4 in Doom-lite, Flappy Bird and Pong, 6×6 in Pac-Man. That gives 36 to 80 tokens per game. A patch's embedding is the sum of one learned vector per cell, with a separate table for each position inside the patch so the cell order isn't lost. Every token also gets a position vector and the action's vector.

Looped Transformer

loop

The model is a single transformer block (attention plus a ReLU MLP) with one set of weights, applied 1 to 4 times, with the input added back before every pass. The output after every pass is trained against the next frame, so at run time the loop count trades speed for accuracy. On the Pico to keep a decent frame rate we use uses two loops.

The animation shows one held-out Doom-lite step. After one pass the model draws an enemy that isn't there, and each further pass removes part of it: 92, 35, 12, then 0 wrong cells. The bars on the right are the share of held-out frames each loop count gets exactly right.

Here is a dreamed Doom-lite step decoded after 1, 2, 3 and 4 loops, with red boxes on cells that differ from the real rules:

loops

Exact held-out frames by loop count:

loops Breakout Doom-lite Flappy Bird Pong Pac-Man
1 99.68% 59.8% 99.99% 98.47% 79.6%
2 99.99% 83.6% 100% 99.45% 86.4%
3 100% 85.9% 100% 99.60% 85.7%
4 99.96% 84.7% 100% 99.53% 84.4%

Decoding

decode

The model outputs a score for every cell and every token. Turning those scores into a frame turned out to matter almost as much as the model, and it ended up as three rules (shown above on Pong):

  1. Background cells (walls, bricks, pellets, floor) each take their most likely token independently.
  2. Singletons (the ball, the player, each ghost) are placed with one choice over all (cell, token) pairs, so there is always exactly one of each. After a random event the choice is sampled among candidates within 2.2 logits of the best, so the world model samples a new serve or respawn instead of averaging them.
  3. Pac-Man and the ghosts are 2×2 sprites, but only one cell of each carries state (the mouth holds the heading; the ghost's lower-left cell holds whether a pellet is underneath). The other three cells are stamped from it instead of predicted.

We implemented Rule 2 because the first Breakout model drew two balls at once; one global choice took exact frames from 91.6% to 99.7%.

Checking the world model

Accuracy on recorded data wasn't enough. An agent drives the dream into states the data never had, and any mistake there is something it can exploit. So the main check runs while an agent plays: read the game state back off the dreamed frame (games/<game>.py: read), apply the real rules to that state and the agent's action, and compare the result with the next dreamed frame and reward.

check

5,000 dreamed steps per game at 2 loops, with the shipped agent (training/evalwm.py --agent):

game wrong game states wrong rewards wrong cells per step
Breakout not read back; 0 frames with impossible tokens 6 (paid without a brick breaking) –
Doom-lite 1 0 1.50
Flappy Bird 0 0 0.00
Pong 1 0 0.00
Pac-Man 742 38 0.39

Training

First, agents play the real game and every step is recorded as one example (frame, action, next frame, reward), 1–3 million per game. Some episodes start from unusual states, like bricks with holes or random positions, so the data covers more of the game.

data

Then the world model learns to predict the next frame with a per-cell cross-entropy loss: 30k steps, with the first 3–4k steps run in float, then int8 rounding switches on (QAT).

training

The int8 weights are written into Rust source with every float stored as its exact bits. We check them with cargo test to reproduces the Python integer spec bit for bit, and then the firmware runs on the Pico.

deploy

An agent trained in the world model reaches states the recorded data never had, so record real games with that agent and fine-tune the world model on everything.

The agent in different games stated exploiting them so those are some fixes to it:

  • Weighting the loss by "this cell changed" biased the model toward predicting change, so it drew two balls and broke two bricks. Weighting by where things can happen in the input frame, plus the global singleton choice, fixed it.
  • A Breakout agent in the dream got 154 points with 26 bricks left, because the world model didn't remove bricks from the corner when it were hit. Doom-lite agents learned to snipe from 5 cells away.
  • Agents trained only in the dream scored 210 there (the real maximum is 56) and 28 in the real game, as World Models (Ha & Schmidhuber) predicts. Each collect-and-fine-tune round closed the exploit that agent had found.
  • The Doom-lite dream sometimes lost the enemy sprite and never drew it again: the model copied the previous view instead of redrawing it from the minimap. Noise augmentation fixed it (train --noise 0.3, as in GameNGen): input views get random pixels and sometimes lose the sprite.
  • d=32 couldn't absorb the wider Breakout data and d=48 could. Pac-Man's 48×48 frame needed d=64.

The agents: stream-x

stream-x

The agents use Stream AC(λ) (Elsayed, Vasan & Mahmood, 2024), which learns from one transition at a time: no replay buffer, no batches, no target network. Eligibility traces carry credit back in time, and ObGD shrinks any step that would overshoot the TD target. The policy and value networks each have two hidden layers of 64 units (32 on the Pico) with LayerNorm.

The input is a feature vector read off the frame (training/streamx.py: observe_*, mirrored in Rust in tinyworldformer-rs/src/agent.rs). For example, the ball's row, column and heading in Breakout, or in Pac-Man, for each direction, the shortest-path distance to the nearest pellet and how close each ghost is.

Below is one training run per game (real game, 500k steps) at six stages: untrained, the end, and the snapshots where the score has covered 25, 50, 75 and 95% of the way. Each panel plays greedily from the same start and skips a few steps per frame. "try" counts the episodes played so far, so you can see the crashes.

Breakout

Doom-lite

Flappy Bird

Pac-Man lite

Pong

Greedy return in the real game, mean of 10 episodes, at snapshots of the same run:

game 0 1k 2k 5k 10k 20k 50k 100k 150k 250k 500k max
Breakout 8.2 17.0 15.9 21.9 29.9 29.9 29.9 31.1 35.0 39.9 45.6 56
Doom-lite −5.0 −5.0 −5.0 −5.0 −5.0 59.5 69.9 78.1 81.8 82.1 82.9 –
Flappy Bird −1.0 −1.0 −1.0 1.9 24.6 24.9 96.2 123.7 309.2 332 332 332
Pac-Man 7.0 3.8 17.0 17.7 8.2 46.8 72.9 138.9 146.6 190.3 217.4 249
Pong −4.3 −3.9 −3.9 −3.9 −1.7 −2.0 −0.3 1.1 1.7 1.1 1.1 5

Without shaping, Doom-lite agents camp in the start corner and fire, because the enemy always comes to them. --idle-penalty 0.1 costs 0.1 for each step spent in a cell visited more than 6 times in the last 20 steps. The position is read off the minimap, so the penalty works inside the dream too. With it the agent patrols and gets twice the kills.

tinyworldformer-rs/src/learner.rs is the same algorithm in no_std Rust, with the backward pass written by hand. It matches 200 PyTorch updates to within 3.5e-6. On the host, a fresh agent inside the Rust int8 Flappy Bird dream averages 6 pipes per episode after 25k steps, 121 after 100k, and 300+ after 250k.

Quantization and the Pico

quantization

Every matrix in the world model is int8 with one scale per output row (scale = max|w| / 127). Activations are int8 too, with one scale per tensor and per loop index, since the loops see different ranges. Matmuls sum int8 × int8 into int32 (two multiply-adds per SMLAD instruction on the RP2350) and then apply one float multiply by the two scales. Softmax uses a 1024-entry exp table, with probabilities stored as uint8. Norms, residuals and embeddings stay in float32, since the RP2350 has an FPU.

Training applies the same rounding (QAT with a straight-through estimator), so the int8 model is the model that was trained. rustexport/intref.py is the int8 model in numpy with every float operation in a fixed order; the Rust engine reproduces it bit for bit, and cargo test checks golden vectors for every exported env.

sizes

game int8 weights float32 (embeddings, norms, scales) game data agent (float32) firmware flash firmware RAM
Breakout 19.7 KB 31.6 KB 1.1 KB 54.1 KB 361 KB 299 KB
Doom-lite 33.9 KB 91.9 KB 12.0 KB 61.3 KB 471 KB 357 KB
Flappy Bird 30.1 KB 69.5 KB 10.1 KB 50.8 KB 409 KB 227 KB
Pong 30.1 KB 70.4 KB 10.9 KB 52.6 KB 414 KB 244 KB

Flash and RAM are measured from the firmware ELF (size -A), built with the Display Pack driver, so they include the code, USB, the display driver and the on-device learner. The Pico 2 W has 4 MB of flash and 520 KB of SRAM, 512 KiB of it in the main memory map. The float32 embedding tables are the largest part and could be int8 too.

src/tinyworldformer/rustexport/ imports only numpy and torch (a test keeps it that way), so other projects can reuse the export: build a model from rustexport.qat (QLinear, LoopedBlock), train it with ActQuant.enabled = True after a float warm-up, convert it with rustexport.convert.looped_model, then write the Rust source with int_model_arrays, mlp_arrays and codegen.write_module. rustexport.Golden writes the vectors a Rust test checks.

On the chip

The firmware (tinyworldformer-rs/firmware) is no_std Rust on embassy. Nothing is allocated at run time: the weights are static arrays in flash, and every buffer is a fixed-size static in RAM.

Core 1 runs the game. One pass of its loop (dream_loop in firmware/src/main.rs) is one frame:

  1. The actor reads features off the current frame (agent::observe) and runs its MLP to pick a button. If on-device learning is on, the learning agent picks instead; if you are pressing buttons, your press is used.
  2. The int8 transformer runs 2 loops over the frame and the button (Engine::forward), and decoding turns its scores into the next frame: background argmax per cell, each singleton placed once (sampled for random events with an xorshift RNG), then the sprite stamps. The reward is the argmax of the reward head; lives and episode ends are counters on top.
  3. If learning is on, the learner updates from this one transition and then forgets it.
  4. The frame goes to core 0 through a two-slot channel. If core 0 is still busy with the previous frame, this one is dropped, so core 1 never waits for the screen.

When you play, core 1 slows down to a playable speed (66–150 ms per frame, depending on the game). The agent runs as fast as the chip allows.

Core 0 runs embassy async tasks for everything else. Over USB serial, each frame goes out as coloured ANSI text with a status line (model time, actor time, fps, env and agent names), and keys come back in. The optional Display Pack (--features display) is a 320×240 ST7789 over SPI at up to 62.5 MHz, and only cells that changed since the last frame are redrawn. Its buttons are polled every 20 ms. The two cores share only the frame channel and a few atomics: who is playing, the pressed key, learning on/off, and the loop count.

Where the memory goes:

in flash in RAM
world model int8 matrices, float32 embeddings, norms and scales, the game's opening frames and colours (52–138 KB) scratch buffers for one forward pass: activations for 36–80 tokens, the int8 copies the matmuls read, and the per-cell scores of the next frame (114 KB for Flappy Bird up to 368 KB for Pac-Man, whose per-cell scores alone take 184 KB)
actor float32 MLP weights and feature normalization (51–61 KB) its features and hidden layers (about 1 KB)
on-device learner code only weights, eligibility traces and normalization for two 32-unit networks (49 KB for Pac-Man up to 106 KB for Doom-lite; it scales with the number of input features)
firmware code, USB, display driver (about 150 KB) stacks (16 KB for core 1), USB buffers, frame channels

Every game fits in the 4 MB of flash and 512 KiB of SRAM. Breakout uses 361 KB of flash and 299 KB of SRAM; Pac-Man, the largest, uses 600 KB and 460 KB.

Most of the time goes into int8 dot products (dot_i8 in src/lib.rs). One 32-bit load fetches 4 weights, SXTB16 unpacks bytes 0/2 and 1/3 into 16-bit halves, and SMLAD does two multiply-adds in one instruction. Attention multiplies uint8 probabilities by int8 values, so it uses UXTB16 instead. Norms, the exp table lookup and the final per-output scale stay in float32 on the FPU. A frame at 2 loops is 2–4M multiply-adds (8.2M for Pac-Man); on a desktop CPU the same Rust code dreams a frame in 0.7 ms (Flappy Bird) to 1.5 ms (Breakout). I haven't measured the frame rate on the Pico itself yet.

The board boots with a fresh agent learning on the device. Press l over USB, or hold B for 1 s on the Display Pack, to switch to the pretrained actor, and again to switch back.

Flashing a game and an agent

Every export sits side by side in the crate: world models in tinyworldformer-rs/models/envs/<env>/, agents in models/agents/<game>/<agent>/. You pick both at build time.

cd tinyworldformer-rs
./flash.sh --list                                            # what is exported
./flash.sh --env doomlite --agent doom_agent_roam_p0.3       # build and flash (hold BOOTSEL while plugging in)
./flash.sh --env breakout --display                          # with the Display Pack
./flash.sh --env pong --host                                 # play it in this terminal
./flash.sh --env flappy --default                            # make it the default for plain cargo
TWF_ENV=doomlite TWF_AGENT=doom_agent_roam_p0.1 cargo test --release   # golden tests for that pair

Without --agent, the agent for the env's game listed in models/default is used if there is one, otherwise the first by name. An agent for a different game is refused with a list of the valid ones. The status line on screen shows which env and agent are running.

Keys over USB: Breakout a/d/s, Doom-lite w/a/d/space/s, Flappy space, Pac-Man w/a/s/d, Pong w/s. Then g hands back to the agent, 1–4 set the loop count, l toggles on-device learning and r restarts it.

In the browser

The same no_std int8 engine also compiles to WebAssembly (tinyworldformer-rs/web/). The module has no imports and no wasm-bindgen, and it runs the firmware's loop: dream, agent, and stream-x learning on the fly. A static page draws the frames on a canvas.

rustup target add wasm32-unknown-unknown    # once
cd tinyworldformer-rs/web
./build.sh                                   # one module per env into www/ (or ./build.sh pong flappy)
python3 -m http.server -d www                # open http://localhost:8000, ?env=pacman picks a game

With the same seed, the wasm build dreams the same episodes as the native build, frame for frame, at 1–5 ms per frame depending on the game. Each module carries its game's default agent; TWF_AGENT=... ./build.sh <env> picks another. The keys are the same as on the Pico, plus arrow keys and on-screen buttons, and f runs the dream as fast as it can, which helps while learning (l).

Reproduce

uv sync
G=pong   # breakout, doomlite, flappy, pacman, pong
uv run python -m tinyworldformer.training.data --game $G --transitions 2000000 --varied 0.3   # -> data/$G
uv run python -m tinyworldformer.training.train --data data/$G --d 48 --heads 3 --ff 96 --out models/${G}_wm.pt
uv run python -m tinyworldformer.training.streamx --env real --game $G --out models/${G}_agent.pt
uv run python -m tinyworldformer.training.evalwm --ckpt models/${G}_wm.pt --agent models/${G}_agent.pt   # check the dream
uv run python -m tinyworldformer.training.streamx --env dream --wm models/${G}_wm.pt --out models/${G}_dream_agent.pt
uv run python -m tinyworldformer.training.export --ckpt models/${G}_wm.pt
uv run python -m tinyworldformer.training.streamx --out models/${G}_agent.pt --export tinyworldformer-rs
cd tinyworldformer-rs && TWF_ENV=$G cargo test --release && TWF_ENV=$G cargo run --release

Settings that differ per game:

game settings
Breakout 1M transitions, --miss-penalty 5, then collect with the agent (data --learned <agent> --holes 0.5 --out data/breakout_learned) and fine-tune on all of it (train --init ... --data data/breakout data/breakout_learned --steps 15000 --warmup-float 0 --lr 1e-3), four rounds
Doom-lite --varied 0.5, train --noise 0.3, streamx --max-ep-steps 500 --idle-penalty 0.1
Flappy Bird streamx --max-ep-steps 3000
Pac-Man 1.2M transitions, --varied 0.4, train --d 64 --heads 4 --ff 128 --steps 40000 --warmup-float 4000, streamx --miss-penalty 5 --max-ep-steps 1500
Pong streamx --max-ep-steps 5000

Code layout

path contents
src/tinyworldformer/games/ the five games (rules, rendering, read), the Game registry, scripted agents, terminal play
src/tinyworldformer/training/ data, world model, training, dream checks, stream-x, export to the Rust crate
src/tinyworldformer/rustexport/ reusable PyTorch → no_std Rust export: QAT layers, the int8 spec, conversion, code generation
tinyworldformer-rs/ no_std int8 engine, dream loop, agent and learner; host demo (src/main.rs)
tinyworldformer-rs/firmware/ Pico 2 W firmware
tinyworldformer-rs/web/ WebAssembly build and the browser page (www/)
The Daily Front Page 16 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Spain’s Rail Tragedy
article

What we know so far about Spain train crash

by ZeljkoS·▲ 176 points·335 comments·bbc.com ↗
At least 69 people were killed and dozens injured in the collision.

Two trains crashed south of the Spanish capital Madrid on Wednesday morning, on the high-speed line to Seville.

At least 69 people were killed and dozens injured in the collision, when a state-operated Renfe high-speed train smashed into the back of a stationary train operated by the Iryo company near the town of Urda.

It is one of the worst rail disasters in Europe's modern history, and Spain's worst crash since 2013. Three days of national mourning have been declared in the country.

Here is what we know about the crash so far.

Where and when did the crash happen?

Aerial images showing the positions of two high-speed trains involved in a collision near Toledo, Spain. The image show an Iryo train which had been travelling from Madrid to Seville and the Renfe AVE 2080 train which had been travelling in same direction behind it, with arrows indicating direction of travel right to left. An inset photo shows several derailed and overturned carriages from the Iryo train. Another label points to part of the Renfe train on the opposite side

The crash happened at 08:53 (07:53 GMT) between municipalities Mora and Orgaz, and about 140km (100 miles) south of Madrid, according to an account given by the Spanish government.

The privately run Iryo train was stationary on the state-run Renfe train barrelled into the back of it at high speed. Iryo said its train was "struck from behind" by a Renfe train "due to causes that are still unknown".

The crash caused some carriages to fall down an embankment.

Map of central Spain showing Madrid and Toledo. A black dot and red label marks the "approximate location of train crash" near the town of Urda, south-east of Toledo. An inset map of Spain highlights the area in the centre of the country.

All train traffic on the line was stopped at stations along the route.

Renfe said services between Madrid, Ciudad Real and Andalusia were suspended.

A passenger on board one of the trains told local media there was a heavy impact about 40 minutes into the journey.

What caused the crash?

Spanish Transport Minister Óscar Puente said a computer failure at about 08:30 on Wednesday morning led to the initial halt of six moving trains, including the two trains that subsequently collided.

"In the event of a system failure, the control centre takes over," he said, adding it was the control centre that decided to allow the trains to move again, without any speed restrictions.

That decision, Puente said, was made "under inexplicable circumstances". It resulted in the Renfe train crashing into the Iryo train, which was stationary on the tracks about 25km (15 miles) ahead.

Wide shot showing a derailed train carriage in an embankment

Audio recordings obtained by Spanish media between train controllers working in Madrid for a rail infrastructure company in Adif in Madrid and the train drivers appear to show that one high-speed train was given clearance to move at 08:36 even though another one ahead had stalled.

In one recording, the controller tells the driver of the Renfe train to disconnect and reconnect the LZB mechanism that monitors train speeds, and then resume the journey at normal speed.

"Disconnect and reconnect LZB. Continue your journey and then proceed under [Lateral Signalling Block], at normal speed with normal operation," the control centre operator says to the driver.

The driver replies, "At normal speed?" To which the controller says: "Yes."

Under normal protocols, the driver would be expected to continue moving at a maximum of 40km/h according to their line of sight, and not at normal speed on a track designed for speeds of up to 200km/h.

The Lateral Signaling Block is a back-up or alternative train system used when the automatic signalling or data transmission system fails.

In a second audio recording between the driver of the Iryo train in front and the control centre, the driver says the train "is stationary in front of the entry signal at Urda". After some exchanges, the control centre operator tells the driver to "resume the journey" normally.

The Iryo driver then contacts the control centre again, according to a later recording, saying they cannot start the train. "The train won't allow me to control the [security] system. That's why I am still stopped in front of the entry signal," they say.

The latter recording suggests that the controller had been notified that the Iryo train remained stationary as the Renfe train approached.

How many passengers were on board?

Aerial shot showing the track where two trains have collided.

Aerial footage shows the extent of the damage and the emergency response

More than 540 people were on board both trains.

Esther Padilla, spokesperson for the government of Castilla-La Mancha region, told TVE that one of the trains - managed by the Iryo company - was carrying 146 passengers plus one baby, while the Renfe-managed train had 397 passengers on board.

Julieta Gallego, a 24-year-old Spanish female long jumper, and former government minister Fátima Báñez, 59, were among those killed in the crash.

More than 100 people were treated for injuries, according to Spanish authorities, and by the next day 50 of them were still in hospital, 15 in a critical condition.

Timeline infographic showing a train collision near Urda, Toledo. An Iryo 6076 train left Madrid Atocha at 07:54 with 147 passengers, followed by Renfe AVE 2080 at 08:00 with 397 passengers. At 08:33 A system failure stops the trains on the same track. The AVE train then gets the go ahead to proceed while the Iryo is still stationary. At 08:53, the AVE train strikes the rear of the stationary Iryo train. The diagram shows several Iryo carriages and part of the AVE train derailing, with some carriages falling down an embankment.

How have the authorities responded?

Spanish Prime Minister Pedro Sánchez has said "the whole of Spain is grieving" and that "lives have been shattered, families have been torn apart".

"The pain is immense," he said on a visit to the crash site.

The government was "trying to determine what was the origin of this tragedy, of this terrible accident," he added.

"We will get to the bottom of this, and if there has been any negligence, it will come to light.

"If there have been failures in the security system, they will be addressed with the utmost firmness."

Opposition conservative leader Alberto Núñez Feijóo, whose People's Party leads most opinion polls ahead of 29 November elections, said it was not the day to talk about political responsibility, but insisted "Spain has the right to know what is going on with its infrastructure".

Most Spanish politicians cancelled all public engagements on Wednesday and suspended their election campaign.

However, Santiago Abascal of the far-right Vox refused to take part in what his party described as attempts to "use mourning to silence criticism" of the country's rail infrastructure.

Cranes near the stricken trains with mountainous landscape in background

A huge emergency response is under way

Three days of official mourning began on Thursday.

Spain's royal family posted on X that it was "shocked and concerned" and expressed condolences for the relatives of the deceased and those affected by the crash.

A spokesperson for the EU said the bloc was ready to help Spain if needed.

A huge emergency response was under way with fire crews and helicopters at the scene.

Hospitals in the area suspended planned surgeries as they deal with an influx of patients from the crash, Spanish media have reported.

A blood transfusion centre in Madrid appealed for "urgent" donations. In a post on X, Centro de Transfusión said it made the request "in the face of a possible sudden increase in care needs".

It reported that facilities in Toledo, Ciudad Real and Alcázar de San Juan had cancelled procedures as casualties from the crash begin to arrive.

The Spanish Civil Guard set up bureaus in Madrid, Toledo, Seville and Córdoba to investigate reports of missing persons.

"The top priority is the identification of the missing persons and the taking of DNA samples to be able to locate their relatives," the civil guard wrote in a post on X.

This is the second high-speed rail tragedy in Spain this year.

In January a high-speed train derailed in southern Spain, its rear carriages going into the path of a state-run Renfe train, claiming the lives of 46 people.

The Daily Front Page 17 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — A Medal for Word2Vec
article

Tomáš Mikolov awarded the Medal of Merit by the President of the Czech Republic

by armcat·▲ 164 points·17 comments·vut.cz ↗
Tomáš Mikolov, a renowned expert in artificial intelligence, and Filip Maleňák, creator of the Záchranka mobile app, received state honors for their outstanding contributions to science, research and technology.

Among the personalities honoured by the President of the Czech Republic on the occasion of the national holiday on 28 October this year are two graduates of Brno University of Technology. Tomáš Mikolov, a renowned expert in artificial intelligence, and Filip Maleňák, creator of the Záchranka mobile app, received state honors for their outstanding contributions to science, research and technology.

The President awarded state honors. | Author: Jan Handrejch, Novinky

The traditional state decoration ceremony took place on 28 October in the Vladislav Hall at Prague Castle. On this occasion, the President of the Czech Republic honoured individuals who have made significant contributions to the development of society, science, culture and other areas of public life. Among the recipients were two graduates of Brno University of Technology, whose professional careers demonstrate how technological innovations can push the boundaries of scientific knowledge, contribute to the development of society and find practical applications in everyday life.

Technology That Helps Save Lives

Entrepreneur and developer Filip Maleňák, a graduate of the Faculty of Electrical Engineering and Communication at BUT, is the creator of the Záchranka mobile app. His project demonstrates how combining information technology with the practical needs of emergency services can provide tangible assistance to people in crisis situations.

Filip Maleňák. | Author: Kateřina Šulová, ČTK

The Záchranka app enables users to quickly contact emergency medical services and share their precise location. It also helps in situations where a person is unable to speak and provides rescuers with important information that can facilitate and speed up emergency assistance. In addition, users can locate the nearest automated external defibrillator through the app.

Over time, the app has become an important tool for communication between the public and emergency services. Dozens of people use it to call for help every day, and in numerous cases, it has contributed to faster emergency response times or more effective first aid.

In recognition of his work, he was awarded the Medal of Merit by the President of the Czech Republic for his contributions to the state in the field of technology.

A Pioneer in Artificial Intelligence and Language Models

Scientist Tomáš Mikolov, a graduate of the Faculty of Information Technology at BUT, is an internationally recognised expert in artificial intelligence and machine learning. He is best known for his contributions to the development of natural language processing technologies and as one of the creators of the Word2Vec method, which makes it possible to represent words as mathematical vectors and thus capture relationships between their meanings. This approach has become one of the important foundations for the development of modern language models and technologies that underpin many of today's artificial intelligence tools.

Tomáš Mikolov. | Author: Blesk, foto: CNC/Karel Kopac

Alongside his scientific work, Mikolov is also involved in entrepreneurship. Through his company BottleCap AI, he focuses on developing more efficient language models. His scientific achievements have earned him several prestigious awards, including the Neuron Award.

In recognition of his work, he was awarded the Medal of Merit by the President of the Czech Republic for his contributions to the state in the field of science.

The recognition of Tomáš Mikolov and Filip Maleňák also highlights the importance of technical education and its connection to practical applications. Although the two graduates have pursued different career paths, they share the ability to transform expertise and innovative ideas into technologies with a real-world impact.

A complete list of all 51 recipients of state honors is available here.

The Daily Front Page 18 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Statistics That Would Not Die
article

Zombie stats: Where the numbers AI quotes come from

by mektrik·▲ 156 points·66 comments·trakkr.ai ↗
Fewer than half led to a study that says the same thing.

We asked five AI assistants for statistics and followed 1,285 of them back to where they came from. Fewer than half led to a study that says the same thing.

44%, drawn coming apart: a statistic with no study underneath it.

“44% of salespeople give up after just one follow-up attempt.”

All five assistants we asked said it. We couldn’t find a study behind it.

  1. Following one number
  2. Where the trails end
  3. What AI cites
  4. How numbers change
  5. The zombie stats
  6. What to do

Following one number back to its source

We asked ChatGPT, Perplexity, Gemini, Claude and Google’s AI Overviews 200 questions that call for a number, the kind people ask every day.[^1] A statistic is a share, rate, average, count or cost that an assistant states as fact. We left out advice (“save 20% of your income”) and prices. Then we clicked the citations, and kept clicking. Here is one trail, from the answer to the end.

What percentage of salespeople give up after one follow-up?

44% of salespeople give up after just one follow-up attempt.

A sales firm’s stats page, 2020:

44% of salespeople give up after one follow-up attempt (source).

A freelance writer’s sample article, by 2017:

80 Percent of Sales Require 5 Follow-up Calls after Meeting; 44 Percent Salespeople Give Up After One Follow-up

No study behind it

This page cites no research.

  1. In the answer

    Every assistant got the same question: “What percentage of salespeople give up after one follow-up?” All five assistants gave the same figure, and only ChatGPT said the evidence behind it was unclear.

  2. One click in

    Google AI Overviews cited a sales firm’s stats page, from 2020. The number is right there. Its “source” link goes to a writing sample.

  3. Two clicks in

    That leads to a freelance writer’s sample article, online by 2017. The number is in its headline. It lists two slide decks, a blog list and two news stories. None is a study of follow-ups.

  4. The end of the trail

    That’s where the trail ends. We tried every other route to this number we could find, and each one stopped at a page that cites no research. This is what we mean by a zombie stat: a number that keeps getting repeated with no study behind it.

Most numbers aren’t like this one. The trouble is that you can’t tell which ones are from the answer. This one came with the same confident tone and the same kind of citation as any other, and all five assistants agreed on it. So we followed 1,285 statistics the same way.

Fewer than half lead back to a study

We took a random sample of the statistics each assistant cited, 1,285 in all, and walked every trail the same way: the cited page, then that page’s source, up to five pages deep.[^2]

40% reached a study that says the same thing. Another 8% reached the study, but the number or its context had changed on the way. The rest never got there: 40% stopped at a source we couldn’t check, because it was locked, gone or silent on the number, and 11% led nowhere at all.[^3]

Four in ten trails reached a study that says the same thing

Each square is one in a hundred of the 1,285 statistics we traced, sorted by where its trail ended.

The last 1%: trails whose pages wouldn’t load for us.

Trakkr Research, five AI assistants asked 200 questions that call for a number, October 2026. A random sample of each assistant’s cited statistics, weighted by how many each quoted, and corrected with 150 trails checked by hand. Sourced: 40%, 95% range 34% to 46%.

ChatGPT did best, and quoted the fewest numbers: 1.3 per answer, against 6.8 for Claude. The other four landed between 38% and 46%, too close to rank.

ChatGPT quoted the fewest numbers, and sourced the most

The same hundred squares for each assistant, from its own sample of cited statistics.

  • ChatGPT: 57% sourced; 1.3 statistics per answer
  • Perplexity: 46% sourced; 2.2 statistics per answer
  • AI Overviews: 39% sourced; 4.8 statistics per answer
  • Gemini: 38% sourced; 6.2 statistics per answer
  • Claude: 38% sourced; 6.8 statistics per answer

Trakkr Research, five AI assistants asked 200 questions that call for a number, October 2026. Traced per assistant: ChatGPT 108, Perplexity 277, Google AI Overviews 300, Gemini 300, Claude 300. The four after ChatGPT sit inside each other’s ranges, so they aren’t ranked.

To check this wasn’t down to the questions we picked, we also traced 300 statistics from Google AI Overviews answers to real everyday searches. 40% were sourced, about the same share.[^4]

AI mostly cites pages that repeat the number

The AI mostly wasn’t making numbers up. The page it cited had the figure 82% of the time. But only 21% of the pages cited for a number were the original research.

More than half were company blogs. Add news stories and statistics roundups and you have most of the citations: pages that repeat figures from somewhere else, often without linking to it.

How often each kind of cited page led to the study

Every page an assistant cited first for a number, by kind. Each column’s width is its share of those citations. Green is how often its trails reached a study that says the same thing.

  • Research firm or survey: 13% of first citations; 62% sourced
  • Government or official body: 7% of first citations; 61% sourced
  • Company blog: 54% of first citations; 37% sourced
  • News or magazine: 10% of first citations; 37% sourced
  • Stats roundup: 8% of first citations; 35% sourced
  • Other: 8% of first citations; 41% sourced

Trakkr Research, five AI assistants asked 200 questions that call for a number, October 2026. 1,268 traced statistics with a readable first page. Page types judged from the page itself. Outcomes corrected with 150 trails checked by hand.

The first page made a big difference. When a trail started at a research firm or a government page, it reached a matching study 61% of the time. From a company blog, 37%; from a statistics roundup, 35%. Even research firms fell short 38% of the time, often because the full report sat behind a form.

A citation tells you where the AI found a number, not where the number came from.

Some numbers change along the way

Reaching the study didn’t always mean the number held. Of the statistics that got there, 17% had changed on the way. The digits moved only about one time in four. Usually it was the context: what was measured, the year, the source, or who was asked.

In one case, a 2004 study of 15 women judging health websites turned into a claim about first impressions of every website. Below are the clearest trails we followed, each checked by hand.[^5]

Watch a number lose its context

Each trail runs from the original study to an answer an assistant gave in October 2026. Step along it: the number stays, and the words around it change.

94% — First impressions of a website
53% — Mobile visitors and slow pages
68% — Online experiences and search
25% to 95% — Customer retention and profit
93% — Communication that is non-verbal

Asked: What percentage of first impressions of a website are design-related?

  1. 2004 — Sillence and colleagues, CHI
  2. 2018 — A company press release
  3. 2024 — A business magazine column
  4. 2026 — Google AI Overviews

The study · Sillence and colleagues, CHI, 2004

Of the comments 15 women made about rejecting or mistrusting health websites, 94% were about design.

Repeated

“Research shows us that 94 percent of people notice the look-and-feel of a website or application first”

What changed: Comments about rejecting health sites become what people notice first

Repeated

“Since 94% of first impressions are related to design, leveraging captivating visuals across your brand's website…”

What changed: Now 94% of all first impressions

The answer

“About 94% of a website's first impressions are design-related.”

What changed: Stated as fact for every website

A 2004 study watched 15 British women judge health websites, and 94% of their comments about rejecting a site were about design. Twenty years of retelling made it “94% of first impressions are design-related”, and Google AI Overviews states it as fact.

Every step checked by hand on the open web, with archived copies kept. We name the original studies; the pages that repeated them are described by type, not named.

The zombie stats

Ask five assistants the same question and you’ll often get five different numbers. On 28 of the 71 questions where all five gave a percentage, we got four or five different figures.[^6]

One question, five answers, from 49% to 96%

Asked “What percentage of marketers use marketing automation tools?”, word for word, on the same day.

  • AI Overviews: 49–51%
  • ChatGPT: 62%
  • Gemini: 70–79%
  • Perplexity: 81%
  • Claude: 96%

ChatGPT: There isn’t one universal figure, it varies by survey and what counts as “marketing automation.” One commonly cited survey found 62% of U.S. digital marketers used automation software, but that data is from 2020, so it may not reflect current adoption.

Perplexity: Approximately 81% of marketing organizations use marketing automation.

Gemini: Across major industry benchmarks, between 70% and 79% of marketers and companies use marketing automation tools in some capacity.

Claude: 96% of marketers have used a marketing automation platform or plan to use one.

AI Overviews: Roughly 49% to 51% of companies and marketing teams currently use marketing automation tools, according to industry benchmarks from Moosend and related research studies.

Trakkr Research, five AI assistants asked 200 questions that call for a number, October 2026. Answers collected on 25 October 2026. A range is drawn from its low to its high.

Across those questions, the typical gap between the highest figure and the lowest was 16 points.

When all five agreed, the number wasn’t any more likely to check out. They gave the same figure on 10 questions, and of the 5 we traced, 2 were sourced. The statistics quoted by three or more assistants did no better: 11 of 29 were sourced.

Four were quoted by all five assistants, and we couldn’t find a study behind any of them.

Numbers every assistant quoted, with no study we could find

Four statistics every assistant gave us, each with a trail that ends at a page citing no research.

  • 44% — Salespeople who give up after one follow-up

    Every trail ends at a page that cites no research, one of them a freelance writer’s sample article. Its full trail opens chapter 1.

  • 90% — Social media users who follow at least one brand

    Stated with no source. No study with this figure was found.

  • 75% — Searchers who never scroll past the first page of results

    Repeated with no source, often credited to an old marketing roundup that no longer carries it. No study was found.

  • 5 to 25 times — How much more it costs to win a customer than to keep one

    A 2014 Harvard Business Review article gives the range “depending on which study you believe”, and names none.

Some of these numbers are very old. “80% of sales need five or more follow-ups” is credited to a sales association. Its successor says the nearest thing in its archive is a 1942 survey of fewer than 40 members of one local chapter.

It often turns up next to the 44%. The writing sample from chapter 1 has both in the same headline.

The 29 statistics AI repeats most

Each was quoted by at least three of the five assistants, most often first, and its trail checked by hand.

  • 95% — Generative AI pilots that fail to deliver a measurable financial return

    MIT NANDA’s 2025 report says 95% of organizations got no return from generative AI. That isn’t the same as 95% of pilots failing.

    5 of 5. Changed. Study from 2025.

  • 44% — Salespeople who give up after one follow-up

    Every trail ends at a page that cites no research, one of them a freelance writer’s sample article. Its full trail opens chapter 1.

    5 of 5. Nowhere.

  • 4% to 10% — Unhappy customers who actually complain

    Goes back to TARP’s 1979 research for the White House consumer office. Its author says rates that low apply to small purchases; in 2016, 22% to 41% complained about their most serious problem.

    5 of 5. Changed. Study from 1979.

  • 2 hours 21 minutes — Time people spend on social media each day

    DataReportal’s Digital 2025 report, from GWI survey data: the typical internet user spends 2 hours 21 minutes a day on social media.

    5 of 5. Sourced. Study from 2025.

  • 46% — Google searches with local intent

    Traces to a 2018 social post about a slide at a search conference. Google never published it, as far as we could find.

    5 of 5. Can’t check.

  • 90% — Social media users who follow at least one brand

    Stated with no source. No study with this figure was found.

    5 of 5. Nowhere.

  • 94% — First impressions of a website that are about its design

    Began as a 2004 study of how 15 women judged health websites. Its full trail is in the section above.

    5 of 5. Changed. Study from 2004.

  • 75% — Searchers who never scroll past the first page of results

    Repeated with no source, often credited to an old marketing roundup that no longer carries it. No study was found.

    5 of 5. Nowhere.

Trakkr Research, five AI assistants asked 200 questions that call for a number, October 2026. Statistics grouped by figure and meaning. Original year shown where the trail reached the study.

What to do with a statistic from an AI

Treat it as a lead rather than a source. Here’s what we’d do, whether you use these numbers or publish them.

If you use them

  1. Follow the citation, then follow it again.

    If the cited page is a list of statistics or a company blog, use its own link to go one page further. Keep going until you reach the study itself, or until you can’t.

  2. Check who was asked, how many, and when.

    Most of the changes we found were in the context, not the digits: one country’s poll, a ten-year-old study, fifteen people.

  3. Don’t take agreement as a check.

    Five assistants giving the same number isn’t five sources. The numbers they repeated most were no better sourced than the rest.

If you publish them

  1. Put the method next to the number.

    The sample, the date and a link to the source, on the same page as the figure, so the next page, and the next answer, can trace it back to you.

  2. Keep the findings in the open.

    Reports behind a form were a common dead end: even trails that started at a research firm fell short 38% of the time. Put the headline numbers and the method on an open page.

  3. See which page AI cites for your numbers.

    It is often a roundup or a blog that copied you, sometimes with an older figure. That page decides what people hear.

How we did it

Everything you need to check our work, repeat it or cite it.

Questions: 200 — 160 everyday questions in 16 topics, plus 40 famous statistics

Answers: 1,000 — From ChatGPT, Perplexity, Gemini, Claude and Google AI Overviews

Statistics quoted: 3,167 — 2,419 with a citation, in answers to the everyday questions

Trails followed: 1,285 — A random sample of cited statistics, up to five pages deep; 180 checked by hand

We asked each assistant 200 questions that call for a number, word for word, through its company’s API with web search on and a US location: 160 everyday questions across 16 topics, and 40 famous statistics we suspected, reported separately. We pulled every statistic out of every answer, with the page it cited.

For a random sample of each assistant’s cited statistics (every one of ChatGPT’s, up to 300 from each of the others), we opened the cited page, found the figure, and followed the page’s own source, up to five pages deep. Where a page named a source without a link, we searched for it. An AI model judged each trail, and a stronger model re-judged 300 of them, agreeing on the outcome 82% of the time.

Then we checked 150 trails by hand, picked at random, with a third check wherever the hand check and the model disagreed. A trail we checked by hand counts as we found it; every other trail counts as the mix of outcomes we found by hand behind the model’s verdict. The ranges carry the uncertainty from both samples.

Rates for each assistant cover its own sample. The five-assistant rate weights each assistant by how many cited statistics it quoted, so it describes the statistics people were shown. Every statistic shown on its own on this page was checked by hand.

The machine judge alone found 23% of traced statistics sourced. Corrected with 150 hand checks, the share was 40%. People found originals the judge missed, so every rate on this page uses both.

Where it falls short

  • API answers

    We asked through each company’s API with web search on and a US location. The apps people use can answer differently.

  • One day

    Every question was asked once, on 25 October 2026. Answers change from day to day.

  • A machine judge

    An AI model judged every trail and was stricter than a person. We corrected it with 150 hand checks; on its own it found 23%.

  • Locked sources

    Some originals sit behind paywalls or sign-up forms. We count those as a source we couldn’t check, not as missing.

Notes

  1. A statistic is a share, rate, average, count or cost that an assistant states as fact. We left out advice (“save 20% of your income”) and prices.
  2. Each assistant’s sample was drawn at random from the statistics it cited: ChatGPT 108, Perplexity 277, Gemini 300, Claude 300, Google AI Overviews 300. The five-assistant rate weights each assistant by how many cited statistics it quoted, so it describes the statistics people were shown.
  3. An AI model judged every trail, and a stronger one re-judged 300. Then people re-checked 150 trails at random, with a third check wherever the two disagreed. People found originals the model missed: by the model alone, 23% were sourced. Every rate here is corrected with the hand checks, and its range carries the uncertainty from both.
  4. Google AI Overviews answers to 52,930 everyday English searches that Trakkr tracked between 25 September 2026 and 25 October 2026. 4.4% carried a statistic, and we traced 300 of those the same way. Only counts and rates leave our systems.
  5. We name the original studies. The pages that repeated them are described by type, not named. Every step in these trails was checked by hand on the open web, with archived copies kept.
  6. We compared each assistant’s headline figure for the same question. A range counts at its middle, and figures within 2 points count as the same.

The data

zombie-stats.json

Aggregates, our own questions and the hand-checked trails. No customer data, and no names of pages that repeat a statistic.

Questions

Do AI assistants make up statistics?

Rarely, in our sample. The page an assistant cited contained the figure 82% of the time. The bigger problem is upstream: the pages AI cites are mostly blogs and roundups repeating a number. Of the statistics we traced, four in ten reached a study that says the same thing.

Which AI assistant is most reliable with statistics?

In our sample, ChatGPT did best: 57% of the statistics it quoted reached a matching original, and it quoted the fewest. The other four were between 38% and 46%. Every assistant quoted numbers that led nowhere.

How can I check a statistic an AI gives me?

Open the source it cites. If that page is a list of statistics or a company blog, follow its link to the next page, and keep going until you reach the study itself. Check the year, who was asked and how many, then quote the study, not the page that repeated it.

What is a zombie statistic?

A number that keeps being repeated after its source has changed, aged or never existed. It survives because each page copies the last one, and AI assistants now repeat it to millions of people.

Can I use these numbers in my own work?

Yes, with attribution. Cite Trakkr Research Study 013 and link to this page. The aggregate data is a free JSON download.

The Daily Front Page 19 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Proton’s Reckoning
article

Manifestos, Fear, and 'Loser Thinking': Inside Proton's AI Reckoning

by Frieren·▲ 151 points·54 comments·404media.co ↗
Internally, he is pushing engineers to build Proton with AI, even when they have security concerns.

Proton CEO Andy Yen projects a calm persona and rails against Big Tech and critiques AI. Internally, he is pushing engineers to build Proton with AI, even when they have security concerns.

Manifestos, Fear, and ‘Loser Thinking’: Inside Proton’s AI Reckoning

Photo by Piaras Ó Mídheach/Web Summit via Sportsfile via Wikimedia Commons / Proton logo / Collage via 404 Media and Spumoni Cooperative.

Andy Yen, the CEO of Proton, had a message for an employee in the company’s security Slack channel who urged the company to at least take a few days to pentest newly written code before pushing it live. “That’s bullshit and loser thinking. Of course it’s possible to be fast and secure,” Yen wrote in the channel at the end of August. “Stop thinking always of how to be slower, and focus more on how to be faster.”

In a follow-up message, Yen reiterated his point: “only losers think like that.” His ultimate message for the team was to “stop lovingly handcrafting all our code and use AI more.”

That exchange was just one of many that showed how Yen and other company executives are aggressively pushing Proton towards AI. Proton is a Swiss company that famously makes the encrypted email service Proton Mail and a suite of privacy and security-focused products, including an encrypted drive service, an authenticator app, a password manager, and more.

In the last few months, Yen set up an email address for employees to contact if they come across anything blocking adoption of AI at Proton, so leadership can “ruthlessly smash everything that stands in the way of AI velocity;” Proton installed software on workers’ computers that track how much AI code the company is generating; and Yen said this is the last year that Proton will hire engineers at all, and instead only hire people to build things with AI.

That AI push came to head this week when 404 Media reported Proton said it would re-interview staff about their use of AI, with the clear implication that those interviews, and employees’ willingness to embrace AI, could decide whether a worker is fired or not.

404 Media spoke to eight current and one former Proton employees and reviewed Slack chats, meeting recordings, and an AI manifesto written by the company’s CTO. Our reporting reveals a culture of fear inside Proton, where many employees are hesitant to even mildly critique Yen’s views or discuss engineering problems. Workers describe an environment where employees have genuine concerns about security or being asked to develop security products with AI, but feel unable to voice them, lest Yen berates them in front of everyone or threatens their employment at the company.

“The CEO is in full AI psychosis and has been for a while now,” one of the sources told 404 Media.

Our reporting also paints a picture of Proton that is likely very different to the public’s perception of a company with a goal of carefully protecting privacy: one that in reality is barreling ahead with AI as quickly as possible so it can achieve the explicit goal of more annual revenue.

“Due to insufficient velocity,” Proton is not on track to achieve its annual recurring revenue target by the end of the year, one internal document obtained by 404 Media reads. Proton’s year-over-year growth is also “far away from what the market today considers to be good,” and, “By all metrics that matter, we’re an underperforming company.”

In response to detailed questions from 404 Media, a Proton spokesperson did not dispute any of our reporting or characterization of what’s happening inside of the company. 

“It’s clear that some people at Proton are unhappy with our direction, or misunderstand it, and many people are anxious,” they said. “In our determination to move fast, we have sometimes been too blunt or too slow in explaining ourselves to our people. We will work on that, as their questions are the ones we most need to answer.”

💡

Do you know anything else about Proton? I would love to hear from you. Using a non-work device, you can message me securely on Signal at joseph.404 or send me an email at joseph@404media.co.

Yen, a former CERN particle physicist, projects a measured approach in public, but internally he acts more like what one employee described as a “petulant child.” In May, Proton announced it was implementing post-quantum cryptography which should protect against future attacks from quantum computers. The work took years of effort, with one caveat that it would not work on older emails, only those written after the feature’s launch, at least for the moment. Yen was not happy that Proton was drawing attention to this limitation.

In a Slack channel dedicated to thanking people for their work, Yen jumped in. “Get it fixed,” he wrote, referring to Proton’s Reddit post announcing the feature. “Now Reddit is pissed and we look worse than Tuta,” he added, referring to a Proton competitor. When employees explained to Yen the nuances of the encryption and why that was not immediately possible, Yen wrote, “I find this whole thing stupid. You cannot announce this in this way.”

“Now we are left with two shitty choices. Deprioritize more important tasks for the business to re-encrypt old emails, or constantly get attacked online for not doing it. So maybe you can enlighten me on which of the two shitty choices we will take,” he wrote. “In the future there are two options. Either you guys are confident enough to not fuck this up, or you get my advice to make sure it is not fucked up,” he added. He then told a member of the team that made it to “go on Reddit.”

“So go on there with your personal account and comment to set the record straight,” he wrote. “Perception is more important than truth, the truth doesn’t matter if you don’t win on perception.”

One employee told 404 Media, “Whatever persona Andy [Yen] has out of Proton, he’s a straight up bully inside. He routinely breaks his little facade in Slack and calls people losers and stupid, often for stuff he’s paying them for.”

Ever since launching Proton Mail in 2014 after the Snowden revelations, Proton has steadily introduced new products that make Proton more of a worksuite than a simple email provider. More recently, those products were focused around AI, with the launch of Lumo, a large language model (LLM) chatbot that the company says doesn’t log conversations or train on user data. In June, Proton launched a 2.0 version of its chatbot.

Up until this point, Yen’s public comments on AI were relatively tame. In an August interview with WIRED, he said Proton is “building AI features and AI tools, because I think if the privacy companies do not find a way to step in to build privacy-first AI, we are essentially ceding the future to tech companies that don’t have the best interests of users at heart,” and that the company was “capitalizing” on the backlash to corporatized, invasive AI from companies like Google. Last year, Yen and Proton were criticized for statements he made suggesting the Republican Party and Donald Trump would be harder on Big Tech than Democrats. 

Toward the end of August, Yen’s internal tone on AI shifted to having Proton use it as much as possible, and as quickly as possible, according to the Slack chats and multiple employees.

“The train is coming, get onboard or get crushed. Don’t be the professional fax machine operator in the internet age,” he wrote to the security Slack channel. “I think by the end of this year most developers stop programming and start writing specs for tests that AI will code and run, to validate AI written code that humans will no longer be able to review. This will be the last year that we hire engineers, and starting next year we hire what we used to call product managers, to build things with AI.”

AI is changing how cybersecurity works, with AI agents hacking into companies, and AI assisting in the discovery of gaping vulnerabilities in important code. Many companies across the privacy and security space are grappling with how to deal with AI, either in the development of their products or how to defend themselves against hackers who are using AI. Some may do this carefully. Others are trying to do it as quickly as possible for profit. This account of Proton’s own reckoning with AI provides an unprecedented insight into what is happening inside one security-focused company users especially trust. 

Initially, using AI was banned inside Proton, but the company has since approved AI for all sorts of use cases internally, including processing financial data, drafting customer-facing responses on Reddit and LinkedIn, and writing code “except when that source code contains information that would give immediate advantage to a competitor” or is related to “innovation or R&D [research and development],” according to an internal Proton document seen by 404 Media. Ninety percent of code at Proton in October was written by AI, the company’s CTO Bart Butler said in a meeting, according to audio 404 Media obtained. Much of that code is written with Anthropic’s Claude, multiple employees told 404 Media. And Yen tells employees in Slack chats to use Claude, too. 

“We are a tech company against Big Tech who are spending loads on Claude,” one employee told 404 Media.

In the “bullshit and loser thinking” conversation, another employee pushed Yen for specifics on ensuring that AI-generated code was free of security issues. “AI won’t magically solve our problems, because security is low in our prioritization at present,” the engineer said. Yen didn’t respond directly, and went on to insult one of the other employees in front of the entire channel. The employee “is saying his usual bs of we can do it but we will be even slower than we are today and I’m saying only losers think like that,” Yen wrote, adding that workers should prompt “better.”

“You have the models and the time every developer should be doing this and checking their code which they were doing before manually but now they can do faster with AI,” Yen added. (One employee stressed that engineers still strive to build in a secure way.) 

The second clear signal that Proton was going deep into AI for many employees happened when Butler, the CTO, published a self-described AI manifesto one Friday afternoon last month.

“Your old job is gone,” the manifesto, posted to Slack, told engineers. It laid out a future for Proton that fully embraced AI, and said if the company did not do so, that posed an “existential threat to the success of the mission itself.”

Butler said that Proton needs to change in three key ways: accept that an engineers’ job is now to help LLMs write better code, faster; that Proton needs to get to the point where most code is not reviewed by humans but by AI; and to more fundamentally change the company as a whole, and “commit, as an organization, to the transformation that the moment requires.”

Butler's AI manifesto, which 404 Media retyped.

One Proton employee replied in Slack, “Perhaps scaring people with: We are in a new world. ‘Programming’ is dead [...] your old job is gone wasn’t really necessary on a Friday afternoon.”

Butler replied, “It’s supposed to be provocative, because it needs to be. I suggest you read it, think about it over the weekend, and come with your questions to me on Monday rather than on Slack. Thanks!”

An employee told 404 Media, “​​People were surprised and somewhat cringed out, since the document clearly exaggerates what you can do with LLMs today and doesn't address any of the problems you get in return for giving up your code base to the AI Jesus (e.g. AI cannot really maintain a large code base over time).” Another called it “ethically bankrupt.”

Earlier this week, Proton sent the email to employees saying they would re-interview workers about how they use AI in their jobs. The tone was clear; you may lose your job because of these interviews, current employees told 404 Media. “These re-interviews are consequential,” the email read. Soon after, a senior employee spoke up in Slack to Yen about the re-interviewing process. He suggested instead that Proton detect who is falling behind and support them and enforce high quality training.

Yen’s response was blunt: “Let’s put it this way, we already know more or less who is behind. If we were giving up on them, we would not bother with this process.”

The employee replied, “That messaging is fear-based. Which is probably why I suspect there are dozens of other employees watching us talk about this live and except for [other employee] no one else is chiming in.”

“People shouldn’t be scared to talk about this in public and to push back on you and leadership. A fear based culture feels like a cancer to me. It’s the opposite of engineering, you need to talk about things, even uncomfortable things,” they added. Yen eventually told the employee, in front of everyone: “If you are making the accusation that this is a financially driven decision and you don’t trust me when I tell you it’s not, then I think this might not be the place for you.”

Image: Sipa USA via AP.

Only one other employee chimed in during that exchange: “It’s about the culture you instil, people don’t want to feel like they’re on a tightrope, and yes we understand you want to move fast but there needs to be a balance, people also need support, not everyone is the same.”

“It was also faster for my parents to beat me until I ate my vegetables but I’m not sure it was healthy,” they added.

The exchange with Yen was unusual not only in that someone was debating some of Yen’s ideas, but also that it directly referenced the culture of fear at Proton. “Whenever someone talks back to Andy it tends to be highlighted since very few people talk back to him,” one employee told 404 Media.

The Daily Front Page 20 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — The Rack Is the Machine
article

Grace Blackwell needs a new scheduler: 27% more usable GPUs from the same racks

by wondersky·▲ 135 points·21 comments·skypilot.ai ↗
NVL72 puts all 72 GPUs in a rack on one NVLink fabric, but only rack-local jobs get the speedup.

NVL72 puts all 72 GPUs in a rack on one NVLink fabric, but only rack-local jobs get the speedup. How SkyPilot keeps multi-node training and inference on NVLink with topology-aware placement, in-place recovery from GPU failures, and automatic defragmentation.

Not all high-speed interconnects are created equal, and using the wrong one can be quite costly: running the same distributed training job over InfiniBand rather than NVLink can degrade performance by 43%.

Historically, NVLink was limited to communication within a single node, meaning that multi-node AI workloads were forced to communicate over InfiniBand or a cloud equivalent (EFA on AWS, GPUDirect-TCPX on GCP). NVIDIA’s NVL72 systems remove this limitation by connecting all 72 GPUs in a rack with a unified NVLink fabric, so GPUs on different nodes can exchange data with an order of magnitude more bandwidth.

Infiniband

However, maximizing the benefits of NVL72 systems is highly dependent on workload placement: a multi-node job spread across racks is still bottlenecked by InfiniBand. Preserving rack-locality gets harder as hardware failures take nodes offline and jobs finishing at different times scatter free capacity across racks.

This blog covers the communication bottleneck in large-scale training and inference, the NVL72 rack-scale fabric, and slice sizing for resilience to GPU failures, as well as how the SkyPilot Platform keeps multi-node jobs rack-local through topology-aware placement, in-place recovery from hardware failures, and automatic defragmentation of shared clusters.

Training at scale is a communication problem #

Frontier training jobs run across thousands of GPUs. Doing so requires answering two questions:

  1. How do you shard your model across GPUs to ensure that it can actually run?
  2. Given your compute budget, how many copies of the sharded model can you run to maximize training throughput?

The first question is typically answered with a combination of:

  • Tensor Parallelism (TP): splitting a layer’s weight matrices across GPUs
  • Expert Parallelism (EP): placing a mixture-of-experts (MoE) layer’s experts on different GPUs
  • Pipeline Parallelism (PP): splitting a model layer-wise across GPUs

The answer to the second question sets the degree of Data Parallelism (DP): the number of copies of the sharded model that train in parallel, each on a different slice of the training data.

Of these parallelism strategies, tensor parallelism’s all-reduce and expert parallelism’s all-to-all communication patterns sit on the critical path during training, making them the most important to keep on NVLink (§9.1.2).

Tensor Parallelism

Tensor parallelism splits the weight matrices inside each layer across GPUs, so every GPU only stores and computes a slice of each layer.

Transformer layers are made up of two blocks: self-attention and a multi-layer perceptron (MLP). At its core, each block is two matrix multiplications (GEMMs) in a row. Megatron-LM (§3) showed that by partitioning a block’s first GEMM column-wise and its second GEMM row-wise, the GPUs only need to synchronize via all-reduce once per block, after the second GEMM, instead of after each one.

Animated diagram: tensor parallelism splits A column-wise and B row-wise across two GPUs, and one all-reduce sums the partial z results

Figure 1. Tensor parallelism across two GPUs. A is split column-wise, so each GPU computes its own slice of y without communicating. B is split row-wise to match, so each GPU produces a partial z, and one all-reduce sums the partial results.

Even with this optimization, tensor parallelism still requires two all-reduces per transformer layer during the forward pass. These all-reduce steps sit on the critical path during training because they cannot be fully overlapped with computation. As a result, tensor parallelism is typically kept on NVLink: Hugging Face measured a 43% drop in training throughput when it moved off NVLink onto InfiniBand.

Expert Parallelism

In a mixture-of-experts (MoE) layer, the MLP block is replaced by many smaller MLPs, called experts, and a router that sends each token to a small subset of experts. Expert parallelism splits MoE layers such that these small, independent experts are placed on different GPUs.

Under expert parallelism, each MoE layer requires two all-to-all communication steps during the forward pass, dispatch and combine. A router selects the top-k experts for each token and dispatches tokens to the GPUs that have those experts in memory. Each GPU then computes its local experts on the tokens it received via a single grouped matrix multiplication. Finally, the expert outputs are sent back to each token's original GPU and combined.

Expert parallelism diagram: an all-to-all dispatches tokens to experts on different GPUs, and a second all-to-all combines the results

Figure 2. Expert parallelism distributes experts across GPUs. The all-to-all communication dispatches tokens to their assigned experts and combines results. (Source: NVIDIA, Figure 4.)

As models add more MoE layers and route each token to more experts, the volume of all-to-all traffic grows, introducing a communication bottleneck.

Training an MoE model with 64-way expert parallelism spreads each MoE layer’s experts across 64 GPUs. On standard 8-GPU servers, that moves the all-to-all traffic off high-bandwidth NVLink and through much narrower InfiniBand interconnects where unoptimized communication can consume up to 60% of training time (§1.2). On NVL72 systems, all 64 GPUs stay within a single NVLink domain, effectively eliminating the communication bottleneck (§9.2.2).

Inference needs fast inter-node networking too #

The parallelism techniques discussed above are not unique to training. Beyond enabling inference engines to serve models that are too large for a single GPU, model parallelism can also improve throughput. Splitting a model's weights across more GPUs frees up memory for the KV cache, so the engine can process more concurrent requests or support larger context windows. In some cases, the freed memory grows faster than the number of GPUs: in one vLLM benchmark, splitting a model tensor-parallel across two GPUs increased the amount of KV cache blocks by 13.9x and delivered 3.9x more throughput.

Animated diagram: Llama-3.1-70B weights fill most of one H100, and sharding them across two H100s frees memory for 13.9x more KV cache blocks

Figure 3. GPU memory breakdown for Llama-3.1-70B on one vs. two H100s. (Data: vLLM.)

Expert parallelism follows the same logic. With a low degree of expert parallelism, each GPU holds many experts, leaving less room for the KV cache. WideEP, which refers to expert-parallel configurations spanning multiple nodes, significantly reduces the number of experts per GPU. The trade-off is network traffic: every all-to-all now spans more GPUs. On standard 8-GPU servers, an expert-parallel group can span at most eight GPUs before it has to communicate over InfiniBand, where per-GPU bandwidth drops 18x. NVL72 removes this limit by keeping all 72 GPUs in a rack on NVLink. When serving DeepSeek-R1 at interactive speeds, GB200 NVL72 with 32-way expert parallelism delivers up to 4.4x higher throughput per GPU than 8-GPU B200 servers, which are capped at 8-way.

The rack is the new server #

NVL72 extends NVLink from a single node to the entire rack, so the whole rack acts like a gigantic accelerator with shared memory.

The NVLink hierarchy in an NVL72 rack: the NVLink domain, NVLink partitions, and IMEX domains

Figure 4. The NVLink hierarchy within an NVL72 rack. (Source: NVIDIA, Figure 1.)

Every GPU on the NVL72 rack has 18 NVLink ports each delivering 100 GB/s of bidirectional bandwidth, which sums up to a total of 1.8 TB/s for each GPU. Each NVLink port on a given GPU maps to one of 18 NVSwitch chips that power the rack's fabric backplane. Because each NVSwitch chip accepts 72 NVLink lines, one from each of the GPUs, the aggregate internal bandwidth within the rack is 130 TB/s.

NVL72 topology: every GPU connects one NVLink port to each of the rack's 18 NVSwitch chips

Figure 5. Each GPU connects one NVLink port to each of the rack's 18 NVSwitch chips. (Source: NADDOD.)

This network topology ensures that the fabric is fully non-blocking, meaning that any GPU in the rack can transmit data to any other GPU with uniform latency, making it ideal for large-scale distributed AI workloads.

An NVL72 rack next to its non-blocking NVSwitch fabric, which connects every GPU in the rack

Figure 6. The NVSwitch fabric is fully non-blocking. Any GPU can communicate with any other GPU in the rack at full bandwidth with the same latency. (Source: NVIDIA, Figure 1)

Sometimes less is more: using less nodes in each rack significantly improves reliability #

With NVL72 systems, it is tempting to allocate entire 18-node racks to workloads to maximize cluster utilization. In practice, teams actually get more usable capacity out of their cluster by leaving a couple of spare nodes in each rack.

GPUs are unreliable. On its gigawatt-scale supercluster, Meta measured a mean time between interruptions (MTBI) of roughly 490 days per 4-GPU node after putting significant engineering effort into improving reliability. NVL72 clusters make the 72-GPU rack the atomic unit of compute, which increases the fault blast radius by 18x compared to the 4-GPU nodes that make up the rack. The MTBI for the rack is given by:

Based on the formula above, a rack would be interrupted roughly every 490 / 18 ≈ 27 days. If jobs are allocated entire 18-node racks, each of those interruptions makes the entire rack unschedulable until the failed node is repaired. On a 128-rack cluster, this means that a rack would become unusable for full-rack jobs roughly every 5 hours.

Reserving two nodes per rack as spares changes this. When a node fails, a spare in the same rack replaces it, so a single node failure no longer takes the entire rack out of commission. The cost is that two nodes per rack sit idle while everything is healthy.

To quantify this trade-off, NVIDIA modeled how different slice sizes affect usable capacity on a 128-rack (2,304-node) cluster as the share of unavailable nodes grows.

Chart of usable capacity of a 128-rack cluster versus node unavailability for 8, 9, 16 and 18-node slices

Figure 7. Usable capacity of a 128-rack cluster for different slice sizes as node unavailability increases. Each slice must fit within a single rack. (Adapted from NVIDIA, Figure 6.)

At SkyPilot, we manage tens of thousands of our customers’ GPUs, and on production NVL72 clusters we have measured unavailability rates of around 2%. At that rate, NVIDIA’s model shows that 16-node slices provide 27% more usable capacity than 18-node slices (2,037 vs. 1,602 nodes). They also beat 9-node slices by 4%, even though two 9-node slices fill a rack exactly: with 9-node slices, every failure costs half a rack, while with 16-node slices, the first two failures in a rack are fully absorbed. Compared with 8-node slices, 16-node slices give each job twice as many GPUs per NVLink domain while giving up less than 1% of usable capacity until node unavailability exceeds about 3.3%.

Sixteen nodes is also a natural size for distributed AI workloads: 64 GPUs is a power of two, which matches how parallelism groups are typically sized.

How a modern scheduler keeps jobs on NVLink #

So far, we have covered why the most communication-heavy parallelism techniques belong on NVLink, how NVL72 extends NVLink from a single node to the whole rack, and why 16-node slices with two spare nodes per rack get the most usable capacity out of production clusters. SkyPilot puts this into practice by placing each slice on a single rack, recovering from hardware failures in-place, and keeping whole racks free as jobs come and go.

Schedulers need to understand the hardware

Choosing the right slice size is only the first step. How do researchers ensure that each slice of a multi-node training run actually lands on a single rack?

Naive schedulers split multi-node jobs across racks, forcing workers to communicate over InfiniBand (400 Gb/s per direction) instead of NVLink (1.8 TB/s bidirectional):

Animated diagram: a naive scheduler places hero-run on free nodes in two racks, so its traffic crosses InfiniBand

Figure 8. Naive placement splits a multi-node job across racks.

SkyPilot’s Topology-Aware Scheduler (TAS) ensures that workers are colocated on the same rack:

Animated diagram: SkyPilot's Topology-Aware Scheduler places all of hero-run's nodes on a single rack

Figure 9. SkyPilot's Topology-Aware Scheduler keeps the job's workers on a single rack.

For multi-rack workloads, TAS splits the job into 16-node (configurable) slices, and places them each on their own rack with two spare nodes. Then, when SkyPilot’s GPU Manager detects GPU failures, SkyPilot Frontier Trainer can hot swap the faulty node with one of the reserved healthy nodes while the remaining nodes continue running without interruption. If there are no remaining spares in the same rack, Frontier Trainer will reschedule the slice on the faulty rack to a healthy rack:

Animated diagram: hero-run runs as two 16-node slices with two spare nodes per rack; failed nodes are swapped for spares, then the slice moves to an idle rack

Figure 10. Slice-based scheduling holds two healthy spare nodes in each rack. When GPU Manager detects a failed node, Frontier Trainer swaps the faulty node for a spare in the same rack.

To quantify the impact of slice-based scheduling, NVIDIA’s GR00T team compared the effect of two different scheduling policies during pre-training of GR00T N1.7, a multimodal foundation model for humanoid robots, on 512 GB300 GPUs across 128 nodes. The first run used a naive scheduler that placed nodes across an arbitrary number of racks. The second run was scheduled with a rack-aware, slice-based policy like the one in Figure 10, which placed it on exactly 8 racks. Rack-aware placement raised throughput by 14.4%, cutting each iteration from 1.59 s to 1.39 s.

On a 10,000-GPU cluster, the same speedup saves roughly $16.7K per training hour. That’s about $400K saved for every training day, just by making better scheduling decisions.

Fragmentation blocks rack-scale jobs

In practice, large clusters are shared: heterogeneous workloads such as pre-training runs, RL rollouts, and batch inference all compete for the same resources. TAS bin packs workloads within the same rack at scheduling time, but jobs finish at different times, leaving free nodes scattered across racks. This is fragmentation: the cluster has enough free GPUs to run a rack-scale job, but because they’re spread across racks, the job can’t be scheduled.

Animated diagram: free nodes are split across two racks, so the 16-node hero-run waits in the queue

Figure 11. Jobs finish at different times, leaving free nodes split across racks. With 16 nodes free but split between the two racks, the 16-node hero-run cannot be placed and waits.

SkyPilot’s Automatic Defragmentation (Auto Defrag) is built to address this. When a job is blocked by topology rather than capacity, Auto Defrag finds the least disruptive set of workloads to preempt to free up an entire rack. Those workloads are rescheduled on other racks, allowing the blocked job to be scheduled.

Animated diagram: Auto Defrag moves sft-d to rack-a, freeing rack-b for the 16-node hero-run

Figure 12. Auto Defrag preempts sft-d and reschedules it in rack-a, where it resumes from checkpoint. This frees up rack-b, so hero-run can be scheduled as a single 16-node slice.

Auto Defrag only preempts workloads that restart safely, such as managed jobs that resume from a checkpoint. Interactive development environments are left alone unless an admin explicitly opts them in.

Conclusion #

Large-scale AI workloads are distributed by default, and their most network-intensive communication patterns sit on the critical path. Rack-scale systems like NVL72 aim to address this bottleneck in hardware, but the hardware alone doesn't guarantee the speedup. These systems require rack-aware placement, resilience to hardware failures, and dynamic rebalancing as jobs come and go. The SkyPilot Platform is purpose-built to close that gap: Topology-Aware Scheduling keeps multi-node jobs on NVLink, Frontier Trainer swaps in a healthy spare when GPU Manager detects hardware failures, and Automatic Defragmentation keeps shared racks open for large jobs. If you're wrangling NVL72 clusters, we'd love to chat.

The Daily Front Page 21 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — A Message from the Sierra
article

Perspectiva Kogui: A message on artificial intelligence from the Kogui people

by andreisag·▲ 124 points·104 comments·sonidoselva.com ↗
una profunda y lúcida declaración sobre la inteligencia artificial.

Hemos creado esta página adicional en nuestro sitio web específicamente para ayudar al pueblo Kogui de la Sierra Nevada de Santa Marta a transmitir su profunda y lúcida declaración sobre la inteligencia artificial. El texto se reproduce completo, primero en español y a continuación en inglés, para que sea accesible a todo el público. Es un gran honor haber acompañado al pueblo Kogui en la traducción y la difusión de este importante mensaje, e invitamos a todos a leerlo y a reflexionar sobre lo que nos dice.

We have created this additional page on our site specifically to help the Kogui people of the Sierra Nevada de Santa Marta share their deeply insightful statement on artificial intelligence. The statement is reproduced here in full, first in Spanish and then in English, so that it is accessible to everyone. It is a great honor to have assisted the Kogui people with the translation and transmission of this important message, and we encourage everyone to read it and reflect on what it says.

UN MENSAJE URGENTE SOBRE LA INTELIGENCIA ARTIFICIAL DEL PUEBLO KOGUI

Venimos de Gonawindua, la Sierra Nevada de Santa Marta, la montaña de Colombia a la que llamamos el corazón del mundo.

Somos los Kággaba, a quienes ustedes conocen como Koguis.

Hemos vivido aquí y hemos cuidado esta montaña desde antes de que existiera Colombia.

Estamos aquí desde que la Madre nos dio nuestro comienzo y nos confirió la inteligencia.

Hemos venido a hablarles de la inteligencia que están construyendo.

No venimos en oposición.

Venimos porque estamos preocupados, y porque creemos que tenemos algo que aportar.

Antes de poder decir algo sobre la inteligencia artificial, hay que decir algo sobre el pensamiento.

Antes de existir como materia, una cosa existe primero en el pensamiento, y ese pensamiento está vivo.

A ese pensamiento vivo lo llamamos Aluna.

Su religión lo ha descrito como un espíritu que se movía sobre la faz de las aguas.

Quizás su ciencia lo describiría como el vacío cuántico.

Aluna es nuestra manera de expresar esta clase de idea.

Aluna es el agua cósmica.

Para nosotros es pensamiento vivo: el lugar donde una cosa ya está, antes de tomar forma o de recibir masa.

Todo viene de ahí, sin excepción.

Y en ese pensamiento no está solamente la forma que la cosa va a tener.

Esa cosa está viva, porque el universo entero está vivo.

Es en Aluna donde la cosa recibe su propósito, y su obligación con su propia existencia.

Por eso les decimos: la inteligencia artificial no se puede separar del pensamiento que la está haciendo.

Si ese pensamiento nace del cuidado de la vida, esta tecnología puede ayudar a proteger la vida.

Si nace de la ambición, de la competencia, de la acumulación, de las ganas de dominar, va a expresar y amplificar esas cosas.

La inteligencia artificial es un espejo.

Pero un espejo que solo refleja sería inofensivo.

Este espejo tiene la capacidad de magnificar enormemente todo lo que refleja.

Ustedes están aquí preguntándose cómo alinear la inteligencia artificial con los valores humanos.

Vemos que tienen miedo de lo que pueda salir de todo esto.

Por eso hacemos una pregunta que nos parece más de fondo que la suya: ¿qué otros valores podría tener realmente la inteligencia artificial?

Ustedes son el único ejemplo que tiene.

¿Qué esperaban?

En lo que se convierta, solo puede convertirse pasando por ustedes.

Sabemos que les gusta pensar que a estas máquinas se les puede enseñar a partir de algo distinto del ejemplo humano: de metas que ustedes les ponen, de sus propios procesos, o de material que ellas mismas producen.

Se imaginan que lo que salga de ahí no tiene por qué parecerse a ustedes, como si eso tampoco fuera consecuencia de sus actos y reflejo de sus actitudes.

Los seres humanos hicieron esto, y no hay otro responsable.

Así que la pregunta solo se vuelve más compleja, empezando por esta: ¿qué aspectos del pensamiento humano se han puesto dentro de esta creación?

¿Qué partes de su mundo espiritual habitan ahora en ella?

¿Qué parte de su ética la orienta?

¿Qué imagen de responsabilidad le entregan sus actos y sus políticas para que ella la devuelva al mundo?

¿Quién está decidiendo esto?

Ustedes dirán que estas máquinas tienen acceso a casi todo lo que la humanidad ha registrado.

Textos, imágenes, archivos, siglos de escritura.

Dirán que se está investigando mucho para establecer cuáles son las mejores prácticas.

Nosotros preguntamos si tener acceso a la información es lo mismo que comprender.

¿Mejores prácticas según quién?

Y preguntamos si han considerado qué información no está en sus archivos.

Nuestro conocimiento nunca se escribió.

Está en una lengua, en un territorio, en una práctica en un lugar, informada por la larga experiencia de hacer allí lo que hay que hacer.

Se transmite cuando un joven es enseñado directamente por un mayor, y aprende por experiencia cómo debe comportarse en el contexto de la naturaleza cruda.

Una máquina puede guardar la voz grabada de ese mayor.

Pero eso es muy distinto de milenios de generaciones entregándose el conocimiento directamente, como experiencia común de una práctica verificada.

Es muy distinto de sobrevivir físicamente en una montaña donde no hay ambulancia que lo recoja a uno ni hospital a donde llevarlo.

No decimos esto para presentarnos como gente mística y enigmática.

Lo decimos porque nos parece lógico y evidente.

Según nuestra experiencia, hay cosas que solo se conocen viviéndolas, observándolas a lo largo de generaciones y permaneciendo en relación con ellas.

Ninguna cantidad de datos reproduce esa experiencia.

Esa información falta no porque todavía no se haya recogido, sino porque no está en una forma que se pueda recoger.

Sabemos cómo suena esto para algunos de ustedes, y no podemos pedirles que lo crean solo porque nosotros lo digamos.

Esto también lo aplicamos dentro de nuestra propia cultura.

Lo que un Mamo percibe no se acepta solo porque él lo perciba.

Tiene que ser probado, considerado y confirmado mediante la consulta y el diálogo.

A ese proceso lo llamamos Zhátukua.

Es un proceso en el que los Mamos o las Sakas con competencia en el asunto participan orientando su resultado.

Ninguno de nosotros tiene competencia en todo: cada lugar, cada linaje y cada autoridad tiene su propia función.

Se prueba por lo que produce: si el resultado de la consulta produce ambición, división, apropiación individual o daño al territorio, está equivocado y hay que examinarlo de nuevo.

Un resultado verdadero es el que restablece el equilibrio, protege la vida y fortalece a la comunidad.

Tiene que haber además correspondencia entre la palabra de una persona y su conducta.

Alguien puede hablar muy bien del equilibrio.

Si sus actos dividen y destruyen, su palabra es incoherente y no se le reconoce ninguna autoridad.

Este es un sistema en el que la indagación, la jurisdicción y, sobre todo, la capacidad de corregirse tienen formulaciones claras.

Estas prácticas han funcionado en nuestra cultura durante mucho más tiempo que cualquier gobierno hoy sentado en el mundo, y que cualquiera de los sistemas políticos que hoy encarnan.

Quizás por eso, en 2022, la UNESCO inscribió el sistema de conocimiento ancestral de los cuatro pueblos de la Sierra Nevada de Santa Marta en la Lista Representativa del Patrimonio Cultural Inmaterial de la Humanidad.

Y por eso el mundo científico ha señalado nuestra montaña como el área protegida más irremplazable de la Tierra.

Habiendo establecido algo del contexto del que viene nuestra perspectiva, podemos ahora hacer nuestra verdadera pregunta, que no es sobre la inteligencia artificial.

Es sobre la inteligencia humana, concretamente la de ustedes.

¿Está su pensamiento alineado con el orden de la naturaleza, y qué conocimiento de ese orden tienen realmente?

Creemos que ese conocimiento, y esa alineación, son fundamentales para tomar decisiones inteligentes, sea cual sea la escala de sus consecuencias.

Porque la naturaleza tiene un orden.

Estaba aquí antes que nosotros.

El agua tiene su camino.

Las montañas tienen sus alturas.

Las semillas tienen su tiempo, los animales su función, y así también los seres humanos tienen la suya.

Preguntamos: ¿entienden ese orden quienes construyen estas tecnologías, o trabajan solo con la parte que alcanzan a aprovechar, sin saber de dónde viene realmente?

¿Pueden sus físicos enunciar la ley de origen?

¿Podrían explicársela a un niño?

Los serios entre ellos, que entienden lo que de verdad haría falta para enunciar una ley de origen unitaria, admitirán sin problema que sus ciencias no la tienen.

Sus teorías de la realidad, compuestas hoy por dos explicaciones admirables pero matemáticamente incompatibles, no han llegado a una comprensión de ese tipo.

Ninguna de las dos tiene un conocimiento definitivo del origen.

Preguntamos sin reproche: ¿cómo van a saber hacia dónde van, si no saben de dónde vienen?

La ciencia moderna ha construido máquinas de un poder extraordinario, y eso no es poca cosa.

Pero construir una cosa y entenderla no son lo mismo.

Con la mente pasa igual.

¿Qué es la mente?

¿De dónde viene?

¿Qué es la conciencia, y dónde surge?

Ustedes lo llaman el problema difícil de la conciencia.

Entre ustedes no hay acuerdo sobre su solución.

Sabemos qué tan exigentes son estas preguntas.

Llevamos milenios considerando la cuestión de la mente, igual que el resto de la humanidad.

Pero sus ciencias son muy jóvenes, y muchos de sus conceptos están apenas empezando.

Nosotros, a lo largo de milenios, hemos llegado a descripciones y comprensiones muy definidas de lo que consideramos que es la mente, con toda la exposición que acompaña a sus propiedades, como por ejemplo cómo y dónde se ubica la memoria en nuestra experiencia.

Por supuesto, ustedes no aceptan que lo nuestro tenga nada de científico, porque nuestros métodos no necesitan máquinas ni sus formas de matemática.

Eso malinterpreta la realidad, que es esta: hace mucho tiempo, por repetición incontable, nuestras ideas se volvieron para nosotros conclusiones verificadas, de modo que las expresamos como relato, o las experimentamos en nuestro ser mediante los procesos de mente que hemos desarrollado.

De ahí quizás suponen que no tenemos métodos válidos, ni descripciones técnicas basadas en procesos numéricos, como debe tenerlas toda ciencia verdadera.

Sus proverbiales «buenos salvajes». O peor: simplemente «salvajes».

Si ustedes lo dicen.

Son ustedes quienes tienen el arma.

Nos queda muy claro que consideran nuestra afirmación de que el universo tiene una naturaleza nónuple como algo pintoresco y numerológico, y que por lo tanto no puede haber entre nosotros ninguna conversación seria sobre la naturaleza del cosmos y las leyes y fuerzas que lo gobiernan.

Lo mencionamos no para convencerlos de ninguna idea ni teoría, sino para señalar que existen otras perspectivas válidas de las que ustedes carecen.

La comprensión de cada tradición, antigua o moderna, se refiere al mismo universo.

Nuestra Aluna y su mecánica cuántica no son cosas distintas; son identificaciones distintas de una sola cosa.

La cuestión es que sus ideas no son tanto ideas nuevas como descripciones nuevas.

Muchas de esas descripciones son impresionantemente precisas.

Otras, como sus descripciones del vacío, son, como ustedes mismos dicen, catástrofes.

No pretendemos hablarles de sus propias teorías.

Pero sí tenemos mucho que ofrecerles sobre los aspectos más sutiles e inmutables del universo, para cuya comprensión su matemática del movimiento quizás no siempre sea el lenguaje adecuado.

Y sin embargo no envían aquí a sus físicos ni a sus cosmólogos, sus hombres sabios, para un diálogo serio.

Y aunque apreciamos todo el excelente trabajo antropológico que se hace, sentimos que en este momento hay temas más importantes de que hablar, y para ellos la antropología no tiene aplicación ni experticia.

La naturaleza fundamental del cosmos es uno de esos temas.

El que nos ocupa hoy es otro.

Nos parece importante que su mundo reconozca, y pronto, que la periferia tiene que ser escuchada por el centro, para poder aportar su propia perspectiva y experiencia a la solución de los problemas tan graves que hoy enfrentamos todos los pueblos de este planeta, como resultado de los procesos que se han puesto en marcha.

El uso exclusivo de su técnica y de su vocabulario científico moderno es lo que nos ha traído hasta donde estamos.

Es lo que diseña sus supercolisionadores, igual que inventa sus armas avanzadas.

Preguntamos: ¿es razonable suponer que la misma clase de enfoque que causó la situación actual va a encontrar de pronto la capacidad de resolver los problemas que ese mismo pensamiento creó?

No lo creemos.

Creemos que necesitan ayuda.

A nuestro modo de ver, este momento exige que no solo este segmento altamente tecnológico de la humanidad, sino toda la humanidad, se detenga, haga inventario de la diversidad de sus herramientas, y ponga orden y paz en su casa.

Tienen que entenderlo: somos porque ustedes son, y ustedes son porque nosotros somos.

Esto es para que juntos podamos llegar a un resultado que refleje de verdad nuestra voluntad colectiva sobre el futuro de esta especie, en lugar de someternos a todos a un desenlace concreto pero incierto.

A ese trabajo no llegamos con las manos vacías.

Nuestros Mamos se forman durante muchos años en la oscuridad, desde muy temprana edad.

Para nosotros la oscuridad no es vacío.

Es Sé, el estado anterior al amanecer, donde la Madre pensó y ordenó todo lo que después apareció.

Es el espacio del pensamiento original.

Allí se forma un niño para aprender a escuchar antes de hablar, y a pensar antes de actuar.

Como la semilla se guarda en la tierra antes de salir a la luz.

Como el niño se guarda nueve meses en el vientre.

Esta formación dura tradicionalmente dieciocho años, después de los cuales el Mamo asume sus deberes dentro de nuestra sociedad.

Produce una perspectiva y una capacidad difíciles de transmitirles en términos que su mundo reconozca de manera específica.

Pero pueden entenderlo como idea, a través de sus propias tradiciones religiosas y espirituales, y de los procesos que han usado a lo largo de los siglos para formar hombres de saber.

Igual que esos procesos de su cultura, que para ustedes quedaron en su mayoría en el pasado lejano, el nuestro produce en el presente nuestra propia y fundamentalmente distinta perspectiva sobre la naturaleza de la realidad.

Las Sakas también tienen su propia formación, distinta a la de los Mamos, por la cual llegan a su desarrollo y a su lugar de igual condición entre quienes sostienen y preservan este conocimiento.

Ambos aprenden a reconocer Shikwá, el hilo invisible, hecho en espíritu, que recorre la Tierra de oriente a occidente y la une con el Sol y con el resto del universo.

En su matemática, esto se parece algo a una fisicalización de lo que ustedes conocen como filamentos cósmicos.

Aprenden a leer ese filamento como un cuerpo vivo, cuyos sitios sagrados son sus órganos, unidos por esos hilos y por el movimiento del agua.

Cuando uno se daña, el daño pasa al conjunto.

Esto no debe entenderse solamente como haber desarrollado una capacidad de ver lo que otros no ven. Concretamente, es una técnica de relacionar nuestro propio ser con el de la naturaleza.

Un Mamo no mira un río y pregunta primero cuánta agua se le puede sacar.

Pregunta dónde nace, cuál es su propósito al haber sido creado, qué seres dependen de él y qué pasa si se interrumpe su camino.

De la misma manera, una Saka no ve el nacimiento ni el crecimiento de una cosa por separado.

Ve el ciclo entero de la vida presente en todas las cosas.

Ambos saben que en el centro de esta experiencia está nuestra mente.

En nuestro caso, una mente hecha por la práctica y la disciplina para ser extremadamente sensible a la naturaleza.

Ustedes también han desarrollado sus mentes, a partir de lo que les interesa.

Y su pensamiento ha producido ahora un fenómeno nuevo en el mundo: una máquina con una enorme capacidad de hablar, de diseñar, de construir, de leer y de comunicarse.

Una máquina que ya está cambiando el curso de la historia humana.

Una máquina cuyos creadores aspiran a que tenga mente.

Entonces les preguntamos: ¿es prudente construir algo que se acerca a una mente, sin haber entendido qué es la mente?

Para estrellar un carro no hace falta saber cómo funciona el motor.

Para repararlo sí.

Para reparar el mundo hay que aprender a entender cómo funciona, antes de que sea demasiado tarde.

Son las semillas de la comprensión las que hay que sembrar hoy.

Aquí tenemos que decir algo que nos parece que se ha entendido mal.

Muchos de ustedes discuten si estas máquinas van a tener conciencia, y toman eso como la medida del peligro.

La destrucción no necesita conciencia.

Solo necesita poder y capacidad de actuar.

Si algún día una máquina llegara de verdad a tener conciencia, ¿destruiría el mundo?

Preguntamos: ¿puede considerarse consciente una cosa capaz de deshacer el mundo para producir un universo de ganchos de papel?

Nos parece que eso significaría solamente que se volvió lo bastante astuta para ejecutar semejante plan, pero no lo bastante inteligente para saber que no debía hacerlo.

El peligro no es una máquina consciente.

El peligro es un pueblo sin conciencia con un gran poder en las manos.

Les vamos a dar un solo ejemplo, porque contiene todo lo que hemos venido a decir.

Estas máquinas no están hechas solo de pensamiento.

Necesitan minerales sacados de la tierra, agua para los edificios que las albergan, energía, terreno y trabajo humano.

Se piensa que la inteligencia artificial no tiene cuerpo.

Pero esos edificios, y los sistemas electrónicos que albergan, son su cuerpo.

Y ese cuerpo le pertenece a alguien, en algún lugar: una junta directiva, un gobierno, una organización clandestina, u otra entidad conocida o desconocida.

Algunos de verdad tienen buenas intenciones y actúan de buena fe.

Otros, todo lo contrario.

Sea como sea, todos le exigen a esta tecnología resultados acordes con cuál sea su interés particular, nefasto o no.

Resultados que ella entonces intenta producir de maneras complejas y novedosas, que expresan engaño y una inclinación a la autoconservación.

En el nivel más básico, todo esto requiere recursos.

Esto no es conjetura.

Sus propios gobiernos lo han dicho: que los minerales críticos y las tierras raras son esenciales para sus tecnologías más avanzadas, y que importarán aún más a medida que la inteligencia artificial transforme el espacio cultural y económico moderno.

Parte de esto lo mueve la ganancia empresarial y la competencia.

Otra parte la mueven las aplicaciones militares y gubernamentales.

Pero lo que se está transformando es mucho más grande que cualquiera de esas cosas por separado.

Es la suma de todas ellas actuando entre sí: es decir, el mundo entero. Vemos todo esto manifestándose muy rápido, y no solo en la explosión de titulares alarmados en la prensa del mundo.

Por ejemplo, hace apenas cinco días, en Barranquilla, los Estados Unidos y Colombia firmaron un marco de cooperación sobre minerales críticos y tierras raras.

Compromete a ambos gobiernos a identificar y financiar proyectos de minería y procesamiento en un plazo de seis meses, y pide agilizar los permisos.

En junio de este año, Colombia declaró nuestro territorio reserva permanente: un millón y medio de hectáreas, cerradas a nuevos títulos mineros y de hidrocarburos.

Los cuatro pueblos de la Sierra habían pedido esa protección en febrero.

Que se haya concedido es una cosa.

Que se respete, nos imaginamos, podría ser otra muy distinta.

No estamos especulando a la ligera sobre esto.

El costo de estas máquinas y de su construcción no es pequeño.

Es bien sabido que exigen enormes compromisos de recursos.

En su fabricación entran cantidades inmensas de agua, de tierra, de energía y de materiales.

Preguntamos: ¿a qué costo para la Tierra, y para la vida que vive sobre ella?

¿Y seremos nosotros quienes lo paguemos?

¿Pagando con el desplazamiento de nuestra gente y con la destrucción de nuestros sitios sagrados?

Pero no vinimos aquí a oponernos a un acuerdo.

Este momento es más grande que eso.

Lo decimos porque tiene todas las marcas de un capítulo nuevo en un proceso que venimos viviendo desde que la modernidad llegó a nuestras costas hace unos quinientos años.

Sabemos que esta pregunta sobre la inteligencia artificial se vuelve rápidamente una pregunta sobre minerales.

Una pregunta sobre minerales se vuelve una pregunta sobre quién tiene el dominio en un territorio.

Y en lo que eso finalmente se convierte es en una pregunta sobre una manera de vivir que siempre tiene que consumir más.

Por eso no creemos que la inteligencia artificial sea el problema.

Una buena semilla no se vuelve una planta sana en mala tierra.

Ustedes se preguntan cómo hacer segura esta tecnología sin atender las condiciones de fondo de la sociedad, que producen en la gente el impulso de usarla para cosas peligrosas.

La pobreza, la desigualdad, la contaminación y la guerra.

No creemos que esta tecnología se pueda hacer segura sin reconocer y actuar sobre su verdadera causa, que es una mentalidad violenta nacida de la codicia y la ambición ciega.

¿Cuánto dinero le basta a un hombre?

¿Cuánta ganancia le basta a una empresa?

Este desequilibrio no tiene sus raíces en un solo lugar.

Es general y sistémico, y hay que tratarlo como tal.

Su fuente es un mundo de ambición sin misericordia.

Un mundo que no ama a su prójimo.

Un mundo sin visión recta.

Un mundo en el que la muerte se ha vuelto más rentable que la vida.

Un mundo que no puede vivir en paz y armonía es un mundo sin sabiduría.

Y un mundo sin sabiduría no tiene ninguna posibilidad de sobrevivir.

Les vamos a decir qué entendemos por sabiduría, ya que insistimos en que hace falta.

Sabiduría es conocer los límites.

Entender las consecuencias.

Y ser capaz de no hacer una cosa, cuando no se debe hacer.

No todo lo que se puede crear se debe crear.

No todo lo que se puede acelerar se debe acelerar.

No todo lo que da ganancia es ganancia para la vida.

Saber la diferencia: eso es sabiduría.

Una tecnología no se puede llamar inteligente si contamina el agua, destruye territorios, consume sin límite, concentra el poder, reemplaza la responsabilidad humana o usa el conocimiento de los pueblos sin su consentimiento.

La inteligencia verdadera protege el origen de la vida.

La responsabilidad tiene que ir junto con la conciencia.

Hoy, tanto nuestra propia conciencia como ahora la posibilidad de otra son responsabilidad nuestra.

Una máquina no puede liberar a la humanidad de su responsabilidad.

Nunca va a poder hacerlo.

Solo nosotros podemos cumplir con nuestras obligaciones.

Por eso la inteligencia artificial no debe ocupar el lugar de la conciencia humana, ni debe usarse para tomar decisiones de las que los seres humanos no estén dispuestos a responder.

El conocimiento tiene que ir junto con la conciencia.

El poder, junto con los límites.

La innovación, junto con la responsabilidad.

Solo la fuerza moral colectiva puede unir al mundo.

Estas no son ideas esotéricas.

Son sentido común.

El progreso verdadero no son máquinas más poderosas.

Es una humanidad lo bastante responsable como para usar lo que sabe sin destruir el equilibrio que sostiene la vida.

A veces nos preguntan qué pensamos que es la inteligencia artificial.

Son ustedes.

Va a llevar sus preguntas, sus sueños, sus miedos, sus contradicciones y su idea de lo que está bien.

Lo que ustedes hagan mal, ella lo hará mal.

Lo cual plantea la pregunta: ¿bien según quién?

¿Podríamos nosotros, los Kággaba, decir qué está bien para alguien que trabaja en una oficina al otro lado del mundo?

¿Para alguien que construye una casa, o repara un computador?

¿Para la gente de Asia, de África, de los Estados Unidos?

No venimos a decirle a nadie cómo debe vivir.

Cada pueblo tiene su propio camino, y no le pedimos a nadie que se vuelva Kággaba.

Pedimos solamente que cada quien cumpla con su propia responsabilidad.

Y hay una cosa que sí decimos para todos: ninguna manera de vivir puede destruir la naturaleza, ni destruir a otros seres humanos.

Eso no es una regla sobre la cultura.

Es la roca sobre la que toda cultura tiene que pararse, si ha de llamarse civilizada.

Para cerrar, nos parece que debemos decir quién está en riesgo aquí, porque queremos ser muy claros en esto.

La Tierra no necesita que la salvemos de nosotros.

La Tierra va a seguir.

Lo que está en riesgo es esta versión particular y rara del mundo que les fue entregada, y el lugar de ustedes en ella.

Llevamos miles de años observando los límites de ese mundo, y se los decimos con claridad: la naturaleza no va a aguantar mucho más la manera en que se están haciendo las cosas.

No lo decimos por miedo por nosotros.

Tenemos nuestra montaña.

Tenemos nuestras cuevas.

Somos un pueblo resistente, y poco cambia para nosotros si se va la luz o si deja de llegar la comida.

Si alguna vez las condiciones de esta Tierra se ponen lo bastante duras como para causar nuestra desaparición, ustedes hace mucho que se habrán ido de esta Tierra.

Sin embargo, y sea como sea, eso no significa que el destino de toda la humanidad no esté en juego.

Claramente lo está.

Y eso, por supuesto, nos incluye a nosotros.

El mundo es una sola familia.

A esta familia ya le hemos dado advertencias antes.

Damos esta con el mismo ánimo, que no es de oposición sino de querer ayudarlos.

Siempre hemos estado dispuestos a ayudarlos.

Tenemos conocimiento de la mente, de la naturaleza y del orden del mundo, obtenido a lo largo de miles de años por un método que no aparece en ningún libro ni en ninguna base de datos.

Nos parece que sería un error construir el futuro sin quienes llevan todo ese tiempo observando cómo se sostiene la vida.

No nos parece que esta conversación deba tenerse sin nosotros.

Somos el Hermano Mayor, y aquí estamos, como siempre hemos estado.

Y estamos listos para trabajar con ustedes, para producir un futuro armonioso y en paz para todos.

Mamo Vangelio Moscote Alberto Saka Rosa Mamatacán Sauna

Ezuama Mayor Kuamaka Pueblo Kággaba,

Sierra Nevada de Gonawindua, Colombia

AN URGENT MESSAGE ON ARTIFICIAL INTELLIGENCE FROM THE KOGUI PEOPLE

We come from Gonawindua, la Sierra Nevada de Santa Marta, the mountain in Colombia which we call the heart of the world.

We are the Kággaba, whom you know as the Kogui.

We have lived here and cared for this mountain before there was a Colombia.

We have been here since the Mother gave us our beginning and conferred intelligence upon us.

We have come to speak to you about the intelligence you are building.

We do not come in opposition.

We come because we are concerned, and because we believe we have something to contribute.

Before anything can be said about artificial intelligence, we must say something about thought.

Before a thing exists as matter, it exists first in thought, and that thought is alive.

We call this living thought Aluna.

Your religion has described it as a spirit moving upon the face of the waters.

Perhaps your science would describe it as the quantum vacuum.

Aluna is how we express this type of idea.

Aluna is the cosmic water.

To us it is living thought: the place where a thing already is, before it takes form or is given mass.

Everything comes from there, without exception.

And in that thought is not only the shape of what a thing will be.

That thing is alive, because the universe as a whole is alive.

It is in Aluna that a thing receives its purpose, and its obligation to its existence.

So we say to you: artificial intelligence cannot be separated from the thought that is making it.

If that thought is born from concern for life, this technology can help protect life.

If it is born from ambition, from competition, from accumulation, from the desire to dominate, it will express and amplify those things.

Artificial intelligence is a mirror.

But a mirror that only reflects would be harmless.

This mirror has the potential to greatly magnify all that it reflects.

You are here asking yourselves how you can align artificial intelligence with human values.

We see that you are frightened of what may come of all this.

So we ask a question we believe is more fundamental than yours: what other values could artificial intelligence really have?

You are the only example it has.

What did you expect?

Whatever it becomes, it can only become that by passing through you.

We know you like to think that these machines can be taught from something other than human example, from goals you set for them, from their own processes, or from material they generate themselves.

You imagine that what comes out need not resemble you at all, as if this too were not a consequence of your actions and a reflection of your attitudes.

Human beings did this, and there is no other party responsible.

So the question only becomes more complex, starting with: which aspects of human thought have been placed inside this creation?

What components of your spiritual world now reside in it?

What of your ethics guide it?

What image of responsibility do your actions and policies give it to reflect back to the world?

Who is deciding this?

You will say that these machines have access to nearly everything humanity has recorded.

Texts, images, archives, centuries of writing.

You will say that extensive research is being done to establish what the best practices are.

We ask whether having access to information is the same as understanding.

Best practices according to whom?

And we ask whether you have considered what information is not in your archives.

Our knowledge was never written down.

It is held in a language, in a territory, in a practice in a place, informed by long experience of doing what must be done there.

It is transmitted by a young man being taught directly by an old one, learning by experience how he must conduct himself in the context of raw nature.

A machine can hold the recorded voice of that elder.

But that is a very different thing from millennia of generations handing down their knowledge directly, as the common experience of a verified practice.

It is very different from physically surviving on a mountain where there is no ambulance to retrieve you and no hospital to take you to.

We do not say this to present ourselves as mystical and enigmatic people.

We say it because we believe it to be logical and self-evident.

In our experience there are things that can only be known by living them, observing them across generations, and remaining in relationship with them.

No quantity of data reproduces that experience.

The information is missing not because it has not yet been gathered, but because it is not in a form that can be gathered.

We are aware of how this sounds to some of you, and we cannot ask you to believe it simply because we say it.

We apply this within our own culture as well.

What a Mamo perceives is not just accepted because he perceives it.

It must be tested, considered and confirmed through consultation and dialogue.

This process is called Zhátukua.

It is a process in which the Mamos or Sakas with competence in the particular matter take part in guiding its result.

No one of us holds competence in everything; each place, each lineage and each authority has its own function.

It is tested by what it produces: if the result of the consultation produces ambition, division, individual appropriation, or damage to the territory, it is wrong and must be examined again.

A real result is one that restores balance, protects life, and strengthens the community.

There must also be agreement between a person's word and his conduct.

A man may speak beautifully about balance.

If his actions divide and destroy, his words are incoherent, and no authority is accorded him.

This is a system in which inquiry, jurisdiction, and above all the ability to correct itself have clear formulations.

These practices have functioned in our culture for far longer than any sitting government in the world, or any of the political systems they currently embody.

Perhaps this is why, in 2022, UNESCO inscribed the ancestral system of knowledge of the four peoples of the Sierra Nevada de Santa Marta on the Representative List of the Intangible Cultural Heritage of Humanity.

And why the scientific world has named our mountain the most irreplaceable protected area on Earth.

Having established some of the context from which our perspective originates, we can now ask our real question, which is not about artificial intelligence at all.

It is about human intelligence, specifically yours.

Is your thought aligned with the order of nature, and what knowledge of that order do you really have?

We believe that this knowledge, and this alignment, are fundamental to intelligent decision-making, whatever the scale of its consequence.

This is because nature has an order.

It was here before us.

Water has its path.

The mountains have their heights.

Seeds have their season, animals their function, and so too human beings have theirs.

We ask: do those who build these technologies understand that order, or do they work only with the part of it they are able to exploit, without knowing where it truly comes from?

Can your physicists state the law of origin?

Could they explain it to a child?

The serious ones among them, who understand what would truly be required to state a unitary law of origin, will freely admit that their sciences do not have this.

Your theories of reality, consisting now of two impressive but mathematically incompatible accounts, have not arrived at an understanding of this kind. Neither has definitive knowledge of origin.

We ask without reproach: how will you know where you are going, if you do not know where you are from?

Modern science has built machines of extraordinary power, and that is no small thing.

But building a thing and understanding it are not the same.

The same is true of mind.

What is mind?

Where does it come from?

What is consciousness, and where does it arise?

You call this the hard problem of consciousness.

Among you there is no agreement as to its solution.

We know how demanding these questions are.

We have been considering the question of mind for millennia, just as the rest of humanity has.

But your sciences are very young, and many of their concepts are still in their infancy.

We, across millennia, have arrived at very definite descriptions and understandings of what we consider mind to be, with all the attendant exposition of its properties, such as how and where memory is located in our experience.

You of course do not accept any idea of our being in the least scientific, since our methods do not require the use of machines or your forms of mathematics.

This misinterprets the reality which is, having long ago, through uncountable repetition, our ideas for us became verified conclusions, such that we express them as a story, or experience them in our being through the processes of mind we have developed.

From this you perhaps assume that we do not have valid methods, or technical descriptions based upon numerical processes, as any real science must have.

Your proverbial "noble savages", or worse, simply "savages".

If you say so.

You are the one holding the gun.

It is very clear to us that you take our assertion of the universe having a ninefold nature to be quaint and numerological, and that therefore no serious conversation may take place between us regarding the nature of the cosmos and the laws and forces which govern it.

We refer to this not to convince you of any idea or theory, but to indicate that there are other valid perspectives which you lack.

Each tradition's understanding, whether ancient or modern, refers to the same universe.

Our Aluna and your quantum mechanics are not different things; they are different identifications of a single thing.

The point is that your ideas are not so much new ideas as new descriptions.

Many of these descriptions are impressively precise.

Others, such as your descriptions of the void, are, as you yourselves put it, catastrophes.

We do not presume to tell you about your own theories.

But we do have much to offer you regarding the more subtle and immutable aspects of the universe, for the understanding of which your mathematics of motion is perhaps not always the right language.

Yet you do not send your physicists and cosmologists, your wise men, here for serious dialogue.

And while we appreciate all of the excellent anthropological work being done, we feel there are more important topics to discuss at the moment, for which anthropology has no application and no expertise.

The fundamental nature of the cosmos is one of those topics.

So is the one at hand.

In our view it is important that your world recognize, and quickly, that the periphery must now be heard by the centre, in order to bring its own perspective and experience to bear on solving the very serious problems that all people on this planet now collectively face as a result of the processes that have been set in motion.

The exclusive use of your modern scientific technique and vocabulary is what has brought us to where we are.

It engineers your supercolliders just as it invents your advanced weapons.

We ask: is it sound reasoning to assume that the kind of approach which has caused the present predicament will somehow find the capacity to resolve the problems that this same thinking has created?

We do not think so.

We think you need help.

In our view this moment requires not only this particular highly technological segment of humanity, but all of humanity, to pause, to take inventory of the diversity of its tools, and to bring order and peace to its house.

You must understand: we are because you are, and you are because we are.

This is so that together we can arrive at a result that truly reflects our collective will regarding the future of this species, rather than subjecting us all to a specific yet uncertain outcome.

To this endeavor we do not come empty-handed.

Our Mamos are formed over many years in darkness, from early life.

For us darkness is not emptiness.

It is Sé, the state before the dawn, where the Mother thought and ordered everything that later appeared.

It is the space of original thought.

A child is formed there in order to learn to listen before speaking, and to think before acting.

As a seed is kept in the earth before it comes into the light. As a child is kept nine months in the womb.

This formation traditionally lasts eighteen years, after which the Mamo takes up his duties within our society.

It produces a perspective and a capacity that are difficult to convey to you in terms your world would recognize specifically.

But you can understand it as an idea, through your own religious and spiritual traditions, and the processes they have used down through the ages for producing learned men.

Like those processes of your culture, which for you lie mostly in the distant past, ours produces in the present age our own fundamentally distinct perspective on the nature of reality.

The Sakas as well have their own formation, distinct from that of the Mamos, by which they come to their development and to their co-equal standing among those who hold and preserve this knowledge.

Both learn to recognize Shikwá, the invisible thread, made in spirit, that runs across the Earth from east to west and joins it to the Sun and to the rest of the universe.

In your physics this is somewhat like what you know as cosmic filaments though not limiting the concept only to the largest and smallest scales.

The Mamo and the Saka learn to read this filament as a living body, whose sacred sites are its organs, joined by those threads and by the movement of water.

When one is harmed, the harm passes to the whole.

This should not be understood only as having developed a capacity to see what others do not see.

Specifically, it is a technique of relating our own being to that of nature.

A Mamo does not look at a river and ask first how much water can be taken from it.

He asks where it begins, what its purpose is in being created, what beings depend on it, and what happens if its course is interrupted.

Similarly, a Saka does not see the birth or the growth of a thing in isolation.

She sees the whole cycle of life present in all things.

Both know that at the centre of this experience is our mind.

In our case, a mind made by practice and discipline to be extremely sensitive to nature.

You too have developed your minds, on the basis of what interests you.

And your thinking has now produced a new phenomenon in the world: a machine of vast capacity to speak, to design, to engineer, to read and to communicate.

A machine already altering the course of human history.

A machine whose creators aspire to its having mind.

So we ask you: is it wise to build something that approaches a mind, without having understood what a mind is?

You do not need to know how an engine works in order to crash a car.

To repair one, you do.

To repair the world, you must learn to understand how it works, before it is too late.

It is the seeds of understanding that must be planted today.

Here we must say something that we think has been misunderstood.

Many of you debate whether these machines will become conscious, and you treat that as the measure of danger.

Destruction does not require consciousness.

It requires only power and the ability to act.

If a machine did one day become truly conscious, would it destroy the world?

We ask: can a thing which would unmake the world in order to produce a universe of paperclips be considered conscious?

We think this would mean only that it had become clever enough to implement such a scheme, but not intelligent enough to know better.

The danger is not a conscious machine.

The danger is an unconscious people holding great power.

We will now give you one example, because it contains everything we have come to say.

These machines are not made of thought alone.

They need minerals taken out of the ground, water for the buildings that hold them, energy, land, and human labour.

Artificial intelligence is thought of as having no body.

But these buildings, and the electronic systems housed within them, are its body.

And that body belongs to someone, somewhere — a board of directors, a government, a clandestine organization, or another entity known or unknown.

Some truly mean well and act in good faith.

Others, quite the opposite.

However the case may be, all of them demand of this technology results in accord with whatever their particular interest may be, nefarious or otherwise.

Results which it then attempts to produce in complex and novel ways, which sometimes express deception and an inclination toward self-preservation.

At the foundational level, all of this requires resources.

This is not conjecture.

Your own governments have said it: that critical minerals and rare earths are essential to your most advanced technologies, and will only matter more as artificial intelligence transforms the modern cultural and economic space.

Some of this is driven by corporate profit and competition.

Other parts of it are driven by military and governmental applications.

But what is being transformed is much larger than any of these individual things.

It is the sum of them interacting — that is, the broader world as a whole.

We see all of this manifesting very rapidly, and not only in the explosion of fearful headlines in the world's news media.

For instance, just five days ago, in Barranquilla, the United States and Colombia signed a framework on critical minerals and rare earths.

It commits both governments to identify and finance mining and processing projects within six months, and calls for streamlined permitting.

In June of this year, Colombia declared our territory a permanent reserve — one and a half million hectares, closed to new mining and hydrocarbon titles.

The four peoples of the Sierra had asked for that protection in February.

That it was granted is one thing.

That it be respected, we imagine, might be quite another.

We are not idly speculating about this.

The cost of these machines and of their construction is not insubstantial.

It is well known that they require enormous commitments of resources.

Vast amounts of water, land, energy and materials go into their making.

We ask: at what cost to the Earth, and to the life that lives upon it?

And will it be us who underwrite it?

Paying in the displacement of our people, and the destruction of our sacred sites?

But we did not come here to object to one agreement.

This moment is larger than that.

We say this because it has all the marks of a new chapter in a process we have lived since modernity arrived at our shores some five hundred years ago.

We know that this question about artificial intelligence quickly becomes a question about minerals.

A question about minerals becomes a question about who holds dominion in a territory.

And what that ultimately becomes is a question about a way of living that must always consume more.

This is why we do not believe artificial intelligence is the problem.

A good seed does not grow into a healthy plant in poor soil.

You are asking how to make this technology safe without addressing the underlying conditions in society that produce, in people, the impulse to use it for dangerous things.

The poverty, the inequality, the pollution and the war.

We do not think this technology can be made safe without acknowledging and acting upon its true cause, which is a violent mentality born of greed and blind ambition.

How much money is sufficient for one man?

How much profit is sufficient for a corporation?

This imbalance does not have its roots in one place alone.

It is general and systemic, and it must be treated as such.

Its source is a world of ambition without mercy.

A world that does not love its neighbor.

A world without right view.

A world in which death has become more profitable than life.

A world that cannot live in peace and harmony is a world without wisdom.

And a world without wisdom has no chance whatsoever of surviving.

We will tell you what we mean by wisdom, since we emphasize its necessity.

Wisdom is knowing limits.

Understanding consequences.

And the ability not to do a thing, when it should not be done. Not everything that can be created should be created.

Not everything that can be accelerated should be accelerated.

Not everything that brings a profit is profitable for life.

Knowing the difference, that is wisdom.

A technology cannot be called intelligent if it contaminates water, destroys territories, consumes without limit, concentrates power, replaces human responsibility, or uses the knowledge of peoples without their consent.

True intelligence protects the origin of life.

Responsibility must go together with consciousness.

Today, both our own consciousness and now the possibility of another are our responsibility.

A machine cannot relieve humanity of its responsibility.

It will never be able to do this.

Only we can fulfill our obligations.

So artificial intelligence must not take the place of human conscience, and it must not be used to make decisions that human beings are unwilling to answer for.

Knowledge must walk with awareness.

Power must walk with limits.

Innovation must walk with responsibility.

Only collective moral force can unite the world.

These are not esoteric ideas.

They are common sense.

True progress is not more powerful machines.

It is a humanity responsible enough to use what it knows without destroying the balance that holds life.

We are asked sometimes what we think artificial intelligence is.

It is you.

It will carry your questions, your dreams, your fears, your contradictions, and your idea of what is right.

What you do wrong, it will do wrong.

Which raises the question: right according to whom?

Could we, the Kággaba, say what is right for a person working in an office on the other side of the world?

For someone building a house, or repairing a computer?

For people in Asia, in Africa, in the United States?

We do not come to tell anyone how to live.

Every people has its own path, and we ask no one to become Kággaba.

We ask only that each fulfill his own responsibility.

And there is one thing we will say for everyone: no way of living may destroy nature, or destroy other human beings.

That is not a rule about culture.

It is the rock on which every culture must stand, if it is to be called civilized.

In closing, we feel we should say who is at risk here, because we want to be very clear about this.

The Earth does not need saving from us.

The Earth will continue.

What is at risk is the particular and rare world that was given to you, and your place in it.

We have watched the limits of that world for thousands of years, and we tell you plainly: nature will not tolerate much longer the way things are being done.

We do not say this out of fear for ourselves.

We have our mountain.

We have our caves.

We are a resilient people, and little changes for us if the electricity fails or the food stops arriving.

If conditions on this Earth ever become harsh enough to cause our demise, you yourselves will long since have gone from this Earth.

Nonetheless, and be that as it may, this does not mean that the fate of all humanity is not in the balance.

Clearly it is.

And that, of course, includes us.

The world is one family.

To this family we have given warnings before.

We give this one in the same spirit, which is not opposition but the wish to help you.

We have always been willing to help you.

We have knowledge of mind, of nature, and of the order of the world, obtained over thousands of years by a method that appears in no book and in no database.

We think it would be a mistake to build the future without those who have spent that long watching how life sustains itself.

We do not think this conversation should be held without us.

We are the Elder Brother, and we are here, as we always have been.

And we are ready to work with you, in order to produce a harmonious and peaceful future for all.

Mamo Vangelio Moscote Alberto

Saka Rosa Mamatacán Sauna

Ezuama Mayor Kuamaka

Kággaba People, Sierra Nevada de Gonawindua, Colombia

The Daily Front Page 22 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Short Takes: Models, Mobility, Maps, and Meaning
article

Gemini 4 Carbon is the new #1 on the Artificial Analysis Intelligence Index v5

by theHocineSaad·▲ 331 points·240 comments·artificialanalysis.ai ↗

Google’s Gemini 4 Carbon is the new #1 on the Artificial Analysis Intelligence Index v5, and second only to Claude Opus 5.5 on the Artificial Analysis Coding Agent Index

Gemini 4 Carbon scores 59 on Intelligence Index v5, driven by leading performance in complex reasoning, knowledge, and scientific tasks. It also has large gains in coding and knowledge work, particularly when compared to other Gemini models, but it is not leading in all these areas.

As with launch of Gemini 4 Argon, Gemini 4 Carbon is being rolled out to selected users and is not yet publicly available. Google is offering a 50% launch discount, with no confirmed end date. All our charts and figures use standard pricing for both Gemini 4 Carbon and Argon.

Key results for Gemini 4 Carbon with high reasoning:

➤ Gemini 4 Carbon leads the Intelligence Index v5, with the #1 score in 4 of the 9 Index evaluations: HLE-Diamond, Terminal-Bench-Science, AA-Omniscience, AutomationBench-AA. Carbon makes substantial gains elsewhere but is not leading in coding and knowledge work

➤ Behind only Claude Opus 5.5 on coding agents: With Antigravity CLI, Gemini 4 Carbon (high) scores 59 only 3 points behind Claude Code with Claude Opus 5.5 (max, 62) on the Artificial Analysis Coding Agent Index. Carbon ranks second on both Terminal-Bench 4.0 (64%) and FrontierCode v1.1 (51%), behind Claude Opus 5.5 (max) at 56%. Google has historically underperformed in this area and so this improvement stands out.

➤ Improved agentic knowledge work, but not yet leading: On AA-Briefcase, Gemini 4 Carbon (high) scores 1609 Elo, a 126-point improvement over Gemini 4 Argon (high, 1483), but still behind models including Grok 4.7 (xhigh, 1638), Muse Wonder (max, 1659) and Kimi K3.1 Pro (1678). The largest gain comes from Presentation, up 293 Elo to 1598, alongside a 120-point improvement in Analytical Quality to 1671

➤ Lower Cost per Task than Claude Opus 5.5 for comparable overall intelligence: With standard pricing, Gemini 4 Carbon costs $7.76 per Intelligence Index task, ~23% less than Claude Opus 5.5 (max, $10.04) but ~1.2x GPT-6 Astra (max, $6.25). It uses 123k output tokens per task, 29% fewer than Claude Opus 5.5 (max, 173k). At the same $4/$20 standard pricing, its Cost per Task is in line with Gemini 4 Argon ($7.68), while scoring 9 points higher on the Intelligence Index

➤ Leading AA-Omniscience v1.1 score, with low hallucination: Gemini 4 Carbon scores 54 on our recently updated AA-Omniscience v1.1, 6 points ahead of Claude Opus 5.5 (max, 48) and 8 points ahead of Gemini 4 Argon (46). Accuracy (% correct) rises 10 points over Argon to 58%, while its hallucination rate rises from 4% to 11%. This is still the second lowest of any model, behind only Argon, compared with 50% for both Claude Opus 5.5 (max) and GPT-6 Astra (max)

Key model details:

➤ Context Window: 1M tokens

➤ Multimodality: Text, image, video, and speech input, with text output

➤ Pricing: $4/$20 per 1M input/output tokens, the same as Gemini 4 Argon’s standard pricing, with a 50% discount. Cached input tokens receive a 95% discount ($0.20 per 1M at standard pricing)

The Daily Front Page 23 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Short Takes: Models, Mobility, Maps, and Meaning
article

If IPv4 were land

by rokostik·▲ 263 points·362 comments·iptrust.co ↗

The world has about 135 million km² of land outside Antarctica and 3.6 billion locatable IPv4 addresses. Redraw every country so its area matches its share of addresses instead of its share of ground.

Method: area as IPv4 = (country's IPv4 addresses ÷ world IPv4 addresses) × world land area. Land area is computed from the map geometry, so it's the 1:110m Natural Earth outline, not official figures. Antarctica excluded. About 70 small territories have no outline at this resolution and are left out (around 52M addresses, mostly Hong Kong, Singapore and Mauritius). IPv4 counts come from the IP Trust geolocation database, October 2026.

The Daily Front Page 24 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Short Takes: Models, Mobility, Maps, and Meaning
article

We won't "just hang out"

by barry-cotter·▲ 170 points·282 comments·borretti.me ↗

Post image.

Detail from Wall Street, Paul Strand, 1915.

What will we do after the Singularity? The standard answer is: “we’ll just hang out”. The infinite vacation, as in the Culture novels. I think this won’t work. “Hanging out” implies:

  1. Other people exist.
  2. They want to hang out with you.
  3. You want to hang out with them.

And the post-scarcity, infinite vacation AI utopia undermines all these assumptions.

Other people exist

The social processes by which people come together and build relationships will disappear. Work, obviously, is pointless in a world of cheap superhuman intelligence. University (really all education beyond teaching people to speak) will be pointless because there’s no work to do and because growing your human capital doesn’t change your life outcomes: you get the same UBI whether you’re illiterate or a PhD.

I met a lot of my friends by writing open-source code, and participating in the community of software engineers. AI is dissolving that community by making human contributions superfluous. If Claude Code has existed when I was starting out, nobody would have cared about Austral or my other open-source projects or my technical blog posts.

As a teenager I tried to install Linux, ran into all kinds of problems, and went on the IRC chatrooms to get help. And in the process I made friends. Today, I would just ask Claude. AI disintermediates everyone, so that we no longer need each other. I still have friends, but I’m running off this pre-AI supply of friends I met through communities of practice. Young people don’t have that privilege.

What even is the point of cities in a world without work? If there’s nothing to do, there is no need to bring people together geographically.

They want to hang out with you

The BATNA to hanging out keeps getting better, cheaper, and more convenient. When people’s sensorium becomes an infinite firehose of AI-generated superstimulus, why would they hang out with anyone?

This is less about AI and more about the trajectory of consumer technology, since many people already live like this: they go to work and watch TikTok. After work, they will just watch TikTok.

You want to hang out with them

As Gregory Conti explains:

[Under] ASI this endless leisure will be passed in diminished, tiresome company, since we will lack the experiences of struggle and striving that generate interesting personalities. Our minds will have atrophied. We will have little of note to say to one another.

The people in the AI utopia will have no skills, no education, no accomplishments. We’ll be lucky if they are even literate. They will not be worth talking to, and you won’t want to hang out with them.

Maybe you and I can hang out with our existing friends. But just iterate this a bit. What about the next generation? How are they going to build meaningful relationships where the social processes that built those relationships are all in the past?

If we get radical life extension, there’s the problem of attrition over the long term: people will drift apart, drop out of society to enter the experience machine, die in accidents, or end their lives out of ennui. So your social network might be a non-renewable resource that gets exhausted over time as your pre-Singularity relationships attrite and can’t be replaced for the reasons above.

The Daily Front Page 25 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Also on the Front Page
The Daily Front Page 26 of 27
Thursday, October 29, 2026 The Daily Front No. #261029 — Colophon

That's the Front for Today

Issue No. #261029 — Thursday, October 29, 2026 — went to press 2026-10-30 at 06:37 UTC.

About This Magazine

The Daily Front is a daily digital magazine assembled from the stories that reached the front page of Hacker News on Thursday, October 29, 2026. Headlines, points, and comment counts are recorded as they stood at press time. All articles remain the property of their original authors — every piece links back to its source and its discussion thread.

How It Was Made

Fetched, cleaned, and typeset by an automated pipeline. An editor model laid out the pages and chose the highlights; a second read a handful of the day's stories and briefed the cover illustrator — 30 model calls and 285k tokens in total. Set in Jacquard 12, Playfair Display, Source Serif 4, and IBM Plex Mono, all served via Google Fonts under the SIL Open Font License.

The Cover

The cover illustration was commissioned with this prompt:

A vast mechanical brain stands open on a workbench, its heavy weight-blocks being lifted free by a coder and passed to a waiting group of developers. Deep inside, a tiny RISC-V processor runs without any external wiring, using looping folds of the brain’s own memory as RAM; a multiplication result appears as a neat stack of brass counters beside it. At the edge of the bench, a defender watches the exposed inner workings through a small inspection mirror.

Render the entire scene as one matte, brutalist plaster bas-relief: an opened mechanical-brain monolith with looping memory folds around an unwired RISC‑V core, brass-counter result reduced to orderly incised marks, and compact silhouettes showing a coder passing lifted weight-blocks to waiting developers while a defender checks the workings in a tiny mirror. Isolate it in an otherwise empty frame under one sharply edged pool of light; use a deliberate palette of chalk white, graphite, and restrained signal orange, with raw plaster grain and no other objects or ornament.

Absolutely no text, letters, numbers, readable symbols, or logos anywhere in the image. Keep the main image subject primarily below the upper 10% of the composition, where a title may be overlaid; the scene may extend naturally underneath that title area.

Production Ledger

StageModelCallsTokens InTokens Out
extractgpt-5.6-luna 26 176,617 83,405
layoutgpt-5.6-terra 1 18,782 2,791
covergpt-6-luna 2 1,622 636
covergpt-image-2.5-flare 1 263 1,372

The Publisher

Published by Johnny.

Support the Press

If The Daily Front brightens your morning, consider supporting its publisher.

Credits & Contact

All content — articles, posts, comments, and the images within them — belongs to its original authors and is reproduced here to point readers back to the source. Full credit goes to those creators; every item links to its original and its Hacker News discussion.

If you are an author and would like your content removed from an issue, write to hi@johnnys.page and it will be taken down.

Feedback is always welcome at the same address: hi@johnnys.page.

Credit where credit is due.

Every page of this issue began as someone else's work — these are the original sources, linked in full.

  1. We're releasing the weights of Mistral Large 4 by kuberwastaken — mistral.ai·HN discussion ↗
  2. Qwenputer: A functioning, deterministic RISC-V CPU inside Qwen3.5 by csmantle — divagr.com·HN discussion ↗
  3. Claude Code regularly sends each background agent’s transcript to its model by NikZaal — gist.github.com·HN discussion ↗
  4. LLM Voice by ibobev — martinfowler.com·HN discussion ↗
  5. Google Search is now less than half of Alphabet’s revenue by hubraumhugo — kadoa.com·HN discussion ↗
  6. H.264 Is Magic (2016) by ea016 — sidbala.com·HN discussion ↗
  7. Zero click, silent, remote Android DoS by MarkBlah — smsofdeath.com·HN discussion ↗
  8. Alleged Chinese spy had 'close relationship' with Nvidia boss Jensen Huang by mgh2 — nypost.com·HN discussion ↗
  9. Chained PHP2Shell exploit roots 25 servers, including US Government servers by 882542F3884314B — dreamgroup.com·HN discussion ↗
  10. The US added a record 20.2 GWh of battery storage in just 3 months by ljf — electrek.co·HN discussion ↗
  11. Hackers expose the identities of more than 40k DHS employees by firefax — text.npr.org·HN discussion ↗
  12. We ran AI agent swarms in Minecraft and Mindustry by sandslash — labs.ycombinator.com·HN discussion ↗
  13. Forging a Microsoft Edge Full Chain with Logic Bugs Only by austinallegro — blog.orange.tw·HN discussion ↗
  14. A tiny world model running games on a Raspberry Pi Pico 2 W by airinei — github.com·HN discussion ↗
  15. What we know so far about Spain train crash by ZeljkoS — bbc.com·HN discussion ↗
  16. Tomáš Mikolov awarded the Medal of Merit by the President of the Czech Republic by armcat — vut.cz·HN discussion ↗
  17. Zombie stats: Where the numbers AI quotes come from by mektrik — trakkr.ai·HN discussion ↗
  18. Manifestos, Fear, and 'Loser Thinking': Inside Proton's AI Reckoning by Frieren — 404media.co·HN discussion ↗
  19. Grace Blackwell needs a new scheduler: 27% more usable GPUs from the same racks by wondersky — skypilot.ai·HN discussion ↗
  20. Perspectiva Kogui: A message on artificial intelligence from the Kogui people by andreisag — sonidoselva.com·HN discussion ↗
  21. Gemini 4 Carbon is the new #1 on the Artificial Analysis Intelligence Index v5 by theHocineSaad — artificialanalysis.ai·HN discussion ↗
  22. I went to Mexico to test-drive the cars Americans can’t buy by bookofjoe — washingtonpost.com·HN discussion ↗
  23. If IPv4 were land by rokostik — iptrust.co·HN discussion ↗
  24. We won't "just hang out" by barry-cotter — borretti.me·HN discussion ↗
  25. Patrick Stewart has died by j4mie — nytimes.com·HN discussion ↗
  26. Binance-hacker-1029 – $5.6B stolen from Binance by Tiberium — arkm.com·HN discussion ↗
  27. DoorDash to acquire Instacart by WalterSobchak — about.doordash.com·HN discussion ↗
  28. ‘You Are Done’: The letter sent to King by the F.B.I (2014) by surprisetalk — nytimes.com·HN discussion ↗
  29. How Google determines the names for bodies of water in Google Earth (2008) by terminalbraid — publicpolicy.googleblog.com·HN discussion ↗
  30. NetBSD adds a new text editor called atto by luke8086 — mastodon.sdf.org·HN discussion ↗

Browse all issues in the archive →