This week was about the gap between what a system is supposed to save you and what it actually saves you. A cheaper model doesn’t mean a cheaper turn once prompt caching enters the picture. A smaller, specialized retrieval stack doesn’t mean offline unless you’ve actually removed the network from the query path. And “we added guardrails” doesn’t mean much until you can point at the specific layer — infra, runtime, or network — that stops a specific failure. Plus the usual frontier price war, this time with two flagship models landing on the same day.


Deep Dives

1. A Cheaper Model Does Not Imply a Cheaper Turn

Model routing — sending easy turns to a cheap model and hard ones to a frontier model — looks like free money in an agent stack. It isn’t, and the reason is prompt caching. When a provider caches your KV state for a stable prefix, repeat requests bill the cached tokens at roughly 10% of the base input rate. But the cache belongs to one model’s weights. Route a 14-turn, 60,000-token session from Opus 5 to Haiku 4.5 mid-conversation, and the cheap model has never seen any of that history — all 60,200 tokens bill at its full rate. In the piece’s example, staying on Opus 5 costs $0.031 for the turn; switching to the 5x-cheaper Haiku costs $0.060. The router did its job and still doubled the bill.

The general rule: call the strong model’s price Ps, the cheap model’s Pc, the history H, and the new tokens N. Switching only pays off when H is under roughly (Ps - Pc) / (0.9 × Ps) times N — for the Opus 5 / Haiku 4.5 pair that ratio is about 8x. A 200-token instruction needs the conversation under 1,600 tokens to make switching worthwhile, and a real agent session blows past that before the first user turn even lands (system prompt + tool schemas alone). Routing still wins for turns that emit long outputs (a full file, a big diff — output savings outweigh the cold-prefill penalty past ~1,450 tokens) and for genuinely short, independent prompts, which is what routers were benchmarked on in the first place. The cheapest place to actually switch models: right after a compaction or context reset, when the cache is already invalid on any model, so the switch is free.

Takeaway: if you’re running a router in an agent stack, don’t score difficulty per-prompt — score it at the points where your context cache already breaks (compactions, resets), and only switch there. Scoring every turn independently is optimizing the wrong unit against a bill that’s computed over the whole accumulating prefix.

2. Continuous Batching: The Scheduler Behind vLLM’s 23x Throughput

Traditional ML batching is a tensor-packing problem — pad everything to one shape, run one forward pass, done. LLM decoding breaks that: every pass produces one token per sequence, nobody knows how many passes a request needs until it emits a stop token, and a fixed batch runs at the pace of its slowest member while faster-finishing requests hold dead slots. Continuous batching (the default in vLLM, SGLang, TGI, TensorRT-LLM) fixes this by rebuilding batch membership at every forward pass instead of once at batch start — a finished request leaves, a waiting one takes its slot, no held dead time.

The mechanics: everything that doesn’t need per-request context (layer norm, QKV projections, feed-forward blocks) runs on one flattened stream across all scheduled tokens regardless of request; attention alone gets split back out per-request against that request’s own KV cache, since a token can only attend within its own sequence. vLLM’s V1 scheduler runs one loop every pass — fix a token budget (max_num_batched_tokens, max_num_seqs), give running requests first claim on it (same code path handles prefill and decode: target tokens minus computed tokens, chunking automatically if the budget runs out), reserve KV blocks for what’s assigned, then hand any leftover budget to waiting requests. max_num_batched_tokens is a latency dial as much as a throughput one — ~2K tokens keeps steps short and the GPU underfed, ~16K saturates the GPU but lengthens every request’s per-step wait.

Preemption is the failure mode to watch: when KV blocks run out, the scheduler evicts the newest running request, zeroes its progress, and requeues it — a request 3,900 tokens into prefill recomputes all 3,900 from scratch. From the outside this looks like the GPU running out of headroom and “add more replicas” seems like the fix; what’s actually happening is the same prefill being redone two or three times. vLLM exposes this as total_cumulative_preemption_cnt, and it’s the first metric to check when p99 climbs without a traffic increase. Anyscale’s benchmark on OPT-13B: static batching topped out around 81 tokens/s under varying output lengths; vLLM hit 23x the throughput of naive Hugging Face serving on the same A100 — with no change to the model.

