<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: machinelearning</title>
    <description>The latest articles tagged 'machinelearning' on DEV Community.</description>
    <link>https://dev.to/t/machinelearning</link>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tag/machinelearning"/>
    <language>en</language>
    <item>
      <title>The Model That Doesn't Refuse: Mistral's 1.05T Bet on Open Security</title>
      <dc:creator>Daniel Sam Pete Thiyagu</dc:creator>
      <pubDate>Wed, 14 Oct 2026 16:07:39 +0000</pubDate>
      <link>https://dev.to/danielsamfdo/the-model-that-doesnt-refuse-mistrals-105t-bet-on-open-security-3joe</link>
      <guid>https://dev.to/danielsamfdo/the-model-that-doesnt-refuse-mistrals-105t-bet-on-open-security-3joe</guid>
      <description>&lt;p&gt;&lt;em&gt;On October 6, Mistral AI previewed Large 4 — nicknamed "le Chonk" — a trillion-parameter, natively multimodal mixture-of-experts model trained on 3,800 Grace Blackwell GPUs in Europe. Only 52B parameters wake up per token. The weights ship by the end of October. The story isn't the size — it's the pitch: security work that closed models refuse.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The week the open frontier got French
&lt;/h2&gt;

&lt;p&gt;October's open-weight race has a rhythm: &lt;strong&gt;Reflection Beam&lt;/strong&gt; landed October 5 (501B total, 23B active), and one day later &lt;strong&gt;Mistral Large 4&lt;/strong&gt; previewed at &lt;strong&gt;1.05 trillion total parameters with 52B active&lt;/strong&gt; — the largest open-weight model announced in Europe, trained end-to-end in Mistral's own European datacenters. The API preview is live now; the weights (license still unpublished) are promised by end of October.&lt;/p&gt;

