<?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: euk ela</title>
    <description>The latest articles on DEV Community by euk ela (@euk_ela_a3e7ed01aa3f7314e).</description>
    <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3996066%2F4287dee0-5001-456c-8e47-4f628168425b.png</url>
      <title>DEV Community: euk ela</title>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/euk_ela_a3e7ed01aa3f7314e"/>
    <language>en</language>
    <item>
      <title>Claude Fable 5.2: One Model, Two Doors — and the 20% Price Cut That Isn't About Price</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Tue, 10 Nov 2026 03:31:33 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/claude-fable-52-one-model-two-doors-and-the-20-price-cut-that-isnt-about-price-4m85</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/claude-fable-52-one-model-two-doors-and-the-20-price-cut-that-isnt-about-price-4m85</guid>
      <description>&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;Anthropic shipped Claude Fable 5.2 and Claude Mythos 5.2 on November 9. On the surface it is a routine upgrade: faster, cheaper, higher benchmark scores. The interesting part is the structure — one underlying model, two different doors into it — and the fact that Anthropic is now pricing by the task, not just by the token.&lt;/p&gt;

&lt;p&gt;Three numbers to hold on to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Price:&lt;/strong&gt; $8/$40 per million tokens, down 20% from 5.1's $10/$50&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed:&lt;/strong&gt; output up to 30% faster than 5.1, plus a fast mode at up to 2.5x speed for double the price ($16/$80)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarks:&lt;/strong&gt; 49.1% on FrontierCode 2.0, ahead of Opus 5.5 (45.5%), GPT-6 Astra (42.8%), and Gemini 4 Carbon (41.1%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the counterintuitive part: Anthropic still recommends Opus 5.5 as the default for most coding and knowledge work. Why isn't the strongest model the default? The answer is in the two calculations below.&lt;/p&gt;

&lt;h2&gt;
  
  
  One model, two doors
&lt;/h2&gt;

&lt;p&gt;Fable 5.2 and Mythos 5.2 are the same underlying model. The only difference is the guardrails.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fable 5.2:&lt;/strong&gt; ships with cybersecurity and biosecurity guardrails, publicly available&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mythos 5.2:&lt;/strong&gt; loosens some of those guardrails, only for organizations that pass Cyber Verification or the Life Sciences Verification Program&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anthropic says Fable 5.2's guardrails falsely block about 55% fewer requests than 5.1 (about 60% fewer in cybersecurity, about 40% in biology), at the same strength. So the same capability comes in two versions: a filtered one for everyone, and a fuller one for verified institutions. Model capability is now explicitly layered by trust.&lt;/p&gt;

&lt;p&gt;For agent developers, that means the same prompts and toolchains may behave differently depending on which door you walk through. If you build agents in security or biology, check which door you are on first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cheaper per token, but the real bill is per task
&lt;/h2&gt;

&lt;p&gt;Fable 5.2's per-token price is twice Opus 5.5's. Looked at that way, it is the expensive one. Anthropic's argument is a different ledger:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Fable 5.2&lt;/th&gt;
&lt;th&gt;Opus 5.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input / output (per million tokens)&lt;/td&gt;
&lt;td&gt;$8 / $40&lt;/td&gt;
&lt;td&gt;$4 / $20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FrontierCode 2.0&lt;/td&gt;
&lt;td&gt;49.1%&lt;/td&gt;
&lt;td&gt;45.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg. cost per task, FrontierCode High effort&lt;/td&gt;
&lt;td&gt;~$6.72&lt;/td&gt;
&lt;td&gt;~2x Fable's (Anthropic's figure)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On FrontierCode High effort, Fable 5.2 roughly matches Opus 5.5's best coding score at about half the cost per task. The logic is simple: fewer steps, a higher chance of getting it right the first time, so total tokens go down.&lt;/p&gt;

&lt;p&gt;But that conclusion has a precondition: it only holds for long, hard tasks. For short tasks and routine coding, Opus 5.5's per-token advantage is still there — which is exactly why Anthropic recommends it as the default. Before picking a model, look at your own task mix: the higher the share of long tasks, the more Fable 5.2 pays off.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Model IDs (from Anthropic's official docs)&lt;/span&gt;
claude-fable-5-2    &lt;span class="c"&gt;# standard mode, $8/$40&lt;/span&gt;
claude-mythos-5-2   &lt;span class="c"&gt;# restricted mode, same price, verification required&lt;/span&gt;
&lt;span class="c"&gt;# fast mode: up to 2.5x speed at $16/$80; Mythos fast mode only for verified organizations&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to read the benchmark table
&lt;/h2&gt;

&lt;p&gt;Anthropic's self-reported scorecard (all vendor numbers, not independently verified):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Fable 5.2&lt;/th&gt;
&lt;th&gt;Fable 5.1&lt;/th&gt;
&lt;th&gt;Opus 5.5&lt;/th&gt;
&lt;th&gt;GPT-6 Astra&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FrontierCode 2.0 (agentic coding)&lt;/td&gt;
&lt;td&gt;49.1%&lt;/td&gt;
&lt;td&gt;32.4%&lt;/td&gt;
&lt;td&gt;45.5%&lt;/td&gt;
&lt;td&gt;42.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FrontierSWE v2 (agentic coding)&lt;/td&gt;
&lt;td&gt;69.9%&lt;/td&gt;
&lt;td&gt;56.3%&lt;/td&gt;
&lt;td&gt;62.3%&lt;/td&gt;
&lt;td&gt;65.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench-Science 0.1 (agentic research)&lt;/td&gt;
&lt;td&gt;74.6%&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;58.7%&lt;/td&gt;
&lt;td&gt;68.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Humanity's Last Exam (with tools)&lt;/td&gt;
&lt;td&gt;74.2%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;67.7%&lt;/td&gt;
&lt;td&gt;57.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote Labor Index (knowledge work)&lt;/td&gt;
&lt;td&gt;41.3%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;21.3%&lt;/td&gt;
&lt;td&gt;20.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two independent data points for cross-checking: Artificial Analysis gives Fable 5.2 an Intelligence Index of 65, the highest score to date (Carbon 60, Opus 5.5 59). Mythos 5.2 scores 76.3% on CyScenarioBench and 89.6% on CVE Rediscovery.&lt;/p&gt;