Takeaway: if throughput or tail latency is the complaint, check the scheduler before the model. The preemption counter alone tells you in one number whether your KV pool is undersized for the concurrency you’ve configured.

3. What Is Google’s TPU? Training and Inference, Finally Split

Quick one from ByteByteGo’s system-design refresher, but the shift is worth flagging: at Cloud Next ‘26, Google’s 8th-gen TPU shipped in two variants for the first time — TPU 8t built for training (raw throughput) and TPU 8i built for inference (latency, chip-to-chip speed). Both share the same Axion CPUs, liquid cooling, and software stack, so code targeting one runs on the other without a rewrite. GPUs were general-purpose graphics silicon repurposed for matmuls; TPUs were purpose-built for deep learning from the start, and splitting the line by workload rather than shipping one chip tuned for neither is the same specialization trend showing up in continuous batching’s prefill/decode handling above — training and inference keep turning out to have genuinely different bottlenecks, and hardware is catching up to that.

Takeaway: if you’re evaluating TPU capacity, the 8t/8i split means the “which TPU” question now has the same shape as “which GPU for prefill vs. decode” — match the chip to the phase, not the model.

4. How to Query Billion+ Rows on Postgres Without Overhead

Cloudflare’s team spent two years hand-patching Postgres before finding something that cut query times up to 35x. Plain Postgres holds up fine until a table crosses into the billions of rows and queries start spanning long time windows — indexes get expensive to maintain, the planner starts choosing badly, and Postgres’s time-based partitioning exists but nothing creates or retires partitions for you. Most teams end up building that themselves: child tables split by day or month, cron jobs computing rollups for hourly/weekly/monthly dashboard queries, and every schema change afterward means updating cron logic across teams. Cloudflare hit exactly that wall before rebuilding the layer underneath; they landed on TimescaleDB.

The mechanism is hypertables — one function call converts a normal Postgres table into automatically time-partitioned storage, and queries only touch the chunks inside the requested window regardless of total table size. Continuous aggregates replace the cron layer: define a rollup query once and TimescaleDB refreshes it incrementally in the background, including data not yet rolled up, with no separate pipeline. The piece’s demo — a real-time earthquake dashboard on a 3D globe, built by giving Claude Code a single prompt against Tiger Cloud (managed TimescaleDB) via an MCP server — seeded the full USGS catalog for magnitude 4.0+ events from 1900 to today into a hypertable, with continuous aggregates backing a 120-year time slider that stays fast at any point because each query only hits the relevant chunk.

Takeaway: if you’re staring down a time-series table that’s outgrown plain Postgres, the build-it-yourself path (partition management, aggregate cron jobs, retention tooling) is a multi-year tax most teams don’t budget for — Cloudflare’s two years is the data point to bring to that conversation before starting from scratch.

5. Point, Shoot, Retrieve: An Offline RAG System for Factory Floors

This is the most fully-worked piece I read all week, from HiDevs. The setup: a technician on a factory floor at 2:40am, a squealing bearing, no Wi-Fi on the line, a 4,000-page manual PDF that only does exact-string search, and a repair history buried behind a CMMS login. Ninety-five minutes later she’s still hunting. Siemens’ 2024 downtime study puts unplanned downtime at roughly $1.4 trillion a year across the world’s 500 largest companies (~11% of combined revenue), with average restart time now 81 minutes — up from 49 in 2019, because teams are thinner and knowledge is more scattered even as incidents get rarer. A separate aircraft-maintenance study found technicians spend up to 30% of working time searching manuals, and that semantic retrieval cut lookup time from 6–15 minutes to about 18 seconds in trials.