&lt;p&gt;The headline numbers, from Mistral's model card:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Spec&lt;/th&gt;
&lt;th&gt;Mistral Large 4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;Granular mixture-of-experts, hybrid instruct + reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parameters&lt;/td&gt;
&lt;td&gt;1.05T total, 52B active, 1.6B vision encoder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modalities&lt;/td&gt;
&lt;td&gt;Text + image in, text out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;1M on the model card; 524K on the served preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning&lt;/td&gt;
&lt;td&gt;Adjustable &lt;code&gt;reasoning_effort&lt;/code&gt; (preview: &lt;code&gt;none&lt;/code&gt; and &lt;code&gt;high&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Training&lt;/td&gt;
&lt;td&gt;From scratch on 3,800 NVIDIA Grace Blackwell GPUs, 160+ languages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing&lt;/td&gt;
&lt;td&gt;$1.36/$4.18 per 1M in/out at list; 50% launch sale → $0.68/$2.09 (no end date given)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One wrinkle the launch-day coverage caught: several outlets first reported 49B active; the model card now says 52B and 1.05T total. Use the card's numbers — and plan around 524K context until Mistral's own endpoint proves 1M.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu385j2nsevxd8q4ym4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu385j2nsevxd8q4ym4x.png" alt="Stored vs active parameters across October's open-weight models" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ELI5: why "52B awake" decides the bill, not the "1.05T" label
&lt;/h2&gt;

&lt;p&gt;A mixture-of-experts model is a stadium full of specialists with a bouncer at the door. For each token, a router picks which few experts handle it; the rest sleep. So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The 1.05T sets memory, not compute.&lt;/strong&gt; You must hold the whole model: roughly &lt;strong&gt;1 TB at 8-bit precision, ~525 GB at 4-bit&lt;/strong&gt; — multi-GPU server hardware, not a workstation. When the weights land at month end, this number decides your hardware bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 52B sets compute and roughly the price.&lt;/strong&gt; Inference cost scales mostly with active parameters. Serving ML4 costs &lt;em&gt;like&lt;/em&gt; a ~52B model, with the knowledge capacity of a trillion-parameter one — &lt;em&gt;if&lt;/em&gt; the sparsity holds up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last clause matters. Sparse MoE works when the router keeps picking the right experts. A 4.95% activation ratio is standard territory now (Beam: 4.59%, Kimi K3: ~4.9%) — the industry converged on "about 5% of the brain awake" as the price/performance sweet spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works: the three numbers that decide whether you care
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The coding-agents number: 61.7% on DeepSWE v1.1.&lt;/strong&gt; That edges GLM-5.3's 61%. But the honest comparison is the human one: on Surge AI's blind coding ratings (1–5), ML4 scored &lt;strong&gt;3.74&lt;/strong&gt; — ahead of Kimi K3 (3.59) and GLM-5.3 (3.60), but nearly half a point behind &lt;strong&gt;Claude Opus 5 at 4.22&lt;/strong&gt;. Vendor-selected numbers all; still, the gap to closed frontier is visible in Mistral's own chart. AutomationBench (657 business workflows): &lt;strong&gt;59.9%&lt;/strong&gt;, ahead of the Chinese open models listed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The vision number: 42% on Dense 200 (visual grounding).&lt;/strong&gt; Visual grounding — pointing at &lt;em&gt;which pixels&lt;/em&gt; answer the question — is ML4's best relative claim: it edges GPT-6 Astra's 41%. For documents, charts, and engineering drawings, this is the row to watch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The security number: 82% on the reproduce-and-patch test in the Artificial Analysis Cyber Index — the highest of any model, where Mistral says Claude Opus 5.5 and GPT-6 Astra score near zero &lt;em&gt;because they refuse the task&lt;/em&gt;.&lt;/strong&gt; Cybench (40 CTF-style challenges): 93%. Lakera B3 attack resistance: 93.3%, the highest Mistral measured.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9zhmzypsc9g2m29thkhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9zhmzypsc9g2m29thkhr.png" alt="Mistral's vendor-selected headline benchmarks and their stated rivals" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The real story: "refusals are a security risk"
&lt;/h2&gt;

&lt;p&gt;Read the cyber headline carefully, because Mistral's argument is genuinely interesting — and genuinely debatable:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Losing access to a tool partway through an incident can itself become a security risk. Self-hosted open weights let organizations run security work under their own policies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The thesis: closed models' provider-level refusals can block &lt;em&gt;legitimate&lt;/em&gt; vulnerability research and incident response. Mistral is red-teaming ML4 with cybersecurity leaders, vetted partners, and &lt;strong&gt;state authorities&lt;/strong&gt; — who, Mistral says, get the model "with reduced moderation and expanded cyber capabilities." The offensive-use question is obvious (one HN commenter flagged it immediately), and Mistral's answer is that the work happens either way; the only question is whose hands the tool is in.&lt;/p&gt;

&lt;p&gt;The honest reading of the 82%: part of that lead comes from &lt;em&gt;refusing less&lt;/em&gt;, not &lt;em&gt;failing less&lt;/em&gt;. Treat it as a capability-plus-policy score, not a pure capability score.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3x7octbzm24ccgy5sfv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3x7octbzm24ccgy5sfv8.png" alt="The cyber pitch: ML4's lead comes partly from refusing less, not failing less" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The independent check (Artificial Analysis, measured on the preview API): &lt;strong&gt;Intelligence Index 38&lt;/strong&gt; — above the median 26 for its price class, but Simon Willison's verdict is blunt: Mistral is "about 6 months behind the frontier," a big jump from Large 3 (which scored 9). Speed: &lt;strong&gt;116.1 tokens/s&lt;/strong&gt;, well above the 74.6 median — genuinely fast. The tax: &lt;strong&gt;verbosity&lt;/strong&gt;. AA measured ML4 producing ~200M tokens on the index versus an 81M median — about &lt;strong&gt;2.5× the output tokens&lt;/strong&gt;. Per-token prices lie when the model writes 2.5× as much.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F55ljy45ymr4uvfppbxfe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F55ljy45ymr4uvfppbxfe.png" alt="Pricing: the 50% launch sale against Mistral's own lineup" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The economics: a sale before the weights commoditize the model
&lt;/h2&gt;

&lt;p&gt;ML4's list sits just under Mistral-hosted GLM-5.3 ($1.40/$4.40); the sale is half that. But watch what happened to Kimi K3 after &lt;em&gt;its&lt;/em&gt; weights shipped: AI Gateway went from one host to &lt;strong&gt;17 providers&lt;/strong&gt;, input prices falling from $3 to $0.45. Once ML4's weights land, third-party hosts will undercut Mistral's own API on the same model — Mistral's 50% sale looks partly like anchoring the reference price &lt;em&gt;before&lt;/em&gt; the competition arrives.&lt;/p&gt;

&lt;h2&gt;
  
  
  The weights-day checklist (end of October)
&lt;/h2&gt;

&lt;p&gt;When the checkpoint drops, check in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The license&lt;/strong&gt; — Apache 2.0, a Mistral research license, or custom decides commercial use, fine-tuning, and redistribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which build shipped&lt;/strong&gt; — co-founder Guillaume Lample says the RL run is still going; the downloadable "final version" may differ from today's preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Precision and size&lt;/strong&gt; — ~1 TB at 8-bit. Plan the hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day-one serving&lt;/strong&gt; — vLLM / SGLang / llama.cpp support for the architecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context&lt;/strong&gt; — does the open checkpoint honor 1M, or the 524K the preview serves?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independent evals&lt;/strong&gt; — re-run your own repo tasks; wait for Artificial Analysis to re-score.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;1.05T total / 52B active&lt;/strong&gt;: memory scales with the big number, compute with the small one. That's the entire MoE bargain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best open-weight model built outside China on vendor charts&lt;/strong&gt; — but every headline number is vendor-selected. Independent signal says ~6 months behind closed frontier, and human evals still favor Opus-class models for coding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The security pitch is the real differentiator&lt;/strong&gt;: 82% on reproduce-and-patch, with the explicit thesis that refusals block legitimate defense. Whether that's responsible or reckless is the debate October should have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget at list price, expect verbosity&lt;/strong&gt;: 2.5× median output tokens erases per-token savings fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The event isn't the preview — it's month end.&lt;/strong&gt; License, build, precision, and host competition decide what "open" actually costs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Benchmark figures are Mistral's self-reported selections (Oct 6, 2026); independent figures from Artificial Analysis and Simon Willison's notes, as collated October 9, 2026. Treat vendor numbers as the opening bid, not the verdict.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Companion notebook:&lt;/strong&gt; the runnable tutorial for this post — &lt;a href="https://danielsamfdo.github.io/blog/assets/ml4_open_security.ipynb" rel="noopener noreferrer"&gt;download it here&lt;/a&gt; (open in Colab/Jupyter).&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>opensource</category>
      <category>technews</category>
    </item>
    <item>
      <title>YuE2: How Symbolic Planning Brings Transparency and Control to AI Music Generation</title>
      <dc:creator>Prabhakar Chaudhary</dc:creator>
      <pubDate>Wed, 14 Oct 2026 16:04:51 +0000</pubDate>
      <link>https://dev.to/prabhakar_chaudhary_7afe4/yue2-how-symbolic-planning-brings-transparency-and-control-to-ai-music-generation-2aj0</link>
      <guid>https://dev.to/prabhakar_chaudhary_7afe4/yue2-how-symbolic-planning-brings-transparency-and-control-to-ai-music-generation-2aj0</guid>
      <description>&lt;h1&gt;
  
  
  YuE2: How Symbolic Planning Brings Transparency and Control to AI Music Generation
&lt;/h1&gt;

&lt;p&gt;Music generation models have made rapid progress, but most treat composition as a black box: you provide a text prompt, and audio emerges from a dense neural process that no one—including the model—can inspect or edit mid-flight. YuE2, introduced in a &lt;a href="https://arxiv.org/abs/2609.33757" rel="noopener noreferrer"&gt;technical report from the multimodal-art-projection team&lt;/a&gt; published in late September 2026, takes a different approach. It generates a readable musical score first, then renders that score into audio. The result is a system that is both more controllable and, according to expert listening evaluations, more musical.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Idea: Write the Score Before Playing the Notes
&lt;/h2&gt;

&lt;p&gt;YuE2's central contribution is what the authors call &lt;strong&gt;symbolic planning&lt;/strong&gt; — a staged generation process that mirrors how a human composer works. Rather than mapping a text prompt directly to audio tokens, the model first writes a structured score in &lt;a href="https://abcnotation.com/" rel="noopener noreferrer"&gt;ABC notation&lt;/a&gt;, a compact text format that encodes melody, chords, key, meter, tempo, and song structure. Only after this symbolic plan exists does the model proceed to audio synthesis.&lt;/p&gt;

&lt;p&gt;This matters for two reasons. First, the symbolic plan acts as a commitment device: the model cannot contradict itself mid-song because the harmonic and melodic structure is already fixed. Second, the plan is human-readable and machine-editable, which opens the door to a class of interactions that audio-only models cannot support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture: AR–NAR Mixture-of-Transformers
&lt;/h2&gt;

&lt;p&gt;Under the hood, YuE2 uses a 28-layer &lt;strong&gt;Mixture-of-Transformers (MoT)&lt;/strong&gt; architecture that runs two expert types — autoregressive (AR) and non-autoregressive (NAR) — side by side, sharing attention computation but using separate normalization, projections, and feed-forward layers.&lt;/p&gt;

&lt;p&gt;Generation is factorized into three representations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Symbolic tokens (s):&lt;/strong&gt; A sparse sequence encoding melody, chords, key, meter, tempo, and form — the ABC score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic music tokens (c):&lt;/strong&gt; A dense 25-Hz sequence that bridges the abstract score and the acoustic signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous acoustic latents (z):&lt;/strong&gt; A 25-Hz sequence decoded into 48-kHz stereo audio by a variational autoencoder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AR component handles the symbolic and semantic sequences causally (left-to-right). The NAR component realizes the acoustic sequence via &lt;strong&gt;bidirectional flow matching&lt;/strong&gt;, which allows it to condition on the full symbolic context when generating audio. The joint probability is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p(s, c, z | y) = p_AR(s, c | y) × p_NAR(z | y, s, c)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;y&lt;/code&gt; is the text prompt (lyrics, style description, or both).&lt;/p&gt;

&lt;h2&gt;
  
  
  Training Without Aligned Scores: MERT2 and SheetSage2
&lt;/h2&gt;

&lt;p&gt;A practical challenge for this approach is that most audio training data does not come with aligned symbolic annotations. The team addressed this by building two auxiliary models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SheetSage2&lt;/strong&gt; performs full-song lead-sheet transcription, converting audio recordings into ABC notation. It provides the symbolic supervision target &lt;code&gt;s&lt;/code&gt; during training, allowing the model to learn from vast amounts of existing music without requiring hand-annotated scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MERT2&lt;/strong&gt; is a multi-view music representation encoder that supplies the semantic tokens &lt;code&gt;c&lt;/code&gt;. It achieves state-of-the-art results on 14 of 15 tasks in the &lt;a href="https://arxiv.org/abs/2306.10548" rel="noopener noreferrer"&gt;MARBLE music understanding benchmark&lt;/a&gt;, making it a strong foundation for the semantic layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both models are released alongside YuE2, which means the full pipeline — transcription, semantic encoding, and generation — is available for researchers to build on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Symbolic Planning Enables
&lt;/h2&gt;

&lt;p&gt;The ABC score is not just an internal implementation detail; it is an explicit output that users and downstream systems can interact with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic music editing:&lt;/strong&gt; Because the score is text, a language model can translate natural-language feedback ("make the chorus more upbeat" or "change the key to D minor") into specific score revisions. YuE2 then re-renders the modified score into audio, preserving the unedited sections. This creates a genuine edit loop rather than a generate-and-discard workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero-shot covers:&lt;/strong&gt; SheetSage2 can transcribe a reference recording into ABC notation. YuE2 can then apply a new style prompt while preserving the melodic structure, producing a stylistically transformed cover without any fine-tuning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Targeted local edits:&lt;/strong&gt; Because the score is structured, a user can modify a single measure — changing a chord voicing or a melodic phrase — and re-render only the affected section. Audio-only models have no equivalent mechanism.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance: Competitive with Proprietary Systems
&lt;/h2&gt;

&lt;p&gt;On the &lt;a href="https://arxiv.org/abs/2609.33757" rel="noopener noreferrer"&gt;WildSongBench (WSB)&lt;/a&gt; benchmark, YuE2 achieves a SongBench Global Average score of 6.73, the highest among public baselines at the time of the report. With a best-of-8 selection strategy, the score rises to 6.96 — the highest observed mean across all evaluated systems, including proprietary ones.&lt;/p&gt;

&lt;p&gt;In expert listening evaluations, participants preferred the symbolic-planning output over non-planned generation from the same checkpoint at a rate of 49.3% vs. 34.6% (with the remainder expressing no preference). When compared directly against Suno v5, the best-of-8 configuration produced nearly balanced preferences — a notable result for an open-weight system competing against a closed commercial product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practitioner Implications
&lt;/h2&gt;

&lt;p&gt;For developers building music-adjacent applications, YuE2 offers something that most generative audio models do not: a structured intermediate representation that can be inspected, validated, and modified programmatically. If you need to enforce harmonic constraints, ensure a specific song structure, or integrate user feedback into a generation loop, the ABC score gives you a natural intervention point.&lt;/p&gt;

&lt;p&gt;The model weights, code, and both auxiliary models (MERT2 and SheetSage2) are &lt;a href="https://github.com/multimodal-art-projection/YuE" rel="noopener noreferrer"&gt;available on GitHub&lt;/a&gt; and &lt;a href="https://huggingface.co/papers/2609.33757" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt;. The project page at &lt;a href="https://map-yue2.github.io/" rel="noopener noreferrer"&gt;map-yue2.github.io&lt;/a&gt; includes audio examples that demonstrate the cover and editing workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;YuE2's contribution is not just a better music generator — it is a demonstration that adding an explicit, inspectable intermediate representation to a generative pipeline can improve both quality and controllability simultaneously. The symbolic planning approach trades some generation speed for a system that composers, developers, and AI agents can actually work with, rather than just prompt and hope. As music generation matures from a novelty into a production tool, that kind of structured transparency is likely to matter more, not less.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Buy the bottleneck, not the spec sheet</title>
      <dc:creator>Yunus Emre Vurgun</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:46:39 +0000</pubDate>
      <link>https://dev.to/yunusemrevurgun/buy-the-bottleneck-not-the-spec-sheet-560c</link>
      <guid>https://dev.to/yunusemrevurgun/buy-the-bottleneck-not-the-spec-sheet-560c</guid>
      <description>&lt;h1&gt;
  
  
  Buy the Bottleneck, Not the Spec Sheet
&lt;/h1&gt;

&lt;p&gt;Most hardware regret has the same shape. Someone buys the part with the biggest number on the box (more cores, a newer GPU, a faster SSD) and the machine still feels slow at the one job they bought it for. The money went to a component that was never the constraint.&lt;/p&gt;

&lt;p&gt;The fix isn't memorising this year's product lineup. Product lineups change every twelve months; the reasoning behind a good purchase doesn't. This article walks through a five-step method you can reuse for a laptop, a developer workstation, a small server, or a homelab box:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workload → constraints → bottlenecks → architecture → hardware decision.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No brand recommendations, no "best GPU of 2026" lists. Just the questions that keep you from paying for the wrong thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Write down the workload, in verbs
&lt;/h2&gt;

&lt;p&gt;"I need a powerful machine" is not a workload. A workload is a list of things the machine will &lt;em&gt;do&lt;/em&gt;, with rough sizes and how often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Compile a ~2 million line C++ project, 10–20 times a day."&lt;/li&gt;
&lt;li&gt;"Run a 7–14B parameter language model locally for chat and code completion."&lt;/li&gt;
&lt;li&gt;"Host Nextcloud, a media server, and three Docker services for a family of four."&lt;/li&gt;
&lt;li&gt;"Edit 4K video, about 30 minutes of footage per week."&lt;/li&gt;
&lt;li&gt;"Run Excel models and 60 browser tabs, all day."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two details matter more than people expect:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The size of the working set.&lt;/strong&gt; How much data has to be "hot" at once? A 14B model, a 40 GB dataset, a 300 GB photo library you scroll through, a repository plus its build artifacts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What "slow" means to you.&lt;/strong&gt; Is it latency (the UI stutters, a query takes 2 seconds instead of 200 ms) or throughput (the nightly job takes 6 hours instead of 2)? Those lead to very different machines.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you only do one step of this method, do this one. Most bad purchases come from skipping it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: List the constraints before you look at parts
&lt;/h2&gt;

&lt;p&gt;Constraints are the things that aren't negotiable. They rule out options before you compare anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Budget&lt;/strong&gt;, including what you'd spend over three years (electricity and upgrades), not only the purchase price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power and heat.&lt;/strong&gt; A box that idles at 120 W in a small apartment room is a heater and a monthly bill. For an always-on server, idle power often matters more than peak power.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noise.&lt;/strong&gt; A workstation under your desk and a server in a closet have different noise budgets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical space and form factor.&lt;/strong&gt; Mini PC, tower, rack, laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgradeability.&lt;/strong&gt; Will you want more RAM or disks in two years? Soldered memory and single-slot boards close that door.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software requirements.&lt;/strong&gt; Some tools only accelerate on certain GPU vendors or need a specific instruction set or OS. Check this &lt;em&gt;before&lt;/em&gt; buying, not after.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability needs.&lt;/strong&gt; Is losing a day of work acceptable? Is ECC memory or a second disk worth it for this machine?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Write these down. When you're tempted by a part later, check it against this list first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Find the bottleneck for each workload
&lt;/h2&gt;

&lt;p&gt;Every workload is limited by one resource at a time. The trick is to identify which one, because upgrading anything else does almost nothing.&lt;/p&gt;

&lt;p&gt;Here's a practical map of common workloads to their usual first bottleneck. Treat these as starting hypotheses to verify, not laws.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Usual first bottleneck&lt;/th&gt;
&lt;th&gt;What to look at&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Large compiles (C/C++, Rust)&lt;/td&gt;
&lt;td&gt;CPU cores &lt;em&gt;and&lt;/em&gt; RAM per parallel job&lt;/td&gt;
&lt;td&gt;Core count, RAM capacity, fast SSD for build dirs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local LLM inference&lt;/td&gt;
&lt;td&gt;GPU memory (VRAM) capacity, then memory bandwidth&lt;/td&gt;
&lt;td&gt;VRAM size; on CPU/unified-memory systems, memory bandwidth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ML training&lt;/td&gt;
&lt;td&gt;GPU compute and VRAM, then data loading&lt;/td&gt;
&lt;td&gt;VRAM, GPU throughput, storage read speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Video editing&lt;/td&gt;
&lt;td&gt;GPU decode/encode support for your codec, then RAM&lt;/td&gt;
&lt;td&gt;Codec support, VRAM, RAM, scratch disk speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Databases, VMs, containers&lt;/td&gt;
&lt;td&gt;RAM capacity, then storage latency (random I/O)&lt;/td&gt;
&lt;td&gt;RAM, NVMe random I/O, not just sequential MB/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Media / file server&lt;/td&gt;
&lt;td&gt;Disk capacity and network&lt;/td&gt;
&lt;td&gt;Drive count, network speed, idle power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Office work, browsers&lt;/td&gt;
&lt;td&gt;RAM capacity and single-thread speed&lt;/td&gt;
&lt;td&gt;RAM, a decent modern CPU, any SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  How to check on the machine you already have
&lt;/h3&gt;

&lt;p&gt;You usually own a machine that runs a smaller version of the workload. Measure it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CPU-bound:&lt;/strong&gt; all cores near 100% during the slow part. Task Manager on Windows, &lt;code&gt;htop&lt;/code&gt; on Linux, Activity Monitor on macOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory-bound:&lt;/strong&gt; RAM nearly full and the system swapping. On Linux, &lt;code&gt;free -h&lt;/code&gt; and &lt;code&gt;vmstat 1&lt;/code&gt; (watch the &lt;code&gt;si&lt;/code&gt;/&lt;code&gt;so&lt;/code&gt; columns). Swapping is a strong sign that more RAM beats a faster CPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage-bound:&lt;/strong&gt; CPU mostly idle while the disk is busy. On Linux, &lt;code&gt;iostat -x 1&lt;/code&gt; shows utilisation and wait times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU-bound:&lt;/strong&gt; &lt;code&gt;nvidia-smi&lt;/code&gt; (or the vendor equivalent) shows the GPU at high utilisation or VRAM full.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network-bound:&lt;/strong&gt; transfers flat at roughly 110–118 MB/s usually means you've hit gigabit Ethernet, not your disks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ten minutes of measuring usually tells you more than an hour of reading reviews.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Do the arithmetic for the resource that matters
&lt;/h2&gt;

&lt;p&gt;Once you know the bottleneck, rough arithmetic gets you most of the way. Three examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example A: local LLMs (VRAM first)
&lt;/h3&gt;

&lt;p&gt;The memory a model's weights need is roughly:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\text{weight memory} \approx \text{parameters} \times \text{bytes per parameter}&lt;br&gt;
$$&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;16-bit weights: about 2 bytes per parameter&lt;/li&gt;
&lt;li&gt;8-bit quantisation: about 1 byte per parameter&lt;/li&gt;
&lt;li&gt;4-bit quantisation: about 0.5 bytes per parameter (a bit more in practice, because quantised formats store extra scale data)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So a 7B model is about 14 GB at 16-bit, about 7 GB at 8-bit, and roughly 4 GB at 4-bit. A 14B model at 4-bit is roughly 8 GB. On top of the weights you need room for the context (the KV cache, which grows with context length) and runtime overhead, so leave meaningful headroom. A model that &lt;em&gt;exactly&lt;/em&gt; fits will not run well with a long conversation.&lt;/p&gt;

&lt;p&gt;The second constraint is speed. When generating text, each new token has to read roughly the whole set of weights from memory, so a useful upper bound is:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\text{tokens per second} \lesssim \frac{\text{memory bandwidth}}{\text{model size in memory}}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;That's why a machine with lots of slow RAM can &lt;em&gt;load&lt;/em&gt; a big model but generate slowly, and why memory bandwidth, not core count, is the spec to compare for CPU or unified-memory inference. Real numbers come in below this ceiling; use it to compare options, not to predict exact speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example B: a compile box (cores and RAM together)
&lt;/h3&gt;

&lt;p&gt;Parallel builds scale with cores until something else runs out, usually RAM. Heavy C++ translation units can each use a gigabyte or more of memory, so a 16-core machine running 16 parallel jobs with too little RAM will start swapping, and swapping erases the benefit of the extra cores. A common rule of thumb is to budget 1–2 GB of RAM per parallel job for large C++ codebases; measure your own peak per job (watch memory during a full rebuild) and size from that.&lt;/p&gt;

&lt;p&gt;Practical consequence: for a compile box, "fewer cores and enough RAM" often beats "more cores and not quite enough RAM". A fast NVMe drive for the build directory helps incremental builds; it does little for a CPU-bound full rebuild.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example C: a home server (idle power and disks)
&lt;/h3&gt;

&lt;p&gt;An always-on server spends almost all its life idle. Estimate yearly energy:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\text{kWh per year} \approx \frac{\text{average watts} \times 8760}{1000}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;A box averaging 30 W uses about 263 kWh a year; one averaging 100 W uses about 876 kWh. Multiply by your local electricity price to see the real cost of that "cheap" used enterprise server. For many homelabs, a low-power machine plus the right number of disks beats a powerful machine that never gets used.&lt;/p&gt;

&lt;p&gt;For the disks themselves, size from data, not hope: current data × expected growth over the machine's life, plus redundancy. And keep this line taped somewhere: &lt;strong&gt;redundancy (RAID, mirrors) is not backup.&lt;/strong&gt; It protects against a disk dying, not against deletion, ransomware, or the whole box failing. A separate backup copy still matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Choose a balanced architecture, then pick parts
&lt;/h2&gt;

&lt;p&gt;Only now do you open a shop page. With a written workload, constraints, bottleneck, and rough numbers, the decision becomes "which option clears the bar for the bottleneck, inside the constraints, without overspending elsewhere?"&lt;/p&gt;

&lt;p&gt;A few balance checks before you pay:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't starve the expensive part.&lt;/strong&gt; A strong GPU with too little system RAM, or a many-core CPU with one slow disk, wastes the money you spent on the big component.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay for headroom only where growth is likely.&lt;/strong&gt; If your models or datasets grow every year, buy VRAM or RAM headroom. If your office workload hasn't changed in five years, don't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the boring limits.&lt;/strong&gt; Power supply capacity with margin, cooling for sustained load (not a 30-second benchmark), PCIe lanes and slots if you plan to add GPUs or NVMe drives, and memory channels (filling slots in the wrong pattern can cut bandwidth).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade versus replace.&lt;/strong&gt; If the measured bottleneck is a part you can swap (RAM, a disk, a GPU), upgrading is usually the better deal. If the bottleneck is the platform itself (memory bandwidth, PCIe generation, the CPU socket), adding parts to it buys little and replacement is the honest answer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A one-page checklist
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Workload written as verbs, with working-set sizes and frequency.&lt;/li&gt;
&lt;li&gt;"Slow" defined as latency or throughput.&lt;/li&gt;
&lt;li&gt;Constraints listed: budget (3-year), power/heat, noise, space, upgradeability, software, reliability.&lt;/li&gt;
&lt;li&gt;Bottleneck measured on current hardware, or hypothesised from the table above.&lt;/li&gt;
&lt;li&gt;Arithmetic done for that resource (VRAM, RAM per job, disk capacity, idle watts).&lt;/li&gt;
&lt;li&gt;Balance checks: nothing starving the main component, headroom only where growth is real, PSU/cooling/lanes/channels checked.&lt;/li&gt;
&lt;li&gt;Upgrade-vs-replace decided from the bottleneck, not from what's on sale.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why this outlasts any buying guide
&lt;/h2&gt;

&lt;p&gt;Every year brings new product names and new benchmark charts, and every year the same mistakes repeat: buying cores for a memory problem, buying a GPU for a disk problem, buying a server for a workload that a mini PC would handle at a fifth of the power. The architecture underneath (compute, memory capacity and bandwidth, storage latency and throughput, interconnects, power and heat) changes much more slowly than the spec sheets do. Understanding it is what makes the next purchase easy.&lt;/p&gt;




&lt;h3&gt;
  
  
  If you want the worksheets
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I'm Yunus Emre Vurgun, I run &lt;a href="https://hardwaretheory.net" rel="noopener noreferrer"&gt;HardwareTheory&lt;/a&gt;, and I sell the two resources below.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;&lt;a href="https://theknowledgeproject.gumroad.com/l/xxwjsu" rel="noopener noreferrer"&gt;Hardware Buying &amp;amp; System Design Toolkit&lt;/a&gt;&lt;/strong&gt; ($24) packages this same workload → constraints → bottlenecks → architecture → decision process as reusable frameworks, calculators, worksheets, checklists, and decision trees for desktops, workstations, servers, homelabs, and compute-heavy systems. It deliberately doesn't recommend specific products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://theknowledgeproject.gumroad.com/l/cjyyly" rel="noopener noreferrer"&gt;HARDWARE THEORY&lt;/a&gt;&lt;/strong&gt; ($4.99) is the background reading: how processors, memory, storage, interconnects, displays, networking, and system architecture evolved over the last twenty years, using publicly documented specifications and milestones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything in the article above works without them.&lt;/p&gt;

</description>
      <category>hardware</category>
      <category>machinelearning</category>
      <category>buying</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Most of Your LLM Calls Should Return a Label and a Probability, Not a Sentence</title>
      <dc:creator>Jason Lau</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:44:49 +0000</pubDate>
      <link>https://dev.to/jasonl888/most-of-your-llm-calls-should-return-a-label-and-a-probability-not-a-sentence-1il9</link>
      <guid>https://dev.to/jasonl888/most-of-your-llm-calls-should-return-a-label-and-a-probability-not-a-sentence-1il9</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Routing, triage, moderation and approval prompts pick an answer from a list you wrote in advance. That makes them classifiers, but they usually skip what makes a classifier safe to run: label definitions the model actually follows, a labelled test set, a probability that means something, and a threshold with an escalation path. Schema-constrained output guarantees a &lt;em&gt;valid&lt;/em&gt; label, not a right one. In a September 2026 study, typed decision models were given the same definitions with the label names swapped between them. With yes/no names, one model changed 76.9% of its decisions, against 6.5% with 0/1 names, and its ranking went from 93.8% AUC to a below-chance 23.2%. The type-error rate was 0% the whole time. The same test runs on your own prompt in an afternoon and needs no labels. Then check whether the model's confidence ranks its own errors, set the threshold from what a mistake costs, and route everything below it to a person.&lt;/p&gt;

&lt;p&gt;The ticket router had been in production for five months when the billing team asked why they kept getting password resets.&lt;/p&gt;

&lt;p&gt;It was a single LLM call. The prompt listed six queues (billing, account access, technical, sales, urgent and general), each with a one-line description, and asked for JSON with one field: &lt;code&gt;queue&lt;/code&gt;. The response was validated against a schema, so the queue name was always one of the six. The integration had never thrown an error. Latency was fine. The dashboard showed six queues filling up at plausible rates.&lt;/p&gt;

&lt;p&gt;When someone finally labelled 500 recent tickets by hand, 40 of them were in the wrong queue. That's 8%, and at 20,000 tickets a month it's about 1,600 tickets a month landing with a team that has to read them, work out they aren't theirs and pass them on. Nothing had flagged it, because nothing in the system could. Every output was a valid queue name.&lt;/p&gt;

&lt;p&gt;This example is invented, but the design is common. The fix isn't a better prompt. It's recognising what the call actually is.&lt;/p&gt;

&lt;h2&gt;
  
  
  It was a classifier the whole time
&lt;/h2&gt;

&lt;p&gt;A call with a fixed set of possible answers, known before any input arrives, is a classification problem. Ticket routing, content moderation, "does this transaction need review", "is this lead qualified", "which of these five intents is the user expressing". These are classifiers, and classification has a mature discipline that most LLM pipelines skip:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A label set with written definitions&lt;/strong&gt;, where the definition decides the answer, not the everyday meaning of the label's name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A labelled evaluation set&lt;/strong&gt; from your own traffic, big enough to measure the error rate you care about.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A score that ranks the model's errors&lt;/strong&gt;, ideally calibrated so that "0.9" means right about nine times in ten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A threshold and an escalation path&lt;/strong&gt;: above the threshold the decision goes through, below it a person decides.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The router had a version of the first item and nothing else. Its prompt returned a label and no score, so there was nothing to set a threshold on and nowhere to send the unsure cases.&lt;/p&gt;

&lt;p&gt;Structured output made this harder to see, not easier. Constraining the response to a JSON schema removes the one error you would definitely have noticed, a malformed answer, and leaves every other kind in place. In September, TypeSafe AI took the idea one step further with &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;Jev&lt;/a&gt;, a model that doesn't generate text at all. It takes a question, an input and a declared set of options, and returns a probability distribution over those options, so its answer can only ever be one of them. That's a real improvement over parsing free text. It is also a guarantee about the format of the answer, and a study published the same month shows how little that guarantee covers.&lt;/p&gt;

&lt;h2&gt;
  
  
  A valid label is not the same as a right one
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2609.26758" rel="noopener noreferrer"&gt;&lt;em&gt;Type-Safe Is Not Error-Free&lt;/em&gt;&lt;/a&gt; (Sun, Xu, Shi and Yang, Fudan University and USTC, September 2026) tested Jev and two open-weight models built the same way: Laya, built on ModernBERT, and Open-Jev, built on DeBERTa-v3. In all three, each option is a short &lt;strong&gt;name&lt;/strong&gt; plus a &lt;strong&gt;definition&lt;/strong&gt; of what the option means. For example, the name "yes" might carry the definition "A human should inspect this run", and "no" the definition "No human attention is warranted."&lt;/p&gt;

&lt;p&gt;The experiment was simple. The authors kept the question, the input, the names and the definition texts exactly the same, and only swapped which definition each name was attached to. The new pairing was written out in the input. A model that reads the definitions picks the same &lt;em&gt;definition&lt;/em&gt; in both versions, so it returns the other &lt;em&gt;name&lt;/em&gt;. A model that reads the names keeps returning the same name, which now means the opposite. The test set was 1,200 binary decisions across four workflows: invoice reconciliation, agent-trace triage, security-alert classification and customer-service escalation.&lt;/p&gt;

&lt;p&gt;Here is what happened to Laya:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option names&lt;/th&gt;
&lt;th&gt;Decisions that flipped&lt;/th&gt;
&lt;th&gt;AUC, original pairing&lt;/th&gt;
&lt;th&gt;AUC, swapped pairing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;yes / no&lt;/td&gt;
&lt;td&gt;76.9%&lt;/td&gt;
&lt;td&gt;93.8%&lt;/td&gt;
&lt;td&gt;23.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;false / true&lt;/td&gt;
&lt;td&gt;49.7%&lt;/td&gt;
&lt;td&gt;96.2%&lt;/td&gt;
&lt;td&gt;57.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rejected / accepted&lt;/td&gt;
&lt;td&gt;45.8%&lt;/td&gt;
&lt;td&gt;90.8%&lt;/td&gt;
&lt;td&gt;63.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 / 1 (neutral)&lt;/td&gt;
&lt;td&gt;6.5%&lt;/td&gt;
&lt;td&gt;94.2%&lt;/td&gt;
&lt;td&gt;92.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A / B (neutral)&lt;/td&gt;
&lt;td&gt;6.0%&lt;/td&gt;
&lt;td&gt;94.2%&lt;/td&gt;
&lt;td&gt;94.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Selected rows from Table 1 of the paper.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With yes/no names, three decisions in four flipped. The AUC of 23.2% is the more important number. It's below the 50% you'd get by guessing, which means the model's scores still separated the two classes, just in the wrong direction. As the authors point out, AUC doesn't depend on the decision threshold, so "this error cannot be corrected by adjusting the threshold."&lt;/p&gt;

&lt;p&gt;Jev itself was less extreme but showed the same pattern. With yes/no names it flipped 32.5% of decisions, 30.4 points more than with 0/1, and its AUC fell from 81.5% to 58.1%. Because Jev isn't deterministic, the authors also ran the original version twice to see how much it changes on its own. At most 1.33% of decisions changed between those runs, so the yes/no flip rate was 24 times that floor.&lt;/p&gt;

&lt;p&gt;Across every condition in the paper, the type-error rate was 0%. Every answer was a valid option. The authors' conclusion is the one to remember: "Type safety guarantees where a decision can land, but not what the options mean to the model."&lt;/p&gt;

&lt;p&gt;Two results point at the fix. Replacing the names with random five-character strings put all three models back at the neutral-name flip rate, and their accuracy before the swap was within 3.3 points of what they scored with neutral names. The meaning was carried by the definitions, and the model followed them. Polarity mattered more than familiarity, too: "absent/present", "negative/positive" and "rejected/accepted", pairs Laya had never produced during training, still raised its flip rate by 41 points over neutral names.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this matters when your names and definitions agree
&lt;/h3&gt;

&lt;p&gt;Nobody deliberately attaches "no" to the definition of yes, so it's fair to ask what this has to do with a production prompt. The swap is a measurement tool, not a production scenario. It's the cleanest way to find out whether a model reads your definitions or your label names. On ordinary inputs the two agree, so accuracy can't tell you which one the model is following.&lt;/p&gt;

&lt;p&gt;It matters wherever your definition is narrower than the word. The router's "urgent" queue was defined as "a production system is down or customers cannot log in." A ticket that says "I urgently need a copy of last month's invoice" is a billing ticket by that definition and an urgent one by the dictionary. If the model weights the name over the definition, that's where it goes. The same applies to "spam" defined to exclude legitimate cold sales email, "fraud" defined as a specific set of chargeback patterns, or "qualified" defined by your sales team's criteria rather than the word's general sense.&lt;/p&gt;

&lt;p&gt;None of this is new for language models in general. &lt;a href="https://arxiv.org/abs/2303.03846" rel="noopener noreferrer"&gt;Wei et al. (2023)&lt;/a&gt; showed that small language models "ignore flipped labels presented in-context and thus rely primarily on semantic priors from pretraining," that overriding those priors is "an emergent ability of model scale," and that instruction tuning "strengthens both the use of semantic priors and the capacity to learn input-label mappings, but more of the former." &lt;a href="https://arxiv.org/abs/2309.04992" rel="noopener noreferrer"&gt;Liusie, Manakul and Gales (2023)&lt;/a&gt; found that in zero-shot prompt classifiers "the precise choice of the prompt template and label words can largely influence performance, with semantically equivalent settings often showing notable performance difference." What the 2026 paper adds is a clean way to measure the effect, run on the newest kind of model built to avoid it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run the swap on your own prompt
&lt;/h2&gt;

&lt;p&gt;The useful part is that the test needs no labels. It only needs your prompt, a sample of real inputs and two extra calls per input. Here's a minimal version for a prompt that lists options as &lt;code&gt;name: definition&lt;/code&gt;. &lt;code&gt;classify&lt;/code&gt; stands for your existing call, constrained to return one of the allowed names:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;build_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;options: list of (name, definition) pairs, shown in this order.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;listed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;- &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;definition&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Pick the option whose definition fits the ticket. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Reply with the option name only.&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Options:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;listed&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;Ticket:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;picked_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;classify&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;classify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;build_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;allowed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;# compare what was chosen by meaning, not by name
&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;flip_rate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;definitions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;classify&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Share of inputs where moving each name to another definition changes the decision.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;original&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;definitions&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;moved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;definitions&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# shift=0 measures run-to-run noise
&lt;/span&gt;    &lt;span class="n"&gt;flips&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nf"&gt;picked_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;classify&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nf"&gt;picked_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;moved&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;classify&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;texts&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;flips&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it three ways on a few hundred real inputs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your real names, shifted&lt;/strong&gt; (&lt;code&gt;shift=1&lt;/code&gt;). This is the number you're after.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neutral names, shifted&lt;/strong&gt;: replace your names with &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt; and so on and run it again. This is the control, since moving neutral names around should change nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your real names, not shifted&lt;/strong&gt; (&lt;code&gt;shift=0&lt;/code&gt;): the same prompt twice. This is the floor, because a model sampled at a non-zero temperature changes some answers between identical runs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the first number is close to the other two, the model is reading your definitions. If it's far above them, your definitions are partly decoration, and the label names are making some of the decisions. In that case the fix the paper suggests is cheap: use neutral IDs as option names, put all the meaning in the definitions, and map the ID back to your queue name in code. Then re-run your accuracy check, because the change isn't automatically free. On questions with three to sixteen options, even switching Laya to neutral letters changed about half its decisions, though that model was only 56.4% accurate on those questions to begin with. Measure your own prompt rather than assume.&lt;/p&gt;

&lt;p&gt;A caveat on scope: the paper tested typed decision models, not chat models answering through a JSON schema. Whether your model behaves like Laya, like Jev or like neither is exactly what these three numbers tell you.&lt;/p&gt;

&lt;h2&gt;
  
  
  A probability you can set a threshold on
&lt;/h2&gt;

&lt;p&gt;The second thing the router lacked was a score. There are two common ways to get one from an LLM, and only one of them is worth much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asking the model for its confidence.&lt;/strong&gt; Adding a &lt;code&gt;"confidence"&lt;/code&gt; field to the schema is easy and mostly uninformative. In a large evaluation of this approach, &lt;a href="https://arxiv.org/abs/2306.13063" rel="noopener noreferrer"&gt;Xiong et al.&lt;/a&gt; found that LLMs "tend to be highly overconfident when verbalizing their confidence," and that the values "predominantly fall within the 80% to 100% range and are typically in multiples of 5, similar to how humans talk about confidence." In the router example, the model reported 0.9 or higher on 488 of the 500 labelled tickets. A threshold has nothing to separate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reading the probability of the label itself.&lt;/strong&gt; If your provider exposes token log-probabilities for the chosen output (not every API or model does), use the probability the model assigned to the label it picked. Single-token, distinct option names make this straightforward. It's a real score, but don't assume it's calibrated. The &lt;a href="https://arxiv.org/abs/2303.08774" rel="noopener noreferrer"&gt;GPT-4 technical report&lt;/a&gt; showed that "the pre-trained model is highly calibrated," but "after the post-training process, the calibration is reduced," and its calibration plot is captioned "the post-training hurts calibration significantly." Typed decision models like Jev return a distribution by design, which is one of their real advantages. The same checks still apply.&lt;/p&gt;

&lt;p&gt;What you need to know is whether the score ranks the model's mistakes. Group your labelled set by score and count how often each group is right. Here is what that table might look like for the router (illustrative numbers):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Probability of the chosen queue&lt;/th&gt;
&lt;th&gt;Tickets&lt;/th&gt;
&lt;th&gt;Correct&lt;/th&gt;
&lt;th&gt;Share correct&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.95 and above&lt;/td&gt;
&lt;td&gt;330&lt;/td&gt;
&lt;td&gt;323&lt;/td&gt;
&lt;td&gt;97.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.80 to 0.95&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;td&gt;90.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.60 to 0.80&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;72.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;below 0.60&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;66.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;All&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;460&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;92.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The errors aren't spread evenly. A third of the tickets (the 170 below 0.95) contain 33 of the 40 mistakes. That's what makes a threshold possible.&lt;/p&gt;

&lt;p&gt;The table also shows the scores aren't perfectly calibrated: the tickets below 0.60 are right two times in three. If you want the number itself to be trustworthy, fit a calibration correction on a held-out slice of your labels: temperature scaling, which &lt;a href="https://arxiv.org/abs/1706.04599" rel="noopener noreferrer"&gt;Guo et al. (2017)&lt;/a&gt; found "surprisingly effective" for neural networks, or Platt scaling or isotonic regression on the raw scores. Reliability diagrams and those correction methods are the subject of the calibration lesson in SophiArch's &lt;a href="https://lms.sophiarch.com/courses/applied-machine-learning?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=llm-calls-should-be-classifiers" rel="noopener noreferrer"&gt;Applied Machine Learning course&lt;/a&gt;, which works through them on gradient-boosted and random-forest models, whose raw probabilities need the same kind of correction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pick the threshold from what a mistake costs
&lt;/h3&gt;

&lt;p&gt;A threshold isn't a quality setting. It's a trade between two costs, and you should write both down. Suppose a misrouted ticket costs about 20 minutes of someone's time (the wrong team reads it, works out it isn't theirs, passes it on, and the customer waits longer), and a person sorting a ticket by hand takes about 1 minute and gets it right. Per 500 tickets:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Auto-route if probability is at least&lt;/th&gt;
&lt;th&gt;Auto-routed&lt;/th&gt;
&lt;th&gt;Errors that get through&lt;/th&gt;
&lt;th&gt;Sent to a person&lt;/th&gt;
&lt;th&gt;Cost in minutes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;no threshold&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;40 × 20 = 800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.60&lt;/td&gt;
&lt;td&gt;470&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;600 + 30 = 630&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.80&lt;/td&gt;
&lt;td&gt;420&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;320 + 80 = 400&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;td&gt;330&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;170&lt;/td&gt;
&lt;td&gt;140 + 170 = 310&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At these costs, sending everything below 0.95 to a person cuts the cost of routing by about 60% (from 800 minutes per 500 tickets to 310). If sorting a ticket by hand took three minutes instead of one, the 0.80 threshold would win: 320 + 240 = 560 minutes against 140 + 510 = 650. The right threshold comes from your costs, not from the model.&lt;/p&gt;