&lt;p&gt;A reading note: Fable leads in 13 of 15 vendor comparisons, but Carbon wins one business-automation test (53.9% vs 51.4%), and Opus 5.5 edges ahead in Artificial Analysis's human-to-human Briefcase ranking (1800 vs 1785). "Leading everywhere" is not the fact — "leading in most places" is. Also, Fable 5.2's FrontierCode run was at Xhigh effort while Carbon ran at Medium effort — cross-tier comparisons need a discount.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four takeaways for agent developers
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Route by task length first.&lt;/strong&gt; Long, hard tasks go to Fable 5.2; routine work stays on Opus 5.5. Run your own task distribution through the math before trusting the per-token price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast mode is a rescue, not a default.&lt;/strong&gt; 2.5x speed at double the price fits deadline-driven long tasks, not everyday use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security and biology work: check your access first.&lt;/strong&gt; Fable's guardrails will block some requests; false blocks are down 55%, but if your use case sits on the guardrail boundary, go through verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarks at max effort will mislead you.&lt;/strong&gt; Fable 5.2's top tier costs about $26.50 per task, roughly 2.6x Opus 5.5. Test on your own tasks before going to production — don't copy launch-day numbers.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Every benchmark above is self-reported by Anthropic; the methodology is in the system card, and nobody had independently reproduced it at launch.&lt;/li&gt;
&lt;li&gt;1M-token context, 128K max output, knowledge cutoff June 2026.&lt;/li&gt;
&lt;li&gt;Fable 5.1 is now a legacy model; the Pro tier includes 1 Fable reset in the launch week (per Anthropic's help center — details vary by tier).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would you move your long tasks to Fable 5.2, or keep Opus 5.5 as the default? Tell me how you route.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Facts checked against Anthropic's November 9 announcement and cross-checked reporting (VentureBeat, The Decoder, Artificial Analysis) on 2026-11-10. Benchmark figures are vendor-reported unless stated otherwise.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>T3 Code: One Control Surface for 7 Coding Agents</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Mon, 09 Nov 2026 03:04:54 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/t3-code-one-control-surface-for-7-coding-agents-37bi</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/t3-code-one-control-surface-for-7-coding-agents-37bi</guid>
      <description>&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;T3 Code is not another coding agent. It is a control surface: a phone app, a web app, and a desktop app that all talk to one server running on your machine, and that server drives the coding agents you already have installed — Claude Code, Codex, Cursor, Grok Build, OpenCode, Google Antigravity, and fx. Seven agents, one front door.&lt;/p&gt;

&lt;p&gt;It sits at 52.5k GitHub stars under MIT, ranked #3 on GitHub Trending for the week of Nov 2–8. The author's own warning is refreshingly honest: "We are very very early in this project. Expect bugs."&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem it actually solves
&lt;/h2&gt;

&lt;p&gt;If you run two or three coding agents at once, your problem is not a missing agent. It is too many front doors: a terminal window per agent, separate sessions, separate permission prompts. Step away from your desk and checking on a long-running agent means SSHing back into your machine first.&lt;/p&gt;

&lt;p&gt;T3 Code flips the layering. The agents stay exactly as they are; you add one control plane on top. A server runs on your machine, every client (phone, browser, desktop) connects to it, and from any of them you can watch sessions, send instructions, and approve permissions for all seven agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started: three commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://t3.codes/install.sh | sh
t3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;t3&lt;/code&gt; starts the server and opens the local web app. To keep it running in the background:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;t3 service &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just want a one-off trial without installing?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx t3@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desktop packages exist too: winget or scoop on Windows, Homebrew on macOS, .deb for Debian/Ubuntu, AUR for Arch, and nixpkgs for Nix users.&lt;/p&gt;

&lt;p&gt;One prerequisite people miss: each agent's own CLI still has to be installed and logged in first — &lt;code&gt;claude auth login&lt;/code&gt; for Claude Code, &lt;code&gt;codex login&lt;/code&gt; for Codex, &lt;code&gt;agent login&lt;/code&gt; for Cursor, and so on. T3 Code is the control plane only. It does not install agents for you, and it does not manage your subscriptions or billing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four design choices worth noticing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Remote access is native, not bolted on.&lt;/strong&gt; The repo's docs have a dedicated guide for reaching the server from your phone or another machine. That is the biggest difference from similar tools that only ship a local UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Multi-account is a documented feature.&lt;/strong&gt; Codex and Claude each get their own multi-account documentation. If you juggle a personal and a work account, this is considerably cleaner than opening yet another terminal profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. It connects outward over MCP.&lt;/strong&gt; The docs cover connecting Claude Code, Codex, ChatGPT and other agents over MCP — the control plane itself can be called by other agents. Permission modes get their own doc too, which tells you the authors treat "who is allowed to make an agent do what" as a first-class concern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The pitch is that there is no pitch.&lt;/strong&gt; The README literally has a section titled "Wait, what are you selling me?" and the answer is "Nothing." The authors built it because they wanted the best agent development experience, judged the existing options (the Codex desktop app, Conductor, Claude Desktop, Cursor Glass) as not meeting their bar, and want you to have everything you need to fork it if they go astray.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limitations
&lt;/h2&gt;

&lt;p&gt;Three things to know before your expectations drift:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is very early, by the author's own admission. Do not bet your main production workflow on it yet.&lt;/li&gt;
&lt;li&gt;Large feature contributions are (mostly) not being accepted yet — read the contributing notes before you build something big on top.&lt;/li&gt;
&lt;li&gt;There is no standalone docs site, only the &lt;code&gt;docs/&lt;/code&gt; folder in the repo, and installing/logging into all seven agents remains your homework.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If you regularly use two or more coding agents, this is worth an afternoon. Single-agent users will feel less of the benefit.&lt;/li&gt;
&lt;li&gt;Get &lt;code&gt;t3&lt;/code&gt; working locally first, then set up phone remote access. Do not start with the always-on service.&lt;/li&gt;
&lt;li&gt;For multi-account setups, read the Codex/Claude multi-account docs before writing your own switching scripts.&lt;/li&gt;
&lt;li&gt;Treat it as a control plane, not an agent — model choice, subscriptions, and billing still live with each agent itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How many coding agents are you running at once — and how are you keeping their front doors straight?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Facts checked against the project's GitHub repo and README on 2026-11-09 (52,526 stars, 10,019 forks, MIT). Star counts move; the architecture point does not.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>A Coding Agent's Minimal Loop: 767 Lines of TypeScript with Zero Dependencies</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Wed, 12 Aug 2026 23:22:57 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/a-coding-agents-minimal-loop-767-lines-of-typescript-with-zero-dependencies-42j3</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/a-coding-agents-minimal-loop-767-lines-of-typescript-with-zero-dependencies-42j3</guid>
      <description>&lt;p&gt;What is the smallest coding agent that still counts as an agent? pi-from-scratch makes a strong claim: 767 lines of TypeScript with zero npm runtime dependencies — a runnable agent that reads files, edits code, and executes shell commands. It is a teaching project that deconstructs the pi agent's data flow into a minimal implementation you can read in one evening.&lt;/p&gt;

&lt;p&gt;I read all five source files (agent, llm, tools, cli, tui). Here is what actually matters in them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "600-line" claim checks out.&lt;/strong&gt; The five files total 767 lines; removing comments and blank lines leaves 616. And package.json's &lt;code&gt;dependencies&lt;/code&gt; object is empty — it runs on Node built-ins only (&lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;fs&lt;/code&gt;, &lt;code&gt;child_process&lt;/code&gt;, &lt;code&gt;readline&lt;/code&gt;). The minimalism is real, not a headline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The loop is one while(true)&lt;/strong&gt; (src/agent.ts:80). Each round: optionally compact the context, stream the LLM while collecting text and &lt;code&gt;tool_calls&lt;/code&gt;, append the assistant message, execute tools serially, append &lt;code&gt;tool_result&lt;/code&gt; messages, repeat — until the model stops calling tools. No &lt;code&gt;max_steps&lt;/code&gt;; the model decides when the task is done. When messages exceed 50, a summarizer compacts the older ones and keeps the last 20.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three production traps are handled explicitly&lt;/strong&gt; — and each is a failure mode you only hit when you have actually written an agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;max_tokens truncation&lt;/em&gt; (agent.ts:125). When output is cut with &lt;code&gt;finish_reason: length&lt;/code&gt; and tool calls are pending, the arguments may be partial JSON. The code does not execute them. It writes an error &lt;code&gt;tool_result&lt;/code&gt; back into the context so the model can retry. Skip this branch and truncated tool calls execute with corrupt arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Abort consistency&lt;/em&gt; (agent.ts:107, 165). A dropped &lt;code&gt;tool_call&lt;/code&gt; still needs its matching &lt;code&gt;tool_result&lt;/code&gt; — the OpenAI protocol requires a 1:1 correspondence, and a missing result breaks session resume. Every aborted call gets &lt;code&gt;"error: aborted"&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Compaction failure&lt;/em&gt; (agent.ts:62). If summarization fails, the original context is kept untouched. An empty summary is worse than an overlong context.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The protocol layer&lt;/strong&gt; (src/llm.ts) is where the API's quirks live: &lt;code&gt;tool_call&lt;/code&gt; deltas accumulate by index with partial JSON arguments, flushed in order at stream end; &lt;code&gt;finish_reason&lt;/code&gt; maps &lt;code&gt;tool_calls → tool_use&lt;/code&gt; and &lt;code&gt;length → max_tokens&lt;/code&gt;; assistant messages need non-null content or &lt;code&gt;tool_calls&lt;/code&gt; (an empty string placeholder avoids HTTP 400); and &lt;code&gt;tool_result&lt;/code&gt; blocks become separate &lt;code&gt;role: "tool"&lt;/code&gt; messages. The context is plain JSON, which is why session persistence is only ~20 lines — append-only JSONL at &lt;code&gt;~/.nanopi/session.jsonl&lt;/code&gt; that tolerates corrupted lines on load (cli.ts:81).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tools&lt;/strong&gt; (src/tools.ts) are the minimal set: &lt;code&gt;read_file&lt;/code&gt;, &lt;code&gt;write_file&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;run_bash&lt;/code&gt;. Output is truncated to the last 200 lines with the full output dumped to a temp file — error messages live at the end. &lt;code&gt;edit&lt;/code&gt; requires a unique match and uses a function replacer so &lt;code&gt;$&lt;/code&gt; characters are not interpreted. &lt;code&gt;run_bash&lt;/code&gt; has a 30-second timeout and 1MB buffer cap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What 600 lines costs.&lt;/strong&gt; The same source admits it: tool arguments are never validated, and &lt;code&gt;run_bash&lt;/code&gt; executes any command with no approval gate (tools.ts:3-4, agent.ts:146). This is a teaching agent, not a safety baseline. The permission layer — approvals, sandboxing, argument validation — is exactly what separates this from your production harness, and that layer is absent here by design. Reading it against your own harness's permission model is the most productive exercise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who it is for / not for.&lt;/strong&gt; It is for developers who want to understand the agent loop, tool-calling protocol, and context compaction, or who want a basis for writing a lightweight agent. It is not for anyone who needs a production-ready agent (no permission gate, no validation, no parallel tool execution), anyone who will not send an API key to a configurable base URL, or non-TypeScript stacks. The companion site (pi-from-scratch.vercel.app) ships pre-generated traces, so browsing it never calls a model API — a nice pattern for teaching costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not tested / not run.&lt;/strong&gt; I read the source; I did not install, build, or run the project, and I did not execute its test suite. The repository ships vitest tests for all five modules plus an e2e test. Star count (746) is from the GitHub API on 2026-08-13.&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/SaladDay/pi-from-scratch" rel="noopener noreferrer"&gt;https://github.com/SaladDay/pi-from-scratch&lt;/a&gt; · &lt;a href="https://github.com/SaladDay/pi-from-scratch/blob/main/src/agent.ts" rel="noopener noreferrer"&gt;https://github.com/SaladDay/pi-from-scratch/blob/main/src/agent.ts&lt;/a&gt; · &lt;a href="https://github.com/SaladDay/pi-from-scratch/blob/main/src/llm.ts" rel="noopener noreferrer"&gt;https://github.com/SaladDay/pi-from-scratch/blob/main/src/llm.ts&lt;/a&gt; · &lt;a href="https://github.com/SaladDay/pi-from-scratch/blob/main/src/tools.ts" rel="noopener noreferrer"&gt;https://github.com/SaladDay/pi-from-scratch/blob/main/src/tools.ts&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>typescript</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The 116 Token Cut: A Source-Level Look at Multi-Agent CAD (MAC)</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Tue, 11 Aug 2026 23:08:09 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/the-116x-token-cut-a-source-level-look-at-multi-agent-cad-mac-58f4</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/the-116x-token-cut-a-source-level-look-at-multi-agent-cad-mac-58f4</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR: for text-to-CAD, the dominant token cost is not generation — it's context replay, and a 4-agent pipeline with structured state passing removes that term almost entirely.&lt;/strong&gt; Pan-Chera/Multi-Agent-CAD (MIT, Tsinghua IEI Lab) runs the same 10 prompts and 141 geometry features as the single-agent &lt;code&gt;cad skill&lt;/code&gt; baseline (earthtojake/text-to-cad) on the same LLM (Qwen 3.7-max): tokens 103,950,189 → 896,340 (116×), API calls 1,307 → 50 (26×), cost ¥125.69 → ¥9.67 (13×), feature pass rate 138/141 → 140/141 (97.9% → 99.3%). I have not tested or run it; every figure is from the authors' benchmark doc, and the arithmetic reproduces row by row.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The numbers check out.&lt;/strong&gt; Their pricing: input ¥6/M, cache_read ¥0.6/M, output ¥18/M; cost = (input×6 + cache_read×0.6 + output×18)/1e6 CNY. Spot-check P1 baseline: 212,689×6 + 5,413,760×0.6 + 55,878×18 = ¥5.53 ✓; MAC P6: 157,815×6 + 119,799×18 = ¥3.10 ✓. I re-ran all 20 rows from docs/quantified_quality.md — every row, the totals, and the 116.0×/13.0×/26.1× ratios reproduce exactly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mechanism behind 116×.&lt;/strong&gt; 96,192,896 of the baseline's 103,950,189 tokens — 92.5% — were cache_read: a single agent re-reads its own accumulated conversation on every repair round, so tokens grow superlinearly with iterations. MAC passes only compact structured JSON between stages (CADBrief → ArchitectPlan → code → QA report); cache_read falls 96.2M → 10,496, input 5.97M → 524k, output 1.79M → 362k. Recomposing the old bill: cache_read ¥57.72 (46%) is the single most expensive line. Hallucination propagation is also cut at stage boundaries — each agent starts from structured output, not the previous agent's narrative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deterministic translator and dual-engine QA.&lt;/strong&gt; &lt;code&gt;_plan_to_code&lt;/code&gt; (multi_agent_cad/nodes.py:893) translates ArchitectPlan JSON into build123d code at zero token cost for common operations; unsupported step types emit &lt;code&gt;# TODO_AIDER&lt;/code&gt; placeholders filled by an Aider pass (nodes.py:460, 524–542). Verification is machine-checked: Engine A runs cadpy.analysis geometry selectors on the .step, Engine B checks the .stl triangulation; runtime guards record typed markers (MISSED_CUT, FILLET_FAILED, …); schemas.py routes errors by type — DIMENSION back to the Coder, TOPOLOGY back to the Architect, FATAL halts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the caveats.&lt;/strong&gt; 10 prompts, one run each, one LLM; the baseline was rerun on the weaker Qwen 3.7-max (the original cad-skill tests used Claude/ChatGPT and scored higher); "~10× faster" wall-clock is explicitly an order-of-magnitude estimate, not measured; you need your own model API key, and the Web UI executes generated .py server-side (trusted network only). Observable for evaluators: the baseline's 3 failures and MAC's single failure are all fillet operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who should look.&lt;/strong&gt; Engineers building multi-stage agent pipelines where context cost compounds with repair iterations — structured handoff, deterministic translator, and typed error routing transfer beyond CAD. Skip it if you expect turnkey output without running the pipeline or paying API costs.&lt;/p&gt;

&lt;p&gt;Project: &lt;a href="https://github.com/Pan-Chera/Multi-Agent-CAD" rel="noopener noreferrer"&gt;https://github.com/Pan-Chera/Multi-Agent-CAD&lt;/a&gt; · README: &lt;a href="https://github.com/Pan-Chera/Multi-Agent-CAD/blob/main/README.md" rel="noopener noreferrer"&gt;https://github.com/Pan-Chera/Multi-Agent-CAD/blob/main/README.md&lt;/a&gt; · Benchmark doc: &lt;a href="https://github.com/Pan-Chera/Multi-Agent-CAD/blob/main/docs/quantified_quality.md" rel="noopener noreferrer"&gt;https://github.com/Pan-Chera/Multi-Agent-CAD/blob/main/docs/quantified_quality.md&lt;/a&gt; · Baseline: &lt;a href="https://github.com/earthtojake/text-to-cad" rel="noopener noreferrer"&gt;https://github.com/earthtojake/text-to-cad&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
    <item>
      <title>A 45M-Parameter Agentic Model in a 14MB Binary: Inside Cactus Needle 2</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Mon, 10 Aug 2026 23:19:45 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/a-45m-parameter-agentic-model-in-a-14mb-binary-inside-cactus-needle-2-402m</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/a-45m-parameter-agentic-model-in-a-14mb-binary-inside-cactus-needle-2-402m</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR: tool-calling is now a workload a 45M-parameter model can carry.&lt;/strong&gt; Needle 2 (Apache-2.0) ships as a single 14MB binary that runs a full session in about 28MB of RAM, targeting phones, Raspberry Pi, and MCUs. I have not tested or run it; this is a review of the official README, model card, product page, and architecture paper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The numbers check out arithmetically.&lt;/strong&gt; 45M params at CQ2 (~2 bits/weight, quantized during pretraining rather than post-hoc) is 45e6 × 2 / 8 = 11.25 MB — the bulk of the 14MB binary, consistent with "weights never decompress into RAM." A 256-token sliding KV window with tools pinned as KV sinks keeps session memory near 28MB regardless of conversation length. Official speed claims: ~500 tok/s decode on Raspberry Pi 5, 400–1,500 tok/s on VR headsets, 300–700 tok/s on sub-$200 phones, ~70 MFLOPs/token vs ~460 for LFM2.5 and ~6,000 for Apple FM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The design is a bet on context, not weights.&lt;/strong&gt; The FFN is replaced by a fixed orthonormal Walsh–Hadamard transform (n log n, no weights to read); memory comes from hashed n-gram "engram" tables; routing is Sinkhorn-normalized. The README cites arXiv:2607.18363, a controlled study where attention-only transformers match standard transformers at matched parameter count (0.006 nats gap) but are better at context-grounded answers and worse where knowledge must live in weights — which fits a tool-calling model and misfits a chatbot (17.0% on DroidCall).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Behavior contract.&lt;/strong&gt; Text in, JSON out: a byte-level grammar compiled from your declared schemas constrains every token, so calls cannot be malformed. Requests no declared tool can serve return the empty call &lt;code&gt;[]&lt;/code&gt;; there is no free-text fallback. Arguments contain only values evidenced by the input — optional fields are omitted, not guessed. Confidence is the min of a calibrated head and the call's decoding probability; below threshold it escalates instead of executing. Above five tools, a retrieval head embeds schemas once and only the top-5 enter context — unselected tools are unreachable, not merely unlikely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to read the benchmarks.&lt;/strong&gt; Mobile Actions: 63.7% (LFM2.5 69.1%, FunctionGemma 64.0%, Apple FM 57.6%); BFCL v4 single-turn 42.6% overall with 93.4% well-formed; Seal-Tools 32.6% in-domain / 28.7% out-of-domain. Note the asymmetry: Needle runs at 2 bits with a 256-token window while baselines run f16 with full context, and all figures are vendor-reported with no third-party reproduction yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who should look.&lt;/strong&gt; Edge and embedded engineers building tool callers. Schemas compile into the decode grammar; LoRA fine-tuning on the frozen base merges at export into one &lt;code&gt;.cact&lt;/code&gt; file that runs on the same engine — no recompilation. Skip it if you need a general assistant: training data is proprietary (115B + 38B tokens), there is no free-text fallback, and the 256-token window is a hard budget. For context, Pebble already runs it locally in the Index 01 watch app.&lt;/p&gt;

&lt;p&gt;Project: &lt;a href="https://github.com/cactus-compute/needle" rel="noopener noreferrer"&gt;https://github.com/cactus-compute/needle&lt;/a&gt; · README: &lt;a href="https://github.com/cactus-compute/needle/blob/main/README.md" rel="noopener noreferrer"&gt;https://github.com/cactus-compute/needle/blob/main/README.md&lt;/a&gt; · Model card: &lt;a href="https://huggingface.co/Cactus-Compute/needle2" rel="noopener noreferrer"&gt;https://huggingface.co/Cactus-Compute/needle2&lt;/a&gt; · Paper: &lt;a href="https://arxiv.org/abs/2607.18363" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2607.18363&lt;/a&gt; · Product page: &lt;a href="https://cactuscompute.com/needle" rel="noopener noreferrer"&gt;https://cactuscompute.com/needle&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Claude Code Can't Draw — This Plugin Borrows Your Codex CLI Login</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Sun, 09 Aug 2026 23:09:43 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/claude-code-cant-draw-this-plugin-borrows-your-codex-cli-login-559c</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/claude-code-cant-draw-this-plugin-borrows-your-codex-cli-login-559c</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR: "Claude can't draw" is a budget problem, not a capability problem.&lt;/strong&gt; codex-bridge (MIT) is a Claude Code plugin that routes image generation (gpt-image-2) and five GPT-5 subagents through the Codex CLI login you already have — billing against your ChatGPT plan instead of a second API key. I have not tested or run it; this is a source-reading review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works.&lt;/strong&gt; Two bash wrappers shell out to &lt;code&gt;codex exec&lt;/code&gt;, Codex CLI's non-interactive mode, with your existing &lt;code&gt;codex login&lt;/code&gt; (both scripts check &lt;code&gt;codex login status&lt;/code&gt; first). Text tasks use a &lt;code&gt;read-only&lt;/code&gt; sandbox and capture only the final answer via &lt;code&gt;-o &amp;lt;tmpfile&amp;gt;&lt;/code&gt; (&lt;code&gt;bin/codex-run:92-96&lt;/code&gt;). Image tasks use a &lt;code&gt;workspace-write&lt;/code&gt; sandbox scoped to the output directory (&lt;code&gt;bin/codex-imagegen:110&lt;/code&gt;), then verify the file landed. Exit codes: 0 ok, 1 precondition, 2 failure, 124 timeout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the split matters.&lt;/strong&gt; Codex runs as a separate process, so its intermediate output never enters your Claude context — you pay Claude tokens only for the brief and the review. The trade-off: Codex is blind to your conversation history, so every brief must stand alone, which is why every subagent is instructed to verify before reporting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The delegation rubric&lt;/strong&gt; (&lt;code&gt;skills/codex-delegate/SKILL.md&lt;/code&gt;) is the most reusable part: delegate high-volume, low-judgment work (mechanical multi-file edits, bulk scaffolding, exhaustive sweeps, all image work, long self-contained subtasks); keep low-volume, high-judgment work (architecture calls, ambiguous requirements, anything needing conversation history, edits under ~3 files). Round-tripping a two-line fix costs more, not less.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trust boundary.&lt;/strong&gt; No API key: credentials live in &lt;code&gt;~/.codex&lt;/code&gt; from &lt;code&gt;codex login&lt;/code&gt;, and every call forwards your task text to OpenAI's servers. If your team's data policy cannot accept a second vendor seeing prompts, that is a blocker, not a footnote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caveats from README and source.&lt;/strong&gt; 1–4 minutes per image; image turns burn ChatGPT quota ~3–5× faster than text; the default path cannot emit native alpha (chroma-key strip, or CLI fallback plus API key); macOS and Linux only; custom sizes must satisfy longest edge ≤3840px, both edges multiples of 16, ratio ≤3:1, and 655,360–8,294,400 total pixels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who should try it.&lt;/strong&gt; You already pay for a ChatGPT plan, run Claude Code daily, and regularly produce images or mechanical bulk edits. Skip it if you rarely need images, your work is small and interactive, or your data rules forbid OpenAI seeing prompts.&lt;/p&gt;

&lt;p&gt;Project: &lt;a href="https://github.com/Sateezg/codex-bridge" rel="noopener noreferrer"&gt;https://github.com/Sateezg/codex-bridge&lt;/a&gt; · README: &lt;a href="https://github.com/Sateezg/codex-bridge/blob/main/README.md" rel="noopener noreferrer"&gt;https://github.com/Sateezg/codex-bridge/blob/main/README.md&lt;/a&gt; · codex-run: &lt;a href="https://github.com/Sateezg/codex-bridge/blob/main/bin/codex-run" rel="noopener noreferrer"&gt;https://github.com/Sateezg/codex-bridge/blob/main/bin/codex-run&lt;/a&gt; · codex-imagegen: &lt;a href="https://github.com/Sateezg/codex-bridge/blob/main/bin/codex-imagegen" rel="noopener noreferrer"&gt;https://github.com/Sateezg/codex-bridge/blob/main/bin/codex-imagegen&lt;/a&gt; · delegate rubric: &lt;a href="https://github.com/Sateezg/codex-bridge/blob/main/skills/codex-delegate/SKILL.md" rel="noopener noreferrer"&gt;https://github.com/Sateezg/codex-bridge/blob/main/skills/codex-delegate/SKILL.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>File provenance for the AI-agent era: evidence labels, not guesses</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Sat, 08 Aug 2026 23:09:07 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/file-provenance-for-the-ai-agent-era-evidence-labels-not-guesses-48jb</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/file-provenance-for-the-ai-agent-era-evidence-labels-not-guesses-48jb</guid>
      <description>&lt;p&gt;AI coding agents write files faster than anyone can remember where they came from. Git records versions; DVC and OpenLineage record pipelines you declared up front; nothing records the unplanned output — the CSV an agent wrote mid-task, the PNG it regenerated, the notebook that silently touched a data file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/uczltw6/trace-file-lineage" rel="noopener noreferrer"&gt;trace-file-lineage&lt;/a&gt; (MIT, ~361★, v0.7.0) is a local CLI that answers "which script, notebook, data, command, or AI agent produced this file?" with five confidence labels — &lt;code&gt;verified&lt;/code&gt;, &lt;code&gt;strong-candidate&lt;/code&gt;, &lt;code&gt;candidate&lt;/code&gt;, &lt;code&gt;weak-signal&lt;/code&gt;, &lt;code&gt;insufficient&lt;/code&gt; — and it labels guesses as guesses. I have not tested or run this tool; everything below is from reading the README and source files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two modes, one honest split.&lt;/strong&gt; Retrospective: for files you already have, it reconstructs the most likely origins from code, document metadata, and Git history — "ranked guesses with the reasoning attached" (README). Prospective: &lt;code&gt;lineage run --task "..." -- python sweep.py&lt;/code&gt; wraps a command, captures the task boundary, and files changed during the run are marked &lt;code&gt;verified&lt;/code&gt; — "These answers are proof" (README). It never moves, renames, or deletes files; &lt;code&gt;lineage layout --suggest&lt;/code&gt; only proposes a destination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What &lt;code&gt;verified&lt;/code&gt; means in source.&lt;/strong&gt; In &lt;a href="https://github.com/uczltw6/trace-file-lineage/blob/main/skills/trace-file-lineage/scripts/lineage_core/evidence.py" rel="noopener noreferrer"&gt;&lt;code&gt;evidence.py&lt;/code&gt;&lt;/a&gt;, every fact carries a &lt;code&gt;basis&lt;/code&gt; (observation / declaration / inference / confirmation), an &lt;code&gt;assurance&lt;/code&gt; field (verified when exact, candidate otherwise), the source path and line it came from, and a deterministic id (&lt;code&gt;uuid5(NAMESPACE_URL, canonical_json)&lt;/code&gt;), so re-scanning the same fact yields the same id. Evidence about the evidence, with location attached — that design is the part worth copying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trust order and privacy.&lt;/strong&gt; The README ranks sources: your own confirmation → recorded runs → imported provenance → declarations → static code → content → names/timestamps. Extracted text lives in &lt;code&gt;.file-lineage/&lt;/code&gt; (SQLite-backed, git-ignored by default). Privacy claims: nothing is uploaded, no account or API key; scanning never executes your code — only &lt;code&gt;lineage run&lt;/code&gt; runs the explicit command after &lt;code&gt;--&lt;/code&gt;, and password-looking arguments are stripped from recorded commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deliberate limits.&lt;/strong&gt; JS/TS get "a cautious static scan, not real language understanding" (README); other languages are searched, not parsed; runtime-built paths cannot be resolved. Performance is claimed and reproducible, not something I ran: &lt;a href="https://github.com/uczltw6/trace-file-lineage/blob/main/tests/benchmark.py" rel="noopener noreferrer"&gt;&lt;code&gt;tests/benchmark.py&lt;/code&gt;&lt;/a&gt; on macOS / Python 3.14 reports 1,000 files → 0.5 s cold scan / 0.1 s warm; 10,000 files → 16.5 s / 1.1 s; individual queries in milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom line.&lt;/strong&gt; If you run Python/notebook workflows and a pile of agent-generated files has become unanswerable trivia, this is worth evaluating — &lt;code&gt;lineage enable&lt;/code&gt; even writes the tracing rules into CLAUDE.md and AGENTS.md (an instruction, not enforcement, per the README). If you have no agent-generated files, or cannot tolerate a git-ignored text index in your project, it is premature. A comparison with Git/DVC/OpenLineage is in &lt;a href="https://github.com/uczltw6/trace-file-lineage/blob/main/docs/comparison.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/comparison.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>python</category>
    </item>
    <item>
      <title>Don't Read the Code Your Agent Wrote — Make It Run the Gauntlet</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Fri, 07 Aug 2026 23:35:49 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/dont-read-the-code-your-agent-wrote-make-it-run-the-gauntlet-45o</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/dont-read-the-code-your-agent-wrote-make-it-run-the-gauntlet-45o</guid>
      <description>&lt;h2&gt;
  
  
  The claim worth verifying
&lt;/h2&gt;

&lt;p&gt;old-coder (MIT, by AmazingAng) is a markdown skill for coding agents — Claude Code, Codex CLI, Cursor, Aider, or custom agent loops. Its strategy: don't read the code your agent wrote; make it run the gauntlet. Concretely, the human approves a test plan (SPEC) before any code exists and reviews an EVIDENCE report afterward, instead of reading the diff. The README cites Robert C. Martin: "My current strategy is to not read any of the code written by my agents."&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;p&gt;SPEC → RED → GREEN → REFACTOR → GAUNTLET → EVIDENCE. Each scenario maps 1:1 to at least one automated test. All numbers in the evidence report come from one final fresh run, the entry command is recorded so a human can rerun everything, and source state is pinned via commit SHA or tree hash (the demo pins commit d6e17b1, tree hash 50433e0a4acc8507).&lt;/p&gt;

&lt;h2&gt;
  
  
  The 9-layer gauntlet (reusable checklist)
&lt;/h2&gt;

&lt;p&gt;From &lt;code&gt;skills/old-coder/references/gauntlet.md&lt;/code&gt;, layers run in order and halt at the first failure: tests → types → lint → changed-line coverage → mutation → property-based tests → real execution → supply chain/secrets scan → suite health (randomized order). Per-ecosystem tool tables exist for Python, JS/TS, Go, Rust, Java, Scala, SQL, and Emacs Lisp, with the rule "prefer whatever the project already uses" and pinned tool versions for reproducible reruns. Extended layers are selected by risk: concurrency only when the failure model names races, performance only when the spec states a budget, UI checks only when the change touches user-facing UI, version matrix only when the project claims multi-version support. A typo fix gets a couple of checks; changes touching money, logins, data, or concurrency get everything plus hostile-input self-attacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honesty rules (the actual differentiator)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Never weaken a test to make it pass.&lt;/li&gt;
&lt;li&gt;Never report a check that did not run — unverified never equals pass.&lt;/li&gt;
&lt;li&gt;Fail-closed gates: &lt;code&gt;set -e&lt;/code&gt; at the top, no &lt;code&gt;|| true&lt;/code&gt;, no &lt;code&gt;2&amp;gt;/dev/null&lt;/code&gt;; a must-find-nothing grep passes only on rc 1.&lt;/li&gt;
&lt;li&gt;Prove each home-grown check can fail with a one-off negative control.&lt;/li&gt;
&lt;li&gt;Every mutant must make at least one test fail — a survivor means a weak or vacuous assertion.&lt;/li&gt;
&lt;li&gt;Record the dependency diff and the reasons, item by item.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These rules make "all green" auditable instead of self-attested. That is the part ordinary CI pipelines do not give you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the demo evidence file admits
&lt;/h2&gt;

&lt;p&gt;The rate-limiter demo (&lt;code&gt;demo-rate-limiter/evidence.md&lt;/code&gt;) reports 17/17 tests passing (also in randomized order), 29/29 statements and 10/10 branches covered, and 8/8 mutation kills — and then openly states that the property tests alone only killed 3/8, that one kill (M2) was flaky until spec revision 2 pinned the exact-boundary behavior with a deterministic test, and that the spec was never approved by a human (autonomous run). It also documents a real bug caught by the loop: a &lt;code&gt;window_seconds=NaN&lt;/code&gt; value slipped past the original &lt;code&gt;&amp;lt;= 0&lt;/code&gt; validation and was fixed via a spec revision, a watched RED test, and a finiteness check (later killed as mutant M7). Known uncovered modes are listed: not thread-safe; a NaN-returning clock fails closed but is not rejected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;p&gt;The gauntlet proves the code meets the spec — it cannot prove the spec covers everything that matters. The skill presumes a test base exists; mutation testing is a real time cost, which the skill itself acknowledges by scaling effort to risk. Treat the demo's numbers as the author's report, not independent results — rerun &lt;code&gt;./tools/gauntlet.sh&lt;/code&gt; to verify.&lt;/p&gt;

&lt;p&gt;Not tested/not run by me: I did not execute the skill or any of its scripts; everything above was read from the repository's own files (README, gauntlet.md, evidence.md).&lt;/p&gt;

&lt;p&gt;Repo (MIT): &lt;a href="https://github.com/AmazingAng/old-coder" rel="noopener noreferrer"&gt;https://github.com/AmazingAng/old-coder&lt;/a&gt; · Gauntlet reference: &lt;a href="https://github.com/AmazingAng/old-coder/blob/main/skills/old-coder/references/gauntlet.md" rel="noopener noreferrer"&gt;https://github.com/AmazingAng/old-coder/blob/main/skills/old-coder/references/gauntlet.md&lt;/a&gt; · Demo evidence: &lt;a href="https://github.com/AmazingAng/old-coder/blob/main/demo-rate-limiter/evidence.md" rel="noopener noreferrer"&gt;https://github.com/AmazingAng/old-coder/blob/main/demo-rate-limiter/evidence.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>testing</category>
      <category>devtools</category>
    </item>
    <item>
      <title>DeepSeek V4 Flash Went Official: Checking the 'Flash Beats Pro' Claim Against the Model Card and config.json</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Thu, 06 Aug 2026 23:27:05 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/deepseek-v4-flash-went-official-checking-the-flash-beats-pro-claim-against-the-model-card-and-235h</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/deepseek-v4-flash-went-official-checking-the-flash-beats-pro-claim-against-the-model-card-and-235h</guid>
      <description>&lt;h2&gt;
  
  
  The Claim
&lt;/h2&gt;

&lt;p&gt;DeepSeek-V4-Flash-0731 is now the official V4 Flash release, superseding the preview. The model card states that on all nine agentic benchmarks it lists, Flash-0731 beats V4-Pro (Preview) — "despite its far smaller activated parameter count." That is a strong claim, so I checked it two ways: the table arithmetic, and the architecture in config.json.&lt;/p&gt;

&lt;h2&gt;
  
  
  9/9, Verified Row by Row
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Flash-0731&lt;/th&gt;
&lt;th&gt;V4-Pro (Preview)&lt;/th&gt;
&lt;th&gt;GLM-5.2&lt;/th&gt;
&lt;th&gt;Opus-4.8&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Terminal Bench 2.1&lt;/td&gt;
&lt;td&gt;82.7&lt;/td&gt;
&lt;td&gt;72.1&lt;/td&gt;
&lt;td&gt;81.0&lt;/td&gt;
&lt;td&gt;85.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NL2Repo&lt;/td&gt;
&lt;td&gt;54.2&lt;/td&gt;
&lt;td&gt;38.5&lt;/td&gt;
&lt;td&gt;48.9&lt;/td&gt;
&lt;td&gt;69.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cybergym&lt;/td&gt;
&lt;td&gt;76.7&lt;/td&gt;
&lt;td&gt;52.7&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;83.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSWE&lt;/td&gt;
&lt;td&gt;54.4&lt;/td&gt;
&lt;td&gt;12.8&lt;/td&gt;
&lt;td&gt;46.2&lt;/td&gt;
&lt;td&gt;58.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toolathlon-Verified&lt;/td&gt;
&lt;td&gt;70.3&lt;/td&gt;
&lt;td&gt;55.9&lt;/td&gt;
&lt;td&gt;59.9&lt;/td&gt;
&lt;td&gt;76.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agents' Last Exam&lt;/td&gt;
&lt;td&gt;25.2&lt;/td&gt;
&lt;td&gt;16.5&lt;/td&gt;
&lt;td&gt;23.8&lt;/td&gt;
&lt;td&gt;25.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AutomationBench Public&lt;/td&gt;
&lt;td&gt;25.1&lt;/td&gt;
&lt;td&gt;12.8&lt;/td&gt;
&lt;td&gt;12.9&lt;/td&gt;
&lt;td&gt;27.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DSBench-FullStack †&lt;/td&gt;
&lt;td&gt;68.7&lt;/td&gt;
&lt;td&gt;41.8&lt;/td&gt;
&lt;td&gt;61.8&lt;/td&gt;
&lt;td&gt;71.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DSBench-Hard †&lt;/td&gt;
&lt;td&gt;59.6&lt;/td&gt;
&lt;td&gt;31.1&lt;/td&gt;
&lt;td&gt;54.5&lt;/td&gt;
&lt;td&gt;71.7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Flash-0731 wins 9/9 against V4-Pro (Preview), wins all 8 rows where GLM-5.2 has a score, and loses all 9 to Opus-4.8 — the closest margins being Agents' Last Exam (25.2 vs 25.7) and AutomationBench (25.1 vs 27.2). "Broadly competitive" is precise: close, not ahead. Caveats from the card itself: all numbers are DeepSeek's own evaluations (DeepSeek Harness minimal mode, max reasoning effort), and the two DSBench sets are marked † as internal DeepSeek test sets. None of this is independently reproduced.&lt;/p&gt;

&lt;h2&gt;
  
  
  What config.json Says
&lt;/h2&gt;

&lt;p&gt;From the public config: model_type &lt;code&gt;deepseek_v4&lt;/code&gt;, 43 layers, hidden_size 4096, 64 attention heads with a single KV head, vocab 129,280, and max_position_embeddings 1,048,576 — 2^20, so the "million-token context" in the paper title is literal. The MoE is 256 routed experts plus one shared expert per layer, with 6 routed experts active per token and an expert intermediate size of just 2048. Dense weights are FP8 (E4M3, dynamic activation); &lt;code&gt;expert_dtype&lt;/code&gt; is fp4 — experts ship at 4 bits by design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reconciling 284B and 304B
&lt;/h2&gt;

&lt;p&gt;One expert = up (4096×2048) + gate (4096×2048) + down (2048×4096) = 25,165,824 parameters. With 43 × 256 = 11,008 routed experts, that is ≈ 277.0B in routed experts alone. Adding shared experts, dense attention, and the (unshared) embeddings and head lands at ≈ 284B — matching unsloth's 284B figure. The card's "304B in safetensors" includes the in-checkpoint DSpark speculative-decoding module (11.3 GB at BF16) and quantization scale tensors. Different accounting, not a contradiction.&lt;/p&gt;

&lt;p&gt;Activated per token: 7 experts per layer (6 routed + 1 shared) × 43 layers ≈ 7.6B, plus dense attention and embeddings ≈ 10B — roughly 3.5% of the model. The "far smaller activated parameter count" statement is consistent with the architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Engineering News: Speculation Is In the Checkpoint
&lt;/h2&gt;

&lt;p&gt;DSpark ships inside the main checkpoint: 7 speculative tokens, greedy draft sampling, no separate draft model to deploy. vLLM: &lt;code&gt;--speculative-config '{"method":"dspark","num_speculative_tokens":7}'&lt;/code&gt;; SGLang: &lt;code&gt;--speculative-algorithm DSPARK&lt;/code&gt;; llama.cpp users can add it as a module (Q8_0, 10.9 GB). The release also adds three-level reasoning_effort (low/high/max, up to 384K output tokens at high/max) and replaces the Jinja chat template with an &lt;code&gt;encoding/&lt;/code&gt; folder of Python helpers — teams using transformers directly will want to migrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local Deployment, Sized Honestly
&lt;/h2&gt;

&lt;p&gt;unsloth's GGUF: UD-Q4_K_XL 155 GB, UD-Q8_K_XL 162 GB — the "lossless" Q8 is only 7 GB bigger than Q4 per unsloth's note. Ollama: &lt;code&gt;ollama run hf.co/unsloth/DeepSeek-V4-Flash-0731-GGUF:UD-Q4_K_XL&lt;/code&gt;. llama.cpp: &lt;code&gt;llama serve -hf unsloth/DeepSeek-V4-Flash-0731-GGUF:UD-Q4_K_XL&lt;/code&gt;. A 155 GB Q4 file means big-RAM workstations or multi-GPU servers; for most product teams, the hosted flash tier will be the economical path.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;The flash tier's economics are now backed by the vendor's own benchmarks — but read them as the vendor's.&lt;/li&gt;
&lt;li&gt;FP8 dense + FP4 experts + in-checkpoint speculation is a deployment recipe worth copying for latency- and cost-sensitive agent workloads.&lt;/li&gt;
&lt;li&gt;A 1M-token context with a 384K output budget changes what fits in a single agent call.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Model card: &lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731" rel="noopener noreferrer"&gt;https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731&lt;/a&gt; (MIT) · config.json: &lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731/resolve/main/config.json" rel="noopener noreferrer"&gt;https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731/resolve/main/config.json&lt;/a&gt; · GGUF: &lt;a href="https://huggingface.co/unsloth/DeepSeek-V4-Flash-0731-GGUF" rel="noopener noreferrer"&gt;https://huggingface.co/unsloth/DeepSeek-V4-Flash-0731-GGUF&lt;/a&gt; · Paper: &lt;a href="https://arxiv.org/abs/2606.19348" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2606.19348&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not tested / not run&lt;/strong&gt; — no inference or benchmark reproduction was performed. Benchmark numbers are the vendor's; the arithmetic and config reading are mine.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>moe</category>
      <category>llm</category>
    </item>
    <item>
      <title>How a 176 KB C Binary Runs a 2.78-Trillion-Parameter Model on One CPU with 8 GB of RAM</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Thu, 06 Aug 2026 01:21:12 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/how-a-176-kb-c-binary-runs-a-278-trillion-parameter-model-on-one-cpu-with-8-gb-of-ram-1ime</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/how-a-176-kb-c-binary-runs-a-278-trillion-parameter-model-on-one-cpu-with-8-gb-of-ram-1ime</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Moonshot AI's Kimi K3 has 2.78 trillion parameters. Stored naively at bfloat16, that's 5,560 GB — more than the combined memory of two fully-loaded DGX H100 nodes. Deploying it typically requires dozens of H100 GPUs.&lt;/p&gt;

&lt;p&gt;Fareed Khan asked a different question: can you run the &lt;em&gt;exact same model checkpoint&lt;/em&gt;, with no quantization, distillation, or weight dropping, on a single CPU with 8 GB of RAM?&lt;/p&gt;

&lt;p&gt;The answer is kimi-k3-in-c: a 176 KB pure C99 binary, seven source files, zero GPU dependencies. It runs the unmodified 1.56 TB checkpoint and produces output that is byte-for-byte identical to the PyTorch reference. At roughly 33 seconds per token, it's impractical as a chatbot — but that's not why it matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Four Reductions
&lt;/h2&gt;

&lt;p&gt;The engine exploits a structural property of Mixture-of-Experts models: Kimi K3 has 93 layers, 92 of which route to the top 16 of 896 experts. Only ~3.7% of parameters (~104 billion) are active for any single token. The other 96.3% must exist somewhere reachable but don't need to be in RAM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduction 1 — Experts ship small.&lt;/strong&gt; Kimi K3's 82,432 routed experts occupy 1.447 TB at roughly 0.53 bytes per weight — packed 4-bit nibbles with a shared E8M0 scale. The engine multiplies directly out of this packed form without dequantizing to float first. Baseline: 5,560 GB → 1,560 GB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduction 2 — Routing sparsity removes experts.&lt;/strong&gt; Expert weights are never memory-resident — loaded on demand from NVMe with an LRU cache. What remains is the 113.49 GB dense trunk. 1,560 GB → 113.49 GB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduction 3 — Trunk streaming.&lt;/strong&gt; The 93 dense layers are repacked into a single 109 GB &lt;code&gt;trunk.bin&lt;/code&gt; where each layer lives at a known offset. The engine pins as many layers as the memory budget allows and streams the rest via O_DIRECT, bypassing the OS page cache. 113.49 GB → configurable, as low as 8.24 GB peak RSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduction 4 — Expert LRU cache.&lt;/strong&gt; Routed experts are loaded on demand with a configurable cache size. The author provides a trace-based capacity simulator for tuning.&lt;/p&gt;

&lt;p&gt;Total: a 676× reduction from the bf16 baseline, with the output at the bottom of this ladder being byte-for-byte identical to the output at the top.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;make test&lt;/code&gt; target requires no model download. It builds a 13-layer model with the same tensor graph, validates against a committed PyTorch reference across three paths — teacher forcing (32/32 positions), greedy decode (20/20 tokens), incremental decode (20/20 tokens) — and ends with "ENGINE MATCHES THE REFERENCE EXACTLY."&lt;/p&gt;

&lt;p&gt;The build disables FMA contraction (&lt;code&gt;-ffp-contract=off&lt;/code&gt;) so that scalar, OpenMP, and AVX2 paths produce bit-identical results. Every memory budget from 8 GB to 224 GB emits the same token stream. Memory is a performance dial, not a correctness variable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance and Bottlenecks
&lt;/h2&gt;

&lt;p&gt;Measured on dual AMD EPYC 7763 (124 cores, 228 GB RAM, NVMe):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Preset&lt;/th&gt;
&lt;th&gt;Peak RSS&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;laptop&lt;/td&gt;
&lt;td&gt;8.24 GB&lt;/td&gt;
&lt;td&gt;32.69 s/token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;desktop&lt;/td&gt;
&lt;td&gt;31.9 GB&lt;/td&gt;
&lt;td&gt;28–31 s/token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;server&lt;/td&gt;
&lt;td&gt;127.92 GB&lt;/td&gt;
&lt;td&gt;10.69 s/token&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The bottleneck is unambiguous: sustained trunk reads at 5,373–6,064 MB/s, with I/O accounting for 41–61% of wall-clock time. On spinning rust, performance would degrade several-fold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations (Be Honest)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;v0.1.0, 28 commits, days old&lt;/li&gt;
&lt;li&gt;Linux x86-64 only (O_DIRECT, posix_memalign, getrusage)&lt;/li&gt;
&lt;li&gt;Requires ~1.7 TB free NVMe storage&lt;/li&gt;
&lt;li&gt;No chat template (raw continuations), no sampling, no batching, no GPU path&lt;/li&gt;
&lt;li&gt;~33 s/token at the minimum preset — generating 200 tokens takes ~2 hours&lt;/li&gt;
&lt;li&gt;The electricity cost of a multi-hour run can exceed hosted API pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Study This
&lt;/h2&gt;

&lt;p&gt;kimi-k3-in-c is not a practical inference server. It is, explicitly, a teaching artifact — the author built it to understand Kimi K3's architecture after deploying it on 32 H100 GPUs at work and being unable to debug on personal hardware.&lt;/p&gt;

&lt;p&gt;For engineers working on model inference, compression, or edge deployment, it offers three transferable findings:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Storage bandwidth, not RAM or FLOPs, is the real bottleneck for frontier MoE inference&lt;/strong&gt; — a measured finding with direct implications for hardware selection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory is a dial, not a floor&lt;/strong&gt; — the same model runs correctly at 8 GB and 224 GB, only wall-clock time changes. This reframing matters for edge deployment of sparse models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A complete, auditable reference implementation&lt;/strong&gt; — the README is structured as a five-part technical paper, building every component (RMSNorm, KDA attention, MLA, MXFP4 matmul, expert cache) from first principles in runnable C. For understanding MoE internals at the byte level, this is more valuable than most papers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The broader point: the wall for running frontier models locally isn't compute — it's capacity. And most of the model is asleep for any given token. That structural fact makes the impossible tractable.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/FareedKhan-dev/kimi-k3-in-c" rel="noopener noreferrer"&gt;https://github.com/FareedKhan-dev/kimi-k3-in-c&lt;/a&gt; (Apache-2.0, v0.1.0)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not tested&lt;/strong&gt; — this analysis is based on reading the public README, source tree, CHANGELOG, and independent technical reviews (andrew.ooo, essamamdani.com, securityonline.info). No local build or inference run was performed.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>systems</category>
      <category>moe</category>
    </item>
    <item>
      <title>AI Technical Figures Need an Editability Test, Not Just a Similarity Score</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Tue, 04 Aug 2026 23:29:41 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/ai-technical-figures-need-an-editability-test-not-just-a-similarity-score-2fi1</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/ai-technical-figures-need-an-editability-test-not-just-a-similarity-score-2fi1</guid>
      <description>&lt;p&gt;An AI-generated technical figure can look convincing and still be a poor deliverable.&lt;/p&gt;

&lt;p&gt;The failure usually appears after the first review: change a label, reroute an arrow, update a table, translate the annotations, or move a panel. If all that remains is a bitmap, the output is visually useful but structurally disposable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/icebird1998/scientific-illustrator" rel="noopener noreferrer"&gt;Scientific Illustrator&lt;/a&gt; is an MIT-licensed open-source Codex plugin project built around a more useful target: recreating a reference figure with editable objects in PowerPoint, WPS Presentation, or draw.io. Its README says it prefers editable text, shapes, connectors, tables, and charts, keeping image inserts for the smallest areas it cannot reliably recreate, such as complex textures or microscopy-like imagery. That is a project claim, not a benchmark.&lt;/p&gt;

&lt;p&gt;The repository structure fits that goal. It includes a plugin manifest, MCP configuration, and skills for designing, recreating, auditing, and correcting figures, plus bridge scripts for presentation software and draw.io. The &lt;a href="https://github.com/icebird1998/scientific-illustrator/blob/main/plugins/scientific-illustrator/.codex-plugin/plugin.json" rel="noopener noreferrer"&gt;plugin manifest&lt;/a&gt; describes a Designer–Drawer–Reviewer–Corrector workflow. The &lt;a href="https://github.com/icebird1998/scientific-illustrator/releases/tag/v1.5.3" rel="noopener noreferrer"&gt;v1.5.3 release&lt;/a&gt; reports backend/target locking, serialized OOXML changes, and fixes around tables, charts, arrows, connectors, and exports.&lt;/p&gt;

&lt;p&gt;The engineering idea matters even if this particular implementation is not the right tool for every team. For a structured diagram, the useful acceptance test is not only visual similarity. Ask whether text, connectors, groups, tables, and charts can survive the next human edit in the target application.&lt;/p&gt;

&lt;p&gt;This is most relevant to researchers, technical writers, and developers who hand off editable PPTX or draw.io files. It is a weaker fit for photorealistic images, dense textures, pixel-perfect reproduction, or one-off artwork that will never be revised. The project itself acknowledges a boundary by retaining difficult regions as images.&lt;/p&gt;

&lt;p&gt;I have not tested or run this project. This article is based on a read-only review of its public repository, README, manifest, license, and release notes. Treat compatibility, reconstruction fidelity, and workflow reliability as items to validate on your own templates and software versions. For source details, see the &lt;a href="https://github.com/icebird1998/scientific-illustrator/blob/main/README.md" rel="noopener noreferrer"&gt;README&lt;/a&gt;, &lt;a href="https://github.com/icebird1998/scientific-illustrator/blob/main/LICENSE" rel="noopener noreferrer"&gt;MIT license&lt;/a&gt;, and &lt;a href="https://github.com/icebird1998/scientific-illustrator/blob/main/.github/workflows/ci.yml" rel="noopener noreferrer"&gt;CI workflow&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Skill Recorder: Turning One Human Workflow into a Reviewable Agent Procedure</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Sun, 02 Aug 2026 23:31:45 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/skill-recorder-turning-one-human-workflow-into-a-reviewable-agent-procedure-4i34</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/skill-recorder-turning-one-human-workflow-into-a-reviewable-agent-procedure-4i34</guid>
      <description>&lt;h2&gt;
  
  
  A recording is not the end product
&lt;/h2&gt;

&lt;p&gt;The useful idea in &lt;a href="https://github.com/microsoft/skill-recorder" rel="noopener noreferrer"&gt;Microsoft's Skill Recorder&lt;/a&gt; is not that it records a desktop session. Its stated pipeline is: capture a real work session, ask GitHub Copilot CLI to reconstruct an intent and ordered steps, let a person review them, and then create a reusable Skill or Automation.&lt;/p&gt;

&lt;p&gt;That distinction matters for engineering. A UI macro replays a fragile sequence of coordinates. A reviewed procedure can describe the work at a higher level and, according to the project, prefer native agent tools such as CLIs or web fetching over replaying clicks. For a recurring workflow whose interface changes more often than its business rule, that is a more promising maintenance boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The privacy boundary is part of the design
&lt;/h2&gt;

&lt;p&gt;The README says that recording, storage, frame extraction, and optional narration transcription happen locally. It also says that choosing Analyze sends an event timeline, extracted screen images, and narration text to GitHub's cloud for Copilot processing. That means screen content, titles, URLs, and clipboard previews are not incidental details: they are part of the threat model.&lt;/p&gt;

&lt;p&gt;Before considering a tool like this, I would start with a de-identified, low-privilege workflow; clear the clipboard and notifications; and review every generated step. A captured exception should not silently become a future automated action.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the repository shows
&lt;/h2&gt;

&lt;p&gt;The repository is MIT-licensed. Its current &lt;a href="https://github.com/microsoft/skill-recorder/blob/main/package.json" rel="noopener noreferrer"&gt;package configuration&lt;/a&gt; identifies version &lt;code&gt;0.3.1&lt;/code&gt; and an Electron/React application using the Copilot SDK and local-transcription-related dependencies. The README documents &lt;a href="https://github.com/microsoft/skill-recorder/blob/main/WINDOWS-VALIDATION.md" rel="noopener noreferrer"&gt;Windows validation&lt;/a&gt; and source-release installation details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it fits
&lt;/h2&gt;

&lt;p&gt;This looks relevant to teams turning recurring, cross-application work into a procedure that can be inspected and improved. It is a poor fit for workflows that cannot be recorded, cannot allow cloud analysis, or cannot tolerate human review before automation.&lt;/p&gt;

&lt;p&gt;Not tested or run: this article is based on the public repository and source configuration only. It does not claim functional, security, or quality validation.&lt;/p&gt;

&lt;p&gt;Further reading: the &lt;a href="https://github.com/microsoft/skill-recorder#what-gets-captured" rel="noopener noreferrer"&gt;project README&lt;/a&gt; and &lt;a href="https://github.com/microsoft/skill-recorder/releases" rel="noopener noreferrer"&gt;release page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>automation</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