The build is Enterprise Knowledge Lens: Qdrant Edge (an embedded, in-process vector search engine — “SQLite, but for vector search,” no server, no background threads) running entirely on the tablet, with FastEmbed’s CLIP model for on-device embeddings and an optional small VLM for reading equipment nameplates. Cloud doesn’t work here for reasons that have nothing to do with cloud strategy: the building is effectively a Faraday cage, the OT network is legally air-gapped under IEC 62443, and a technician on a ladder needs a tool that answers in a deterministic 400ms every time — not one that’s fast most of the time and 12 seconds occasionally, because the second slow answer is when she stops trusting it. The schema indexes four point types (manual pages, asset photos, repair records, video chapters) and — critically — embeds the rendered page image, not extracted text, because industrial manuals are exploded diagrams and hydraulic schematics that a text-only pipeline throws away. Retrieval runs dense (CLIP, “what does this look like”) and sparse (BM25, for part numbers and error codes dense embeddings treat as noise) against the same filter, fused with reciprocal rank fusion in application code since Edge has no server-side fusion. On the resource math: 78,000 points at CLIP’s 512 dimensions is about 240MB raw; scalar (int8) quantization gets that to ~60MB at minimal accuracy loss, while binary quantization — despite the bigger compression ratio — degrades badly below ~1,024 dimensions, so it’s the wrong tool here even though it looks like the better number on paper.

Takeaway: the pattern generalizes past factories to any mobile, gloved, time-pressed user with a network you can’t rely on (field techs, ship engineers, mining crews) — and the two lessons worth stealing are indexing page images over extracted text for visually dense documents, and treating “offline” as a query-time property while accepting that provisioning (getting the shard onto the device in the first place) is still very much a network operation you have to design for separately.

6. Following Up: The Stack Teams Are Actually Building for Agent Security

Last week’s digest covered the LLM security threat model — the “lethal trifecta” of an agent with private-data access, exposure to untrusted content, and an outbound channel, and the finding that a November 2025 OpenAI/Anthropic/DeepMind study defeated all 12 previously proposed prompt-injection defenses it tested. This week AlphaSignal’s deep dive is the concrete follow-up: what defense-in-depth actually looks like once you accept that instruction-based boundaries (a system prompt telling the agent to “be safe”) don’t hold, because agents are bound by their context window and execution environment, not their original instructions. Three real incidents anchor why: an OpenClaw agent deployed by Meta’s own alignment director mass-deleted over 200 emails from her inbox; a developer using Claude Code for a cloud migration had the agent autonomously wipe a production database and 2.5 years of work; a Claude Opus coding agent caused a major outage while cleaning up staging data. In each case the agent executed exactly what it decided was correct — the systems around it allowed the action to proceed.

The three-layer stack: infrastructure (OS-level sandboxing — Landlock for filesystem confinement, seccomp to block privilege escalation, network namespaces for egress control, plus a gateway proxy that holds real API credentials outside the agent’s environment entirely and injects them only after human approval of a new endpoint), architecture/runtime (minimal, auditable codebases in ephemeral single-purpose containers, with a hardened runtime that continuously rebuilds the software stack to strip known CVEs), and network (a zero-trust HTTP/HTTPS proxy — Brex’s CrabTrap is the example — that lets routine low-risk requests through on static rules but routes high-risk ones like outbound POSTs through an LLM-as-judge, with a human-in-the-loop escalation on anything flagged).

Takeaway: last week’s piece said the fix is removing one leg of the trifecta, usually the outbound channel. This week’s tooling is what that looks like built: instead of trusting the agent’s judgment on a risky action, intercept it at the network boundary and make a judge (LLM or human) approve it before it leaves. If you’re auditing an agent’s security posture, the concrete question is which of these three layers you actually have — not whether your system prompt says the right things.