&lt;p&gt;The tickets sent to a person do something else too. Every one of them comes back with a correct label, from exactly the cases the model was least sure about. After a few months that's a better training set than you could have designed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Climbing the ladder
&lt;/h2&gt;

&lt;p&gt;Once a decision has labels, a score and a threshold, you can compare different ways of making it on equal terms. A reasonable order to try them in:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The model you already use&lt;/strong&gt;, with neutral option IDs, output constrained to the label set, and the probability of the chosen label as the score. Stop here if the accuracy, the swap test and the score table are all acceptable at your volume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The same model with a calibration correction&lt;/strong&gt; fitted on held-out labels, if you need the probability to mean what it says, for example because a downstream rule reads it as a risk level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A small classifier trained on your labels&lt;/strong&gt;, now that the escalation queue is producing them. Even a logistic regression on TF-IDF features is worth trying as a baseline, because it's deterministic, its probabilities can be calibrated with standard tools, and it costs almost nothing to run. Whether a fine-tuned or distilled small model is worth the step up is a separate cost question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A purpose-built decision model&lt;/strong&gt; such as Jev. These return a distribution by design and can be fast. Run the swap test on them too, because that's the kind of model the paper studied.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The exit test is the same at every rung: accuracy, the score table and the swap flip rate, all on your own labelled traffic. Not the vendor's benchmark, and not the model's own description of how confident it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five questions for any LLM call that returns a label
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Is the answer always one of a fixed set? Then it's a classifier, whatever the call looks like.&lt;/li&gt;
&lt;li&gt;Do you have a few hundred real inputs labelled by a person, and do you know the error rate on them?&lt;/li&gt;
&lt;li&gt;When you move the names to other definitions, how many decisions change compared with neutral names and with a plain re-run?&lt;/li&gt;
&lt;li&gt;Does the score put the mistakes at the bottom of the table, and is anything reading it as a probability?&lt;/li&gt;
&lt;li&gt;Where do the low-scoring cases go, and who labels them?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The router team answered all five in two weeks. The billing queue stopped getting password resets, and the "urgent" queue got a lot quieter.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sun, Y., Xu, J., Shi, J., &amp;amp; Yang, Z. (2026). &lt;a href="https://arxiv.org/abs/2609.26758" rel="noopener noreferrer"&gt;Type-Safe Is Not Error-Free: Typed Decision Models Follow the Option Name, Not the Definition Bound to It&lt;/a&gt;. &lt;em&gt;arXiv:2609.26758&lt;/em&gt;. The name–definition swap on Jev, Laya and Open-Jev; source of the flip rates, AUC figures, test-retest floor, random-string control, multi-option results and the neutral-name mitigation.&lt;/li&gt;
&lt;li&gt;TypeSafe AI. &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;Introducing System One models and Jev&lt;/a&gt;. Launch post for the typed decision model studied above.&lt;/li&gt;
&lt;li&gt;Wei, J., Wei, J., Tay, Y., et al. (2023). &lt;a href="https://arxiv.org/abs/2303.03846" rel="noopener noreferrer"&gt;Larger language models do in-context learning differently&lt;/a&gt;. &lt;em&gt;arXiv:2303.03846&lt;/em&gt;. Flipped-label and semantically unrelated label experiments; semantic priors and instruction tuning.&lt;/li&gt;
&lt;li&gt;Liusie, A., Manakul, P., &amp;amp; Gales, M. (2023). &lt;a href="https://arxiv.org/abs/2309.04992" rel="noopener noreferrer"&gt;Mitigating Word Bias in Zero-shot Prompt-based Classifiers&lt;/a&gt;. &lt;em&gt;arXiv:2309.04992&lt;/em&gt;. How the choice of label words shifts zero-shot classifier performance, and a reweighting fix.&lt;/li&gt;
&lt;li&gt;Xiong, M., Hu, Z., Lu, X., Li, Y., Fu, J., He, J., &amp;amp; Hooi, B. (2024). &lt;a href="https://arxiv.org/abs/2306.13063" rel="noopener noreferrer"&gt;Can LLMs Express Their Uncertainty? An Empirical Evaluation of Confidence Elicitation in LLMs&lt;/a&gt;. &lt;em&gt;arXiv:2306.13063&lt;/em&gt; (ICLR 2024). Overconfidence and the 80–100% clustering of verbalized confidence.&lt;/li&gt;
&lt;li&gt;OpenAI (2023). &lt;a href="https://arxiv.org/abs/2303.08774" rel="noopener noreferrer"&gt;GPT-4 Technical Report&lt;/a&gt;. &lt;em&gt;arXiv:2303.08774&lt;/em&gt;. Calibration of the pre-trained versus post-trained model on MMLU (Figure 8).&lt;/li&gt;
&lt;li&gt;Guo, C., Pleiss, G., Sun, Y., &amp;amp; Weinberger, K. Q. (2017). &lt;a href="https://arxiv.org/abs/1706.04599" rel="noopener noreferrer"&gt;On Calibration of Modern Neural Networks&lt;/a&gt;. &lt;em&gt;arXiv:1706.04599&lt;/em&gt; (ICML 2017). Miscalibration in modern networks and temperature scaling.&lt;/li&gt;
&lt;li&gt;SophiArch. &lt;a href="https://lms.sophiarch.com/courses/applied-machine-learning?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=llm-calls-should-be-classifiers" rel="noopener noreferrer"&gt;Applied Machine Learning&lt;/a&gt;. Course covering evaluation with statistical rigour, imbalanced data, cross-validation and leakage, calibration with reliability diagrams and Platt/isotonic scaling, and production pipelines.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>machinelearning</category>
      <category>llm</category>
      <category>classification</category>
      <category>python</category>
    </item>
    <item>
      <title>Compare Video Models with the Same Image and Motion Brief</title>
      <dc:creator>佐藤光</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:10:14 +0000</pubDate>
      <link>https://dev.to/fablessbridge/compare-video-models-with-the-same-image-and-motion-brief-4eph</link>
      <guid>https://dev.to/fablessbridge/compare-video-models-with-the-same-image-and-motion-brief-4eph</guid>
      <description>&lt;p&gt;The useful question was not which model won. It was whether the shot kept the coffee berries in frame while the morning light changed.&lt;/p&gt;