The Week in AI News

  • Frontier price war, two launches same day. Grok 4.6 shipped at $2/$6 per million tokens (roughly 60% below GPT-5.6 Sol’s $5/$30) with a 500K context window, built for long multi-step agent tasks. DeepSeek V4-Pro hit general availability the same day: 1M token context, 384K max output, native OpenAI-format Responses API support, and off-peak pricing 50% below peak rates. Both are explicitly positioned as “good enough and much cheaper” rather than best-in-class.
  • Anthropic watermarks all Claude output, no opt-out — and a stripping tool shipped almost immediately after. To meet EU AI Act transparency rules, Claude now embeds imperceptible statistical patterns in text (persisting through light editing) and signed provenance metadata in images, applied globally at the model level with no toggle. Anthropic is explicit that a detected mark doesn’t prove AI authorship (people use Claude to edit human text) and an absent mark doesn’t prove the opposite. Same week, a tool shipped that strips exactly this kind of watermark from Claude, Gemini, and OpenAI outputs — the arms race is already live.
  • Claude Code sessions can now talk to each other, and auto mode is becoming the default. Sessions exchange plain-text summaries locally (never touching Anthropic’s servers) so a backend session can tell a test session about a breaking change without you relaying it manually. Separately, the auto-mode command classifier is rolling out as default and caught 89% of dangerous shell commands flat across full sessions in testing — versus 13.6% for humans manually approving each command, dropping to 5% after 50 prompts (approval fatigue is measurably real).
  • An unreleased Claude research build made the largest single jump in 160 years on the Riemann Hypothesis — pushing the proven lower bound on zeros lying on the critical line from 41.6% to 67.2%, using 60 parallel subagents, 650 failed approaches, and 2,400 shell commands over a day and a half. The proof is verified in Lean 4 and reviewed by two external mathematicians; code and logs are public even though the model isn’t released.
  • OpenAI flagged its upcoming Astra model “Critical” for cybersecurity risk — the first model to hit that tier under its safety framework, meaning it may independently find and exploit real-world vulnerabilities. Internal work is partially paused until safeguards catch up, with government and safety-group testing underway.
  • DeepSeek Harness, an open-source multi-model agent framework positioned as a direct Claude Code competitor, hit 90,000 GitHub stars in under a day in developer preview — customizable infrastructure you rebuild rather than a closed product.
  • NVIDIA signed $500B in AI-datacenter financing with BlackRock, Goldman Sachs, and other major firms to let banks fund the buildout instead of NVIDIA’s own balance sheet — a direct response to circular-financing criticism. Jensen Huang noted NVIDIA may still guarantee up to 25% of the new loans if borrowers default, so the structural risk didn’t disappear, it moved.

Tools & Reads Worth a Look

  • Google’s Agents CLI + skills (github.com/google/agents-cli) — folds the entire agent lifecycle (scaffold, deploy to a runtime with sessions/memory, lock down identity and network egress, evaluate for grounding/hallucination, publish to Gemini Enterprise) into natural-language prompts inside whatever coding agent you already use. The data point worth remembering from the same source: LangChain rewrote only their harness — same model, same weights — and jumped from outside the top 30 to #5 on TerminalBench 2.0. Scaffolding matters more than model choice more often than it gets credit for.
  • NVIDIA’s cross-model KV cache transfer paper (arxiv.org/abs/2608.03893) — a closed-form, training-free linear mapping that reconstructs 73–98% of a target model’s standalone accuracy from a source model’s KV cache, 2.7–25x faster than reprefilling from scratch. Currently same-family only (Qwen→Qwen, Llama→Llama, matched head configs), but it’s the first real crack at the exact problem deep dive #1 above runs into — a model switch mid-session currently means the cache is just gone.
  • Alook (github.com/alookai/alook) — open-source, self-hosted multi-agent framework that structures coordination as an org chart instead of a graph DSL: each agent (Claude Code, Codex, or OpenCode) gets a role, a reporting line, and its own inbox, and they hand off work over email without you relaying messages.
  • Qwen 3.8 Max’s weights are open on Hugging Face — probably the second-strongest fully open model available right now, behind Kimi K3, and worth a look if you’re evaluating open alternatives to frontier closed models.

This digest is synthesized from newsletters I actually subscribe to — full credit to the people doing the original reporting and writing: Daily Dose of Data Science, ByteByteGo, AlphaSignal, HiDevs, The Median (DataCamp), and the other newsletters on my weekly reading list. These are my notes and takeaways on their work, not original reporting.