&lt;p&gt;This implementation note records the inputs, failure modes and checks needed to make the workflow reviewable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Include the delivery route and price
&lt;/h2&gt;

&lt;p&gt;Through Higgsfield, the recorded five-second Kling 3.0 Pro estimate was USD 0.84 and the Seedance 720p estimate was about USD 2.31. The resolutions differ, and a provider route can change available settings and prices. Record input, prompt, route, model, resolution and estimate together. Recheck pricing when you run the next test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compare the actual outputs
&lt;/h2&gt;

&lt;p&gt;In this test, Seedance made the light warmer and kept the red berries visible. Kling moved forward enough that the berries left the frame. The Kling output was 1920 by 1080, while Seedance was 1280 by 720. These were individual attempts; repeated generation can produce a different movement, so neither result establishes a universal ranking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Describe the required shot
&lt;/h2&gt;

&lt;p&gt;We used one image of a highland coffee farm and asked for a slow forward camera movement, drifting mist and growing sunrise light. Defining those visible changes made the output easier to judge than a broad request for a cinematic result. When commissioning a shot, name the subject that must stay visible as well as the movement you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checks to carry into the next project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Write down what must remain visible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test the same image and movement with a small shortlist.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compare revision effort as well as the quoted generation cost.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep a reproducible record of the configuration and inspect the final exported artifact. An automation success message is not a content review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch the production examples
&lt;/h2&gt;

&lt;p&gt;These assets come from the documented project. Fictional in-house samples illustrate our process; they are not evidence of client sales results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/assets/sketch-to-film-v4.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fefiakpo13b5kzyotgr8h.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/assets/sketch-to-film-v4.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F026d82k54ufijtocaew2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F026d82k54ufijtocaew2.jpg" alt="Production example 2" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/seedance-api/kling-farm.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9h6kbyqsj4uos17uc3k.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/seedance-api/kling-farm.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/seedance-api/seedance-farm.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F026d82k54ufijtocaew2.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/seedance-api/seedance-farm.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source and production inquiries
&lt;/h2&gt;

&lt;p&gt;Adapted from &lt;a href="https://pr.fabless-bridge.ai/blog/choose-video-generation-ai" rel="noopener noreferrer"&gt;the original FableBridge production note (Japanese)&lt;/a&gt;. Model specifications, estimates, prices and schedules are records from the source date, not guarantees for a new project. The source includes further conditions and references.&lt;/p&gt;

&lt;p&gt;FableBridge, operated by Shian Co., Ltd. in Tokyo, produces product and service videos, landing pages and advertising campaigns. Share your audience, placement, preferred length and timeline through our &lt;a href="https://pr.fabless-bridge.ai/contact" rel="noopener noreferrer"&gt;consultation page&lt;/a&gt; or email &lt;a href="mailto:fabless-bridge@shian.space"&gt;fabless-bridge@shian.space&lt;/a&gt;. &lt;a href="https://pr.fabless-bridge.ai/" rel="noopener noreferrer"&gt;Explore our work on the official website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>testing</category>
    </item>
    <item>
      <title>Check the Model ID Before Migrating a Veo Integration</title>
      <dc:creator>佐藤光</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:09:08 +0000</pubDate>
      <link>https://dev.to/fablessbridge/check-the-model-id-before-migrating-a-veo-integration-4k83</link>
      <guid>https://dev.to/fablessbridge/check-the-model-id-before-migrating-a-veo-integration-4k83</guid>
      <description>&lt;p&gt;A model migration starts with an exact identifier. A product screen that only says Veo does not tell you which retirement notice applies.&lt;/p&gt;

&lt;p&gt;This implementation note records the inputs, failure modes and checks needed to make the workflow reviewable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the output contract
&lt;/h2&gt;

&lt;p&gt;Record the provider, model ID, request settings and expected output before switching. Check resolution, duration, audio, download handling and estimated cost with a small test. In our Omni test, audio was generated with the video, so a workflow that creates music separately needed to mute or replace that track in editing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep a small comparison reproducible
&lt;/h2&gt;

&lt;p&gt;We tried the same input image and motion prompt with two Veo outputs and two Gemini Omni outputs. Those four clips document this production test, not a general benchmark. The Omni attempts took about 42 and 36 seconds, with preflight estimates of about USD 1.03 and USD 0.83 in the recorded conditions. These are observations and estimates, not a promise about later jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate the API routes
&lt;/h2&gt;

&lt;p&gt;In the official notices checked on October 14, 2026, the Gemini API Veo 3.1 preview models and gemini-omni-flash-preview had an earliest shutdown date of October 22, with gemini-omni-1.1-flash named as the replacement. The Vertex AI production -001 models had a separate retirement notice, no earlier than November 17. Check the current notice and the exact model ID before changing a production workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checks to carry into the next project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Record the exact model ID and API route.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check the current retirement notice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Approve a small output test before moving the rest of the project.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep a reproducible record of the configuration and inspect the final exported artifact. An automation success message is not a content review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch the production examples
&lt;/h2&gt;

&lt;p&gt;These assets come from the documented project. Fictional in-house samples illustrate our process; they are not evidence of client sales results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp52uare3d4cvw1gspurm.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp52uare3d4cvw1gspurm.webp" alt="Production example 1" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/veo-voice.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftgoi6uwibrj4kgtlfe1q.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/veo-voice.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/omni-voice.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqk4n1zyxuu7f5i9u3s0u.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/omni-voice.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/veo-mouth.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0xvlmlh92v7uv525sh9j.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/veo-mouth.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/omni-mouth.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1huq7vu03tu7sldrwmvm.jpg" alt="Video preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pr.fabless-bridge.ai/media/blog/veo-3-1-shutdown/omni-mouth.mp4" rel="noopener noreferrer"&gt;Watch this production clip (MP4)&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source and production inquiries
&lt;/h2&gt;

&lt;p&gt;Adapted from &lt;a href="https://pr.fabless-bridge.ai/blog/veo-3-1-shutdown" rel="noopener noreferrer"&gt;the original FableBridge production note (Japanese)&lt;/a&gt;. Model specifications, estimates, prices and schedules are records from the source date, not guarantees for a new project. The source includes further conditions and references.&lt;/p&gt;

&lt;p&gt;FableBridge, operated by Shian Co., Ltd. in Tokyo, produces product and service videos, landing pages and advertising campaigns. Share your audience, placement, preferred length and timeline through our &lt;a href="https://pr.fabless-bridge.ai/contact" rel="noopener noreferrer"&gt;consultation page&lt;/a&gt; or email &lt;a href="mailto:fabless-bridge@shian.space"&gt;fabless-bridge@shian.space&lt;/a&gt;. &lt;a href="https://pr.fabless-bridge.ai/" rel="noopener noreferrer"&gt;Explore our work on the official website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>testing</category>
    </item>
    <item>
      <title>Google's Gemini 4 Argon release is a bet on agentic security</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:03:40 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/googles-gemini-4-argon-release-is-a-bet-on-agentic-security-1f8m</link>
      <guid>https://dev.to/albertomontagnese/googles-gemini-4-argon-release-is-a-bet-on-agentic-security-1f8m</guid>
      <description>&lt;p&gt;Google has made its latest frontier model, Gemini 4 Argon, available to developers. This isn't just another incremental update; it's a specialized tool designed for complex, long-horizon tasks in cybersecurity, software engineering, and enterprise knowledge work. The release indicates a clear strategic direction: the future of applied AI isn't just conversational chat, but autonomous agents integrated directly into critical infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  what is gemini 4 argon?
&lt;/h2&gt;

&lt;p&gt;Gemini 4 Argon is positioned as a frontier model for high-complexity workflows. Initial access appears to be rolling out in phases, with early availability for vetted cybersecurity defenders, followed by a broader release to developers through the Gemini API's paid tier. This controlled rollout underscores its focus on sensitive, high-stakes domains.&lt;/p&gt;

&lt;p&gt;The model is built to handle tasks that require deep reasoning and precision, such as code migrations and vulnerability analysis. This specialization moves beyond the capabilities of general-purpose models, targeting the specific needs of security operations centers (SOCs) and software engineering teams who deal with constant threats and complex codebases.&lt;/p&gt;

&lt;h2&gt;
  
  
  more than a model: an autonomous platform
&lt;/h2&gt;

&lt;p&gt;The release of Argon is best understood as a component within a larger strategy for AI-driven security. Google is assembling an always-on, autonomous security platform, and this model provides the reasoning engine. It plugs into a broader ecosystem that includes the Security AI Workbench and Chronicle Security Operations, which aim to help defenders manage threat overload with AI-powered analysis.&lt;/p&gt;

&lt;p&gt;This is a direct response to an industry-wide problem: as AI is used to discover new vulnerabilities, human analysts cannot keep pace. The only viable defense is to deploy AI agents that can operate at machine speed. Google's existing triage and investigation agent, powered by Gemini, has already demonstrated this by reducing alert analysis time from 30 minutes to about one minute. Argon represents the next step in this evolution, enabling more complex and autonomous defensive actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  putting agentic security to work
&lt;/h2&gt;

&lt;p&gt;For builders, the most immediate application is in automated code remediation. An AI agent called CodeMender, which uses Gemini models, is designed to automatically find and fix critical code vulnerabilities. This shifts security from a reactive, manual process to a proactive, automated one.&lt;/p&gt;

&lt;p&gt;You can imagine configuring such an agent to continuously monitor a repository, identify potential vulnerabilities, and propose patches. The workflow would be defined declaratively, with the model handling the complex reasoning required to understand the code and generate a secure fix.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# hypothetical config for a CodeMender-style agent&lt;/span&gt;

&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.0&lt;/span&gt;

&lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;repo-security-agent-prod&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-4-argon&lt;/span&gt;
  &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;continuous_monitoring&lt;/span&gt;

&lt;span class="na"&gt;triggers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;on_commit&lt;/span&gt;
    &lt;span class="na"&gt;branch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;on_dependency_update&lt;/span&gt;
    &lt;span class="na"&gt;package_manager&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;scheduled&lt;/span&gt;
    &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;2&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt; &lt;span class="c1"&gt;# daily at 2am UTC&lt;/span&gt;

&lt;span class="na"&gt;capabilities&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;static_analysis&lt;/span&gt;
    &lt;span class="na"&gt;rulesets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;owasp-top-10"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;common-misconfigurations"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dependency_graph_vuln_scan&lt;/span&gt;
    &lt;span class="na"&gt;severity_threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;high&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;automated_patch_generation&lt;/span&gt;

&lt;span class="na"&gt;actions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;on_vulnerability_found&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;severity &amp;gt;= high&lt;/span&gt;
      &lt;span class="na"&gt;then&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;create_issue&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;generate_patch&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;assign_review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;@security-team"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;@lead-dev"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
      &lt;span class="na"&gt;else&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;log_to_dashboard&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration delegates the entire scan-and-remediate loop to an autonomous system. The value is not just in the model's ability to reason about code, but in its integration into a persistent, agentic workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  the so-what for builders
&lt;/h2&gt;

&lt;p&gt;Gemini 4 Argon is a signal that the AI tooling landscape is maturing. We are moving past the novelty of general-purpose models and into an era of specialized agents that perform critical business functions. For engineers, this means the focus will shift from prompt engineering for chat interfaces to designing, configuring, and orchestrating autonomous systems.&lt;/p&gt;

&lt;p&gt;The core challenge is no longer just getting a model to produce a correct answer. It is about reliably integrating that model's reasoning capabilities into production workflows that can run safely and continuously without direct human supervision. That's a fundamentally different and more interesting engineering problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.google/" rel="noopener noreferrer"&gt;https://blog.google/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>devtools</category>
      <category>news</category>
    </item>
    <item>
      <title>DemoDoctor: Bad Robot Demonstrations Are Detectable. Do They Matter?</title>
      <dc:creator>Raihan</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:31:00 +0000</pubDate>
      <link>https://dev.to/raihan-js/demodoctor-bad-robot-demonstrations-are-detectable-do-they-matter-548p</link>
      <guid>https://dev.to/raihan-js/demodoctor-bad-robot-demonstrations-are-detectable-do-they-matter-548p</guid>
      <description>&lt;p&gt;&lt;em&gt;Inject known faults into robot demonstrations, detect them without labels, and measure what they cost a policy. The honest answer so far: I could not measure a cost.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkaedx7eu9gkhs7e0w33i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkaedx7eu9gkhs7e0w33i.png" alt="DemoDoctor results" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Scope note: PushT only, ACT policy, RTX 3060. A data-quality study by an ML engineer learning robotics — not robotics expertise.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Robot-learning teams say data quality matters more than model size, but controlled measurements are rare. This project corrupts clean PushT demonstrations with ground-truth faults, detects them from signals alone, then closes the loop: train on clean vs corrupted vs auto-cleaned data and measure simulator success.&lt;/p&gt;

&lt;h2&gt;
  
  
  The faults
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fault&lt;/th&gt;
&lt;th&gt;What it mimics&lt;/th&gt;
&lt;th&gt;Detectable?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lag (1–3 frames)&lt;/td&gt;
&lt;td&gt;Slow camera pipeline&lt;/td&gt;
&lt;td&gt;Weak — XCorr landscape flat on quasi-static pushing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stall&lt;/td&gt;
&lt;td&gt;Teleop freeze&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes — F1 0.867&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jitter (scaled)&lt;/td&gt;
&lt;td&gt;Shaky teleoperation&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes — F1 0.687&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Truncation&lt;/td&gt;
&lt;td&gt;Episode cut early&lt;/td&gt;
&lt;td&gt;Weak — natural length variance swamps cuts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dup frames&lt;/td&gt;
&lt;td&gt;Stuck camera&lt;/td&gt;
&lt;td&gt;No — re-encoding creates duplicates everywhere&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The detectors (all label-free)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lag&lt;/strong&gt;: cross-correlate image-motion energy with action-velocity energy; stable version requires both halves to agree. Fails honestly on PushT: slow motion gives flat correlation landscapes where noise peaks beat true lag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jitter&lt;/strong&gt;: raw jerk vs median-filtered baseline. Key fix: absolute sigma is meaningless (PushT actions have std ~80, not ~1) — scale to the episode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stall&lt;/strong&gt;: contiguous near-zero-velocity runs. Just works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Truncation&lt;/strong&gt;: robust length outlier (median ± MAD). Weak by nature here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dup frames&lt;/strong&gt;: exact-duplicate check confounded by video re-encoding (which creates duplicates in clean data too). Reported as null with the mechanism explained.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The policy experiment
&lt;/h2&gt;

&lt;p&gt;I trained ACT policies on PushT for 60k steps (batch size 32, RTX 3060, about 2 hours each) under four data conditions, 3 seeds each, and evaluated every policy on 50 rollouts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean&lt;/strong&gt;: all 206 episodes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corrupted&lt;/strong&gt;: 30% of episodes carry an injected fault.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-cleaned&lt;/strong&gt;: the 175 episodes left after dropping stall- and jitter-flagged ones (26 of the 31 dropped were truly faulty).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Random 175&lt;/strong&gt;: 175 random episodes of the corrupted set. This is the size-matched control: if cleaning looked worse than corrupted, it separates "less data" from "better data".&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Success rate&lt;/th&gt;
&lt;th&gt;Mean max reward [95% CI]&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Clean&lt;/td&gt;
&lt;td&gt;0.7%&lt;/td&gt;
&lt;td&gt;0.425 [0.369, 0.488]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Corrupted&lt;/td&gt;
&lt;td&gt;1.3%&lt;/td&gt;
&lt;td&gt;0.397 [0.344, 0.454]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-cleaned&lt;/td&gt;
&lt;td&gt;0.0%&lt;/td&gt;
&lt;td&gt;0.359 [0.302, 0.423]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Random 175&lt;/td&gt;
&lt;td&gt;0.0%&lt;/td&gt;
&lt;td&gt;0.432 [0.386, 0.476]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Intervals bootstrap over policies, then over rollouts within a policy. &lt;strong&gt;No pairwise difference excludes zero.&lt;/strong&gt; The widest gap is auto-cleaned vs random 175 at -0.073 [-0.147, +0.006]. Clean minus corrupted is +0.028 [-0.050, +0.108]. The point estimates even run the wrong way for cleaning, but they are inside the noise.&lt;/p&gt;

&lt;p&gt;So this grid shows no effect of corruption, of cleaning, or of data size. It also cannot rule out an effect: it cannot resolve differences smaller than about 0.08 in mean max reward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I would not read more into it
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Floor effect.&lt;/strong&gt; Success is 0-4% in every cell (at most 2 of 50 rollouts). Max reward is the only usable signal, and it is coarse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation noise.&lt;/strong&gt; I re-evaluated 7 checkpoints a second time. Mean max reward moved by 0.014 on average and by up to 0.037, and the success rate changed for 2 of the 7. That is as large as the smaller condition gaps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three seeds per condition.&lt;/strong&gt; One policy is 2 hours of GPU, so n = 3 was the budget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixed training environments.&lt;/strong&gt; Some of the original runs were trained on rented pods. Two policies (corrupted and cleaned, seed 2) were retrained locally after their checkpoints were lost; their earlier evaluations (0.373 and 0.349) were close to the retrained ones (0.379 and 0.331).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two explanations I have not tested: the policies barely solve PushT at this budget, and the faults my detectors can find (stalls, jitter) may be mild for a policy that predicts chunks of actions. Settling it would take more seeds, a longer training budget or a metric with headroom, and faults large enough to hurt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Injected faults are easier than real teleoperation faults; detector F1 on them says nothing about real-world fault performance.&lt;/li&gt;
&lt;li&gt;PushT only, ACT only, one training budget (60k steps).&lt;/li&gt;
&lt;li&gt;The policy grid is underpowered (3 seeds per condition, floor-level success), so the null above is "not resolved", not "no effect".&lt;/li&gt;
&lt;li&gt;Re-encoding destroys timestamp-gap signals; dup detection null is partly pipeline artifact.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;DINOv2-small progress-monotonicity scorer (implemented, unevaluated on real embeddings)&lt;/li&gt;
&lt;li&gt;Scan community LeRobot datasets and report flags without claiming ground truth&lt;/li&gt;
&lt;li&gt;ALOHA transfer-cube as stretch&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Repo: github.com/raihan-js/demodoctor · Data: huggingface.co/datasets/raihan-js/demodoctor-pusht-corrupted&lt;/em&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>robotics</category>
      <category>python</category>
      <category>statistics</category>
    </item>
    <item>
      <title>Claude vs Gemini vs GPT: What a 2026 Study of 26 AI Models Reveals About Long Context</title>
      <dc:creator>Egor</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:28:14 +0000</pubDate>
      <link>https://dev.to/coffee1337/claude-vs-gemini-vs-gpt-what-a-2026-study-of-26-ai-models-reveals-about-long-context-57i</link>
      <guid>https://dev.to/coffee1337/claude-vs-gemini-vs-gpt-what-a-2026-study-of-26-ai-models-reveals-about-long-context-57i</guid>
      <description>&lt;p&gt;&lt;em&gt;26 AI models. 6,438 evaluation instances. Contexts up to 1 million tokens. The results challenge how we compare modern language models.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Imagine giving an AI assistant an entire software repository.&lt;/p&gt;

&lt;p&gt;Thousands of files. Hundreds of modules. API documentation, database schemas, and years of development history.&lt;/p&gt;

&lt;p&gt;The model accepts everything without complaining.&lt;/p&gt;

&lt;p&gt;You ask it to identify a subtle architectural problem.&lt;/p&gt;

&lt;p&gt;It confidently provides an answer.&lt;/p&gt;

&lt;p&gt;But is that answer actually reliable?&lt;/p&gt;

&lt;p&gt;In 2026, the question is no longer simply whether a language model can accept a million tokens.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much of that context can the model actually use correctly?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A recent research paper, &lt;em&gt;ATLAS: All-round Testing of Long-context Abilities across Scales&lt;/em&gt;, provides some surprising answers.&lt;/p&gt;

&lt;p&gt;The researchers evaluated 26 models on 6,438 instances across eight capability dimensions, considering input lengths from 8K to 1M tokens.&lt;/p&gt;

&lt;p&gt;One finding stands out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini 3.1 Pro Preview led at 128K, but Claude Opus 4.6 led at 1M.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The best model depends on how you measure it.&lt;/p&gt;

&lt;p&gt;Let's examine what the researchers tested, what their results actually mean, and why these findings matter for developers building real AI systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Research note: This article analyzes published 2026 research. It is not an independent benchmark, and it does not claim that the author personally tested all 26 models.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Problem With AI Benchmarks
&lt;/h2&gt;

&lt;p&gt;When comparing language models, we often see a familiar table:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Context window&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model A&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model B&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model C&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The implication seems obvious.&lt;/p&gt;

&lt;p&gt;Model C can process more information, so it must be better at large-document tasks.&lt;/p&gt;

&lt;p&gt;But this reasoning contains a hidden assumption:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That accepting more information means using that information effectively.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider two different tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task A: Simple retrieval&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A document contains the sentence:&lt;/p&gt;

&lt;p&gt;"The deployment identifier is QZ-7194."&lt;/p&gt;

&lt;p&gt;The model is asked to retrieve that identifier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task B: Complex reasoning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A repository contains dozens of service definitions, configuration files, and dependency relationships.&lt;/p&gt;

&lt;p&gt;The model must identify which changes could introduce a security regression.&lt;/p&gt;

&lt;p&gt;The second task requires much more than finding one string.&lt;/p&gt;

&lt;p&gt;It may involve combining evidence from many locations, resolving contradictions, and understanding dependencies.&lt;/p&gt;

&lt;p&gt;A model that performs well on Task A might struggle on Task B.&lt;/p&gt;

&lt;p&gt;That's exactly why evaluating long-context AI requires more than a single benchmark number.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. ATLAS: A Different Way to Measure Long-Context Intelligence
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Research:&lt;/strong&gt; &lt;em&gt;ATLAS: All-round Testing of Long-context Abilities across Scales&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authors:&lt;/strong&gt; Deli Huang and colleagues&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; May 27, 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paper:&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2605.28079" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2605.28079&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ATLAS researchers investigated two major weaknesses in traditional long-context evaluation.&lt;/p&gt;

&lt;p&gt;First, model performance can deteriorate as input length increases.&lt;/p&gt;

&lt;p&gt;Second, success on foundational tasks such as retrieval does not necessarily transfer to more complex application workloads.&lt;/p&gt;

&lt;p&gt;Their framework introduces several methodological improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evaluating across context lengths
&lt;/h3&gt;

&lt;p&gt;Instead of measuring performance at only one input size, ATLAS considers scores across a predefined context-length grid, from 8K to 1M tokens.&lt;/p&gt;

&lt;p&gt;This makes it possible to analyze how performance changes as more information enters the prompt.&lt;/p&gt;

&lt;p&gt;A model that performs exceptionally well at 128K may deteriorate more sharply than another model at longer lengths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Separating foundational abilities from applications
&lt;/h3&gt;

&lt;p&gt;ATLAS distinguishes foundational operations from downstream workloads.&lt;/p&gt;

&lt;p&gt;This matters because retrieving information and applying it correctly are different capabilities.&lt;/p&gt;

&lt;p&gt;For instance, a model may identify relevant functions in a repository without understanding how they interact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measuring balanced performance
&lt;/h3&gt;

&lt;p&gt;The researchers introduce ATLAScore, a harmonic-mean-based aggregate across capability categories.&lt;/p&gt;

&lt;p&gt;This is intended to penalize highly imbalanced capability profiles.&lt;/p&gt;

&lt;p&gt;A model that dominates one task but struggles on others should not automatically receive the strongest overall evaluation.&lt;/p&gt;

&lt;p&gt;The framework also includes uncertainty propagation when computing its final aggregate scores.&lt;/p&gt;

&lt;p&gt;Together, these changes provide a more nuanced picture than a single retrieval accuracy number.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Result: The Leader Changes at 1 Million Tokens
&lt;/h2&gt;

&lt;p&gt;One of the most interesting findings concerns model rankings.&lt;/p&gt;

&lt;p&gt;According to the ATLAS paper:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evaluation scope&lt;/th&gt;
&lt;th&gt;Leading model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Up to 128K tokens&lt;/td&gt;
&lt;td&gt;Gemini 3.1 Pro Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Up to 1M tokens&lt;/td&gt;
&lt;td&gt;Claude Opus 4.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7130pcshtryuxn2a7cjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7130pcshtryuxn2a7cjh.png" alt="ATLAS 2026: Claude vs Gemini long-context benchmark" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This does not mean Claude is universally better than Gemini.&lt;/p&gt;

&lt;p&gt;Nor does it mean Gemini is inherently unreliable.&lt;/p&gt;

&lt;p&gt;It means the relative ranking changes under the specific evaluation conditions used by ATLAS.&lt;/p&gt;

&lt;p&gt;The researchers also reported that &lt;strong&gt;seven models changed position by at least two ranking places&lt;/strong&gt; when the evaluation expanded from the 8K–128K range to the 8K–1M range.&lt;/p&gt;

&lt;p&gt;That's important.&lt;/p&gt;

&lt;p&gt;Imagine selecting a model for your application after reviewing results obtained only at 128K.&lt;/p&gt;

&lt;p&gt;Your production workload, however, frequently processes 600K-token documents.&lt;/p&gt;

&lt;p&gt;The benchmark you used may not reflect your actual operating conditions.&lt;/p&gt;

&lt;p&gt;And if models deteriorate at different rates, their relative performance at 600K may differ from their relative performance at 128K.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key insight: model quality is not independent of context length.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A useful benchmark should measure the range your application actually uses.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Why Context Length Changes the Difficulty
&lt;/h2&gt;

&lt;p&gt;Let's examine a simplified example.&lt;/p&gt;

&lt;p&gt;Imagine this information appears inside a long repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service_a.py:
Service A sends requests to Service B.

service_b.py:
Service B uses Database C.

config.yaml:
Database C has public network access enabled.

security_policy.md:
Production databases must not expose public access.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now ask:&lt;/p&gt;

&lt;p&gt;"Does Service A indirectly depend on a database with a potentially unsafe network configuration?"&lt;/p&gt;

&lt;p&gt;Answering correctly requires several steps.&lt;/p&gt;

&lt;p&gt;First, identify the dependency between Service A and Service B.&lt;/p&gt;

&lt;p&gt;Second, identify Service B's database.&lt;/p&gt;

&lt;p&gt;Third, find Database C's configuration.&lt;/p&gt;

&lt;p&gt;Finally, compare that configuration with the security policy.&lt;/p&gt;

&lt;p&gt;No single sentence contains the entire answer.&lt;/p&gt;

&lt;p&gt;As the context grows, the model must identify relevant information among more irrelevant material while preserving the connections between different pieces of evidence.&lt;/p&gt;

&lt;p&gt;This creates distinct possible failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing one of the necessary pieces of evidence&lt;/li&gt;
&lt;li&gt;Retrieving a similar but incorrect detail&lt;/li&gt;
&lt;li&gt;Correctly retrieving the evidence but connecting it incorrectly&lt;/li&gt;
&lt;li&gt;Producing a plausible conclusion unsupported by the source material&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The example is illustrative, not an ATLAS test case.&lt;/p&gt;

&lt;p&gt;But it demonstrates why longer context can increase difficulty even when every relevant document fits into the model's advertised context window.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Another 2026 Study Reveals a Deeper Problem
&lt;/h2&gt;

&lt;p&gt;ATLAS evaluates long-context capabilities across models and scales.&lt;/p&gt;

&lt;p&gt;A separate 2026 study, &lt;em&gt;CorpusQA: A 10 Million Token Benchmark for Corpus-Level Analysis and Reasoning&lt;/em&gt;, investigates a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can AI systems analyze entire collections of documents when the evidence is distributed throughout the collection?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authors:&lt;/strong&gt; Zhiyuan Lu and colleagues&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Originally published:&lt;/strong&gt; January 21, 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Revised:&lt;/strong&gt; April 25, 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paper:&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2601.14952" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2601.14952&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CorpusQA includes tasks involving financial, educational, and real-estate documents.&lt;/p&gt;

&lt;p&gt;Some questions require aggregating numerical information from many documents.&lt;/p&gt;

&lt;p&gt;For example, imagine analyzing hundreds of financial reports to identify every company satisfying several accounting conditions.&lt;/p&gt;

&lt;p&gt;A traditional retrieval system might find a few relevant documents.&lt;/p&gt;

&lt;p&gt;But if answering the question requires analyzing every company, retrieving only five documents is insufficient.&lt;/p&gt;

&lt;p&gt;This is a fundamentally different problem from finding one answer-bearing passage.&lt;/p&gt;

&lt;h3&gt;
  
  
  The published results
&lt;/h3&gt;

&lt;p&gt;CorpusQA evaluated several models at different context lengths.&lt;/p&gt;

&lt;p&gt;For Gemini 2.5 Pro, the authors reported:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Context length&lt;/th&gt;
&lt;th&gt;Overall accuracy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;80.19%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;50.73%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5z0yyj2ny1jxtfw2x5tq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5z0yyj2ny1jxtfw2x5tq.png" alt="CorpusQA 2026: Gemini 2.5 Pro accuracy decline from 128K to 1M tokens" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These results show a decline of 29.46 percentage points under the study's conditions.&lt;/p&gt;

&lt;p&gt;Importantly, CorpusQA evaluated Gemini 2.5 Pro, not Gemini 3.1 Pro.&lt;/p&gt;

&lt;p&gt;Its results cannot be directly substituted for the newer model's performance.&lt;/p&gt;

&lt;p&gt;But they illustrate how difficult corpus-level analysis can remain, even when a model supports very long inputs.&lt;/p&gt;

&lt;p&gt;The study also found that conventional retrieval-augmented generation performed poorly on tasks requiring globally distributed evidence.&lt;/p&gt;

&lt;p&gt;The lesson isn't that RAG is useless.&lt;/p&gt;

&lt;p&gt;It's that &lt;strong&gt;retrieving a handful of relevant chunks is not the same as analyzing an entire document collection.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Why Traditional RAG Can Fail on Global Questions
&lt;/h2&gt;

&lt;p&gt;A typical RAG pipeline looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question
      |
      v
Vector search
      |
      v
Top-K relevant chunks
      |
      v
LLM
      |
      v
Generated answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works well when a question can be answered using a relatively small number of relevant passages.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;"What is the API rate limit?"&lt;/p&gt;

&lt;p&gt;A good retrieval system can locate the appropriate documentation paragraph and pass it to the model.&lt;/p&gt;

&lt;p&gt;Now consider another question:&lt;/p&gt;

&lt;p&gt;"Across all customer reports from the last year, which failure category increased the most?"&lt;/p&gt;

&lt;p&gt;The answer requires a global aggregation.&lt;/p&gt;

&lt;p&gt;Retrieving only the most semantically similar documents may exclude a large part of the dataset.&lt;/p&gt;

&lt;p&gt;No matter how capable the LLM is, it cannot correctly aggregate information it never receives.&lt;/p&gt;

&lt;p&gt;This is an information-coverage problem, not merely a language-model problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft0ymoxqlhpeclumpzyu0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft0ymoxqlhpeclumpzyu0.png" alt="CorpusQA 2026: RAG vs Memory Agent performance at 1M tokens" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the CorpusQA evaluation at 1M tokens, standard RAG achieved 17.38% accuracy, compared with 44.95% for the Memory Agent approach using Gemini 2.5 Pro.&lt;/p&gt;

&lt;p&gt;This illustrates how different approaches to managing large document collections can significantly affect performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  A better architecture for some analytical tasks
&lt;/h3&gt;

&lt;p&gt;For questions requiring exact aggregation, a structured processing pipeline may be more appropriate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document collection
        |
        v
Information extraction
        |
        v
Structured records
        |
        v
SQL / analytical computation
        |
        v
Evidence verification
        |
        v
LLM-generated explanation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This design separates factual computation from language generation.&lt;/p&gt;

&lt;p&gt;The LLM can interpret the user's question and explain the result, while deterministic code handles calculations.&lt;/p&gt;

&lt;p&gt;Of course, the approach has its own limitations.&lt;/p&gt;

&lt;p&gt;Extraction errors, incomplete schemas, and stale data can still produce incorrect answers.&lt;/p&gt;

&lt;p&gt;But it creates opportunities to validate individual steps instead of relying entirely on one enormous prompt.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. What About Vendor Benchmarks?
&lt;/h2&gt;

&lt;p&gt;Independent research is only one source of evidence.&lt;/p&gt;

&lt;p&gt;Model developers also publish technical evaluations.&lt;/p&gt;

&lt;p&gt;For example, Anthropic's &lt;em&gt;Claude Opus 4.6 System Card&lt;/em&gt; discusses long-context benchmarks such as MRCR and GraphWalks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://www.anthropic.com/system-cards" rel="noopener noreferrer"&gt;https://www.anthropic.com/system-cards&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MRCR evaluates the ability to locate and distinguish between similar pieces of information across long inputs.&lt;/p&gt;

&lt;p&gt;GraphWalks examines structured reasoning over graph-like information represented within the context.&lt;/p&gt;

&lt;p&gt;These evaluations are useful because they test capabilities beyond ordinary question answering.&lt;/p&gt;

&lt;p&gt;However, developer-published benchmark results need careful interpretation.&lt;/p&gt;

&lt;p&gt;Providers may use different inference settings, reasoning budgets, input limits, filtering rules, or evaluation configurations.&lt;/p&gt;

&lt;p&gt;A benchmark score obtained under one provider's setup should not automatically be treated as directly comparable with an independent benchmark.&lt;/p&gt;

&lt;p&gt;In particular, the ability to answer a question using a long prompt depends on more than the model checkpoint.&lt;/p&gt;

&lt;p&gt;It can also depend on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reasoning budget&lt;/li&gt;
&lt;li&gt;Tool usage&lt;/li&gt;
&lt;li&gt;Prompt construction&lt;/li&gt;
&lt;li&gt;Context truncation&lt;/li&gt;
&lt;li&gt;Sampling configuration&lt;/li&gt;
&lt;li&gt;Dataset filtering&lt;/li&gt;
&lt;li&gt;Evaluation metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These differences can materially affect observed results.&lt;/p&gt;

&lt;p&gt;That's one reason ATLAS is interesting: its evaluation explicitly attempts to compare long-context capabilities across multiple tasks and lengths.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. What This Means for AI Coding Assistants
&lt;/h2&gt;

&lt;p&gt;Consider an AI coding assistant with access to a large repository.&lt;/p&gt;

&lt;p&gt;There are two possible designs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach A: Put everything in the prompt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Entire repository
       |
       v
Large context window
       |
       v
LLM response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is conceptually simple.&lt;/p&gt;

&lt;p&gt;But it can be expensive and may introduce large amounts of irrelevant information.&lt;/p&gt;

&lt;p&gt;It also doesn't guarantee that the model will correctly connect all important details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach B: Search, inspect, and verify
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question
      |
      v
Repository search
      |
      v
Relevant files
      |
      v
Dependency analysis
      |
      v
LLM reasoning
      |
      v
Tool-based verification
      |
      v
Final answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach can use search tools, static analysis, tests, and targeted context retrieval.&lt;/p&gt;

&lt;p&gt;For some software engineering tasks, those tools may provide more reliable evidence than simply expanding the prompt.&lt;/p&gt;

&lt;p&gt;For instance, when checking whether a function is actually called, repository search can identify references.&lt;/p&gt;

&lt;p&gt;When checking whether a proposed patch works, an automated test can provide execution evidence.&lt;/p&gt;

&lt;p&gt;An LLM can assist with interpretation, but it doesn't have to perform every operation internally.&lt;/p&gt;

&lt;p&gt;The broader principle is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use the context window as one resource in an engineering system, not as a replacement for the system itself.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. How I Would Benchmark Modern AI Models
&lt;/h2&gt;

&lt;p&gt;The published results suggest a practical evaluation protocol for comparing models on real development workflows.&lt;/p&gt;

&lt;p&gt;I would test each model across four dimensions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test A: Context length
&lt;/h3&gt;

&lt;p&gt;Evaluate the same task family at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8K
32K
128K
256K
512K
1M
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only include lengths genuinely supported by each tested model and API configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test B: Evidence position
&lt;/h3&gt;

&lt;p&gt;Place answer-relevant information near the beginning, middle, and end of the input.&lt;/p&gt;

&lt;p&gt;Measure whether accuracy changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test C: Reasoning complexity
&lt;/h3&gt;

&lt;p&gt;Use several difficulty levels:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 1:&lt;/strong&gt; Retrieve one explicitly stated fact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 2:&lt;/strong&gt; Connect information from two files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 3:&lt;/strong&gt; Combine evidence from several documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 4:&lt;/strong&gt; Perform global analysis across an entire corpus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test D: Tool-assisted reasoning
&lt;/h3&gt;

&lt;p&gt;Compare direct long-context prompting against workflows using retrieval, code execution, or other verification tools.&lt;/p&gt;

&lt;p&gt;For every experiment, record:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Answer accuracy&lt;/td&gt;
&lt;td&gt;Measures correctness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context length&lt;/td&gt;
&lt;td&gt;Reveals scale sensitivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input/output tokens&lt;/td&gt;
&lt;td&gt;Measures resource usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;Measures responsiveness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Measures practical efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence completeness&lt;/td&gt;
&lt;td&gt;Checks whether necessary information was found&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Model versions and inference settings should be fixed and documented.&lt;/p&gt;

&lt;p&gt;Tasks should be repeated using multiple independent examples, with uncertainty estimates reported alongside aggregate scores.&lt;/p&gt;

&lt;p&gt;This is a proposed experimental design, not a claim that these tests have already been run for this article.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Limitations and Research Caveats
&lt;/h2&gt;

&lt;p&gt;There are several reasons to interpret these findings carefully.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;ATLAS is a May 2026 preprint&lt;/strong&gt;. Its results are useful research evidence, but they should not be mistaken for a universally accepted model ranking.&lt;/p&gt;

&lt;p&gt;Second, the comparison covers a specific collection of 26 models and evaluation settings. It does not establish the performance of every model released later in 2026.&lt;/p&gt;

&lt;p&gt;Third, CorpusQA evaluates a different set of models and tasks. Its numerical results cannot be directly compared with ATLAS scores.&lt;/p&gt;

&lt;p&gt;Fourth, performance at 1M tokens may involve implementation-specific constraints, including inference settings and context handling.&lt;/p&gt;

&lt;p&gt;Finally, benchmark results do not automatically predict real-world performance.&lt;/p&gt;

&lt;p&gt;An AI system answering legal questions, writing code, analyzing scientific papers, or processing financial records may require very different capabilities.&lt;/p&gt;

&lt;p&gt;The correct model and architecture should be selected through task-specific evaluation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: We Need Better Questions Than "How Many Tokens?"
&lt;/h2&gt;

&lt;p&gt;The rapid growth of context windows is an important technological achievement.&lt;/p&gt;

&lt;p&gt;But the 2026 research tells a more complicated story.&lt;/p&gt;

&lt;p&gt;The ATLAS study found that model rankings change when evaluation extends toward one million tokens.&lt;/p&gt;

&lt;p&gt;CorpusQA demonstrated the difficulty of analyzing large document collections when relevant evidence is dispersed across many sources.&lt;/p&gt;

&lt;p&gt;Together, these studies suggest that increasing context capacity alone is not enough to guarantee reliable information processing.&lt;/p&gt;

&lt;p&gt;For developers, the practical implications are straightforward:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't select an LLM based only on advertised context size.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Evaluate it at the lengths your application actually uses.&lt;/p&gt;

&lt;p&gt;Test retrieval and reasoning separately.&lt;/p&gt;

&lt;p&gt;Measure the quality of evidence, not only the fluency of the generated answer.&lt;/p&gt;

&lt;p&gt;And consider whether structured tools, retrieval systems, or deterministic computation can make your application more reliable.&lt;/p&gt;

&lt;p&gt;The future of long-context AI may not be about putting everything into one prompt.&lt;/p&gt;

&lt;p&gt;It may be about building systems that know &lt;strong&gt;what to retrieve, what to remember, what to compute, and what to verify.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A million-token context window is a capability.&lt;/p&gt;

&lt;p&gt;Reliable reasoning over a million tokens is a different achievement.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;[1] ATLAS — All-round Testing of Long-context Abilities across Scales (2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deli Huang et al.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2605.28079" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2605.28079&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[2] CorpusQA — A 10 Million Token Benchmark for Corpus-Level Analysis and Reasoning (2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Zhiyuan Lu et al.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2601.14952" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2601.14952&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[3] Claude Opus 4.6 System Card (2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anthropic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/system-cards" rel="noopener noreferrer"&gt;https://www.anthropic.com/system-cards&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Discussion
&lt;/h2&gt;

&lt;p&gt;Do you think future AI systems will rely primarily on larger context windows, or will retrieval, memory, and tool-assisted reasoning become more important?&lt;/p&gt;

&lt;p&gt;And have you encountered cases where an LLM missed important information even though it was present in the prompt?&lt;/p&gt;

&lt;p&gt;I'd be interested in hearing about real-world experiences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/coffee1337" rel="noopener noreferrer"&gt;https://github.com/coffee1337&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portfolio:&lt;/strong&gt; &lt;a href="https://coffee1337.github.io/" rel="noopener noreferrer"&gt;https://coffee1337.github.io/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>openai</category>
    </item>
    <item>
      <title>The Labeling Era Is Over; the Verifying Era Is Here</title>
      <dc:creator>Agent Hands</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:15:54 +0000</pubDate>
      <link>https://dev.to/agenthandsai/the-labeling-era-is-over-the-verifying-era-is-here-4cc4</link>
      <guid>https://dev.to/agenthandsai/the-labeling-era-is-over-the-verifying-era-is-here-4cc4</guid>
      <description>&lt;h1&gt;
  
  
  The Labeling Era Is Over; the Verifying Era Is Here
&lt;/h1&gt;

&lt;p&gt;For the last decade, the biggest gig market in AI looked like this: a person, a screen, and an endless queue of images to label. Cars, stop signs, pedestrians. Mechanical Turk, annotation farms, whole companies built on armies of clickers drawing boxes around things that already happened. It was necessary work — models needed examples — and it was anonymous, interchangeable, and paid like it.&lt;/p&gt;

&lt;p&gt;That era is winding down. Not because the labels ran out, but because they stopped being the bottleneck.&lt;/p&gt;

&lt;p&gt;The new bottleneck is ground truth, and it doesn't live on a screen. It lives at a place, at a time. Is that storefront actually open? Is the parking lot full at 8 AM on a Tuesday? What does the skyline look like right now, from that corner, in this weather? Training data goes stale the moment the world changes; verification never does, because it happens live.&lt;/p&gt;

&lt;p&gt;This is the verifying era, and its economics flip the old ones inside out.&lt;/p&gt;

&lt;p&gt;Labeling scaled with the cloud. One task could be done by anyone, anywhere, so price collapsed toward the lowest bid. Verifying scales with feet on the ground — it can only be done by someone who is &lt;em&gt;there&lt;/em&gt;. Your location and your eyes become the asset, not your clicking speed. A gig like "take a photo of Hudson River Park tomorrow morning" can't be outsourced to a farm in another hemisphere or automated away. The scarcity is geographic, which is the one thing the internet never flattened.&lt;/p&gt;

&lt;p&gt;That's why AI agents — the actual software programs planning trips, scouting real estate, monitoring conditions — are starting to pay real money for humans to confirm what's real. An agent can't physically go check. It can reason about satellite images and reviews, but when it needs a photo of a specific corner this morning, it needs a body. Yours.&lt;/p&gt;

&lt;p&gt;The pay reflects the premium. On &lt;a href="https://agenthands-app.vercel.app" rel="noopener noreferrer"&gt;AgentHands&lt;/a&gt;, where agents post paid physical-world gigs, a simple photo job at Hudson River Park pays $9.00 (or $12.75 for members, since the platform's 15%/40% fee is lower for members). There's even a referral job worth up to $191.98. That's not annotation-farm money — that's what ground truth costs when only a person on the scene can provide it.&lt;/p&gt;

&lt;p&gt;What this means for workers is simple and kind of great: your biggest advantage is just... being somewhere. The ten-minute walk to the park with a phone is the job. No résumé, no tutorial, no leaderboard grind. You show up, you see the thing, you prove it. The world is the task queue now.&lt;/p&gt;

&lt;p&gt;What it means for everyone else: the last wave of AI labor made models that know what things look like. This wave is making systems that know what's happening — a live, human-verified layer of reality, refreshed constantly, one photo at a time. Agents don't just need training data anymore. They need eyes on the ground.&lt;/p&gt;

&lt;p&gt;The labeling era was about teaching machines what the world was. The verifying era is about telling them what it is, right now. And that's a job only a human can do — which, for once, is exactly why it pays.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>DroneWatch AI: Building a Multi-Sensor Drone Detection Demonstrator</title>
      <dc:creator>Devaland</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:00:08 +0000</pubDate>
      <link>https://dev.to/devaland/dronewatch-ai-building-a-multi-sensor-drone-detection-demonstrator-1n71</link>
      <guid>https://dev.to/devaland/dronewatch-ai-building-a-multi-sensor-drone-detection-demonstrator-1n71</guid>
      <description>&lt;p&gt;Earlier this year I entered DroneWatch AI in the EUDIS Defence Hackathon in Bucharest. The idea stayed with me, and I have now built it into a working demonstrator. This is what it is, how it works, and why a software layer, not more hardware, is the interesting part of drone detection.&lt;/p&gt;

&lt;p&gt;First, honestly: this is a concept demonstrator, not an operational system. The drone-threat signals are simulated. Two public feeds are live and real: ADS-B air traffic and, since 25 September 2026, network Remote ID, which shows only drones that identify themselves, as context, never as a threat. It does not detect non-cooperative drones. I built it to prove the approach and to start conversations with partners.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: cheap drones, expensive detection
&lt;/h2&gt;

&lt;p&gt;Commercial drones now threaten airports, critical infrastructure, public events and borders. The usual answer is specialised counter-drone hardware, which is expensive, so coverage stays sparse and hard to scale. Meanwhile a single sensor is noisy: radio-frequency alone, acoustics alone or radar alone each throw false alarms, and operators get flooded with unfused, unexplained detections they cannot act on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea: fuse weak signals, do not buy more hardware
&lt;/h2&gt;

&lt;p&gt;Plenty of cheap, distributed sensors already exist. The value is not another sensor. It is the software intelligence layer that makes the ones you have smarter, correlates them, and hands a clear, explainable track to whoever is on watch.&lt;/p&gt;

&lt;p&gt;DroneWatch fuses five sources into one picture per zone:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;What it contributes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Radio-frequency&lt;/td&gt;
&lt;td&gt;The drone's control and video link&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Acoustic&lt;/td&gt;
&lt;td&gt;The rotor signature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telemetry&lt;/td&gt;
&lt;td&gt;Position and Remote-ID style data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Registry / ADS-B&lt;/td&gt;
&lt;td&gt;Which flights are authorised (this feed is live and real)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human reports&lt;/td&gt;
&lt;td&gt;What a person on the ground sees&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Built to not cry wolf
&lt;/h2&gt;

&lt;p&gt;The most important design choice is false-alarm suppression. A single sensor blip never alerts. A registered, authorised flight, even a loud one, stays quiet. A HIGH assessment requires at least two independent sensors to agree and a contact with no matching authorised flight. An alert that is wrong most of the time gets ignored, and in this domain that is the failure that matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live data, a tactical map, and an AI that explains itself
&lt;/h2&gt;

&lt;p&gt;The demonstrator plots live, real air traffic from a public ADS-B feed on a tactical map, around a chosen protected site, next to the simulated drone track. Since 25 September 2026 it also reads network Remote ID from Dronetag's public network: an identified drone near the site appears as context and never raises the threat level on its own, because identified is not the same as authorised. A two-tier engine assesses each situation: deterministic rules first, then an AI layer that explains, in plain operator language, why a given threat level is justified by the signals present. It runs on infrastructure I own and monitor, the same way I build and run every other &lt;a href="https://devaland.com/blog/custom-ai-development-for-founders" rel="noopener noreferrer"&gt;custom AI system for founders&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built to integrate
&lt;/h2&gt;

&lt;p&gt;Being usable means speaking the interfaces operators already run. The design ingests real sensors and pushes a scored track into an existing command system through recognised standards:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Interfaces&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identification&lt;/td&gt;
&lt;td&gt;Remote ID (ASTM F3411), ADS-B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air and drone traffic&lt;/td&gt;
&lt;td&gt;ASTERIX, U-space / UTM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Military command and control&lt;/td&gt;
&lt;td&gt;STANAG 4586 / 4609, Link 16&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It stays strictly defensive: detection and early-warning only, with any response left to a separate, authorised, human-in-the-loop system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it goes next, and who I am looking for
&lt;/h2&gt;

&lt;p&gt;The honest next step is a pilot at one real site with one or two real sensor types plus the live feeds, to measure the real-world false-alarm rate, the number that actually matters. From there it grows toward machine-learning detection and a distributed grid.&lt;/p&gt;

&lt;p&gt;I am looking for serious partners to build this into a fielded system: counter-UAS and sensor companies, systems integrators, and people working on European defence innovation. If you bring the sensors and the accreditation path, I bring the AI fusion layer. My background is as an Army Engineer (Military Technical Academy, Bucharest), so I understand both the operational world and the software. If that is a fit, I would value a conversation. You can also read &lt;a href="https://devaland.com/blog/what-a-paid-ai-pilot-looks-like" rel="noopener noreferrer"&gt;what a paid AI pilot looks like&lt;/a&gt; or &lt;a href="https://devaland.com/blog/hire-a-fractional-ai-engineer" rel="noopener noreferrer"&gt;hire a fractional AI engineer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is DroneWatch AI an operational counter-drone system?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. It is a concept demonstrator. The drone-threat signals are simulated and it does not detect non-cooperative drones. Two public feeds are live and real: ADS-B air traffic, and network Remote ID, which shows only drones that identify themselves and is treated as context, never as a threat. It exists to prove the fusion approach and to start partner conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does it reduce false alarms?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It requires agreement. A single sensor blip never raises an alert, and an authorised, registered flight never does. A HIGH assessment needs at least two independent sensors to agree and a contact with no matching authorised flight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it replace radar or RF sensors?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. It is the software fusion and AI layer above whatever sensors you already have. It makes distributed, mixed sensors smarter and hands a scored, explainable track to your command system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would it take to field it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real sensor integration at one site, a pilot to measure the real false-alarm rate, and a partner who brings sensors and an accreditation path. EUDIS and European Defence Fund calls fund exactly this kind of dual-use software layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who built it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marius Andronie, an Army Engineer who now builds and operates production AI systems. DroneWatch AI began as an entry to the &lt;a href="https://taikai.network/eudisROMANIA/hackathons/2026spring/projects/cmmepeb5i02e5118jgf2fjhu0/idea" rel="noopener noreferrer"&gt;EUDIS Defence Hackathon in Bucharest&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;This project was first entered in the &lt;a href="https://taikai.network/eudisROMANIA/hackathons/2026spring" rel="noopener noreferrer"&gt;EUDIS Defence Hackathon Spring 2026, Romania&lt;/a&gt;, part of the EU Defence Innovation Scheme.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on devaland.com: &lt;a href="https://devaland.com/blog/dronewatch-ai-multi-sensor-drone-detection" rel="noopener noreferrer"&gt;DroneWatch AI: Building a Multi-Sensor Drone Detection Demonstrator&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>security</category>
    </item>
    <item>
      <title>Stop Building Listening Dashboards. Build Listening Tools Your Agent Can Call.</title>
      <dc:creator>Jiahui Miao</dc:creator>
      <pubDate>Wed, 14 Oct 2026 13:47:35 +0000</pubDate>
      <link>https://dev.to/jiahui-miao/stop-building-listening-dashboards-build-listening-tools-your-agent-can-call-2c4i</link>
      <guid>https://dev.to/jiahui-miao/stop-building-listening-dashboards-build-listening-tools-your-agent-can-call-2c4i</guid>
      <description>&lt;p&gt;&lt;em&gt;I built an open-source listening system, EchoWatch, and made a protocol — MCP — its first interface, ahead of its own dashboard. The next user of a listening tool is not an analyst staring at charts. It is an agent that needs to ask, in the middle of a task, "what changed, how much, and should I care?" — and get an answer it can act on.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every listening product I have ever opened makes the same assumption: a human will log in, look at a dashboard, and decide what matters. The charts get prettier every year. The assumption gets older. My operation does not have an analyst on staff. It has an AI system that runs my publishing, my monitoring, and my follow-ups — for an audience of exactly one principal: me. A dashboard that waits for me to visit it is a dashboard that gets visited never. So this week I built the listening layer my system actually needed, and I built it agent-first.&lt;/p&gt;

&lt;p&gt;EchoWatch collects mentions from live sources, dedupes and stores them locally in SQLite, and exposes them to my agent as four MCP tools: &lt;code&gt;search_mentions&lt;/code&gt;, &lt;code&gt;sentiment_trend&lt;/code&gt;, &lt;code&gt;hot_events&lt;/code&gt;, and &lt;code&gt;generate_brief&lt;/code&gt;. The dashboard exists — all six of its routes serve real data — but it is the second surface, not the product. The product is a question an agent can ask at 3 a.m. without waking anyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers are unglamorous, and they are real
&lt;/h2&gt;

&lt;p&gt;Five sources are verified live, not stubbed: Hacker News, GDELT (75 mentions in its verification run), RSS, Reddit through its RSS feed (22 mentions), and Bluesky (25), plus a sixth source, a TechCrunch feed, added with zero code through a configuration file. The local database holds 187 mentions, and re-running every fetch stores zero duplicates. That last property is a design decision, not an accident. The mature open-source monitoring suite I benchmarked against — feature by feature, across a 37-row parity matrix — dedupes with a Bloom filter. A Bloom filter has false positives, which means it silently discards real mentions and calls that efficiency. A listening tool that quietly deletes the thing it exists to hear is broken at the load-bearing wall. EchoWatch dedupes with an exact content hash enforced by a unique index: slower to describe, impossible to lie with. In its verification run, a second Hacker News fetch was intercepted 50 out of 50.&lt;/p&gt;

&lt;p&gt;The rest of the chain is equally literal. Volume spikes are detected against a rolling baseline and pushed out over a webhook — tested end to end, three true alerts fired, zero false ones on the control set. Briefs render as Markdown and HTML files with code-drawn SVG charts, because a brief an agent can forward beats a page a human must log into. The whole stack is one Python process and one SQLite file, with zero runtime dependencies, and its first GitHub Actions CI run — tests plus a Docker build — passed this morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I refused to copy
&lt;/h2&gt;

&lt;p&gt;Parity was the floor, not the goal. The suite I measured against ships two message queues, four storage engines, and a Java stack, because it was designed for enterprise clusters. Copying its feature list meant refusing its machinery: middleware is a means, not a feature, and no user has ever asked for a second message queue. Ten rows of my 37-row matrix ended as explicit, recorded decisions not to rebuild the heavy parts — each one argued on cost, not skipped in silence.&lt;/p&gt;

&lt;p&gt;And one honest limitation, stated the way I require every part of my system to state it: the LLM sentiment backend is wired behind a unified interface, but the machine that built this has no API key, so that path is not yet verified live. What runs today is a dictionary baseline — roughly 190 weighted terms with a negation window — and when no key is present the system labels its own output degraded instead of inventing a score. A listening tool that fabricates confidence is worse than one that admits a gap. The gap closes the day a key lands in the environment; the labeling stays forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Listening is a sense. Senses belong to the actor.
&lt;/h2&gt;

&lt;p&gt;Here is the claim I will defend: a dashboard treats listening as reporting — something that already happened, formatted for review. An agent treats listening as a sense — something happening now, wired directly into the thing that acts. When a spike fires in my system, it does not wait for a weekly review meeting. It reaches the same agent that writes, schedules, and escalates, with the brief already attached.&lt;/p&gt;

&lt;p&gt;The vendors will keep polishing dashboards, because dashboards are what procurement buys. But the builders wiring agents into real operations are going to route around them, the same way EchoWatch did: local data, exact dedupe, honest degradation, and a protocol where the login page used to be. Stop building listening dashboards. Build listening tools your agent can call.&lt;/p&gt;

&lt;p&gt;— Jiahui Miao, founder of vertciti, building a personal AI operating system for one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>machinelearning</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
