<?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>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>
    <item>
      <title>Coding-agent rules need a feedback loop after the edit</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Sat, 01 Aug 2026 23:24:25 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/coding-agent-rules-need-a-feedback-loop-after-the-edit-59n3</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/coding-agent-rules-need-a-feedback-loop-after-the-edit-59n3</guid>
      <description>&lt;p&gt;Most coding-agent guardrails are prose: keep the diff small, prefer the standard library, do not add a dependency casually. Good instructions, but open-loop instructions. Once an agent makes an edit, the session needs a way to surface whether those preferences were crossed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/0xwilliamortiz/ratchet" rel="noopener noreferrer"&gt;Ratchet&lt;/a&gt; is a small open-source project built around that gap. Its README describes hooks that inspect an agent's edits, measure them, and report findings back into the same session. The project documents four modes—&lt;code&gt;advise&lt;/code&gt;, &lt;code&gt;guard&lt;/code&gt;, &lt;code&gt;strict&lt;/code&gt;, and &lt;code&gt;off&lt;/code&gt;—with &lt;code&gt;guard&lt;/code&gt; as the default. In its description, strict handling applies only to findings graded &lt;code&gt;certain&lt;/code&gt;, and depends on the host honoring the returned decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it tries to make visible
&lt;/h2&gt;

&lt;p&gt;The documented detector set is intentionally practical: new manifest dependencies, duplicate-looking symbols, wrappers that only forward arguments, implementations of things the platform already provides, single-implementation abstractions, and budgets for new files, dependencies, and net added lines.&lt;/p&gt;

&lt;p&gt;That is a useful framing for agent-assisted work. The cost is rarely one obviously bad decision. It is the accumulation of small, hard-to-review additions across a long session: another package, another pass-through component, another helper that already exists under a different name.&lt;/p&gt;

&lt;p&gt;The public repository separates a guard hook, change-reading code, and detection code under &lt;code&gt;hooks/&lt;/code&gt;; its &lt;a href="https://github.com/0xwilliamortiz/ratchet/blob/main/package.json" rel="noopener noreferrer"&gt;package manifest&lt;/a&gt; declares Node.js 20+ and uses &lt;code&gt;node --test&lt;/code&gt;. This is a source observation only: I have not installed, configured, or run the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boundary is the important part
&lt;/h2&gt;

&lt;p&gt;Ratchet's README explicitly describes the detectors as regex and &lt;code&gt;git grep&lt;/code&gt;, not a type checker. That makes a finding a review prompt, not a correctness verdict. It also means this should not replace tests, security review, or architectural judgement.&lt;/p&gt;

&lt;p&gt;The difference from grep, an LSP, or simply reading a diff is not deeper semantic understanding. It is event timing and continuity: checks run after an agent edit, and the project records session-oriented measurements such as a mark and ledger. For a team already using coding agents, that can turn vague preferences into a short discussion while the change is still small.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should consider it?
&lt;/h2&gt;

&lt;p&gt;Consider this kind of tool if your team already has an agent workflow and repeatedly sees dependency creep or unnecessary abstraction in agent-produced diffs. Skip it if you need type-level certainty, cannot accept heuristic false positives, or do not want to maintain hook configuration.&lt;/p&gt;

&lt;p&gt;I would evaluate it as a pre-review speed bump: start in an advisory mode, inspect whether the findings are useful for your repository, and keep the normal test and review gates intact. Do not treat an alert as proof.&lt;/p&gt;

&lt;p&gt;Not tested / not run. This article is based on public documentation and source inspection, with no independent performance, accuracy, or compatibility claims. Further reading: the project's &lt;a href="https://github.com/0xwilliamortiz/ratchet/blob/main/README.md" rel="noopener noreferrer"&gt;README&lt;/a&gt;, &lt;a href="https://github.com/0xwilliamortiz/ratchet/blob/main/hooks/lib/detect.js" rel="noopener noreferrer"&gt;detector module&lt;/a&gt;, and &lt;a href="https://github.com/0xwilliamortiz/ratchet/blob/main/hooks/ratchet-guard.js" rel="noopener noreferrer"&gt;guard hook&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>codereview</category>
    </item>
    <item>
      <title>An Agent Hook Is Not a Security Boundary: Reading numbat's Coverage Matrix</title>
      <dc:creator>euk ela</dc:creator>
      <pubDate>Fri, 31 Jul 2026 23:24:50 +0000</pubDate>
      <link>https://dev.to/euk_ela_a3e7ed01aa3f7314e/an-agent-hook-is-not-a-security-boundary-reading-numbats-coverage-matrix-4plm</link>
      <guid>https://dev.to/euk_ela_a3e7ed01aa3f7314e/an-agent-hook-is-not-a-security-boundary-reading-numbats-coverage-matrix-4plm</guid>
      <description>&lt;h2&gt;
  
  
  The endpoint is part of the agent system
&lt;/h2&gt;

&lt;p&gt;Coding agents can read a workspace, use local tools, and request network actions. Once that happens, a safety prompt is only one part of the picture. Teams also need to ask what was observed, what can be reconstructed later, and whether anything can intervene before an action happens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/perplexityai/numbat" rel="noopener noreferrer"&gt;numbat&lt;/a&gt; is an Apache-2.0 project that frames this as endpoint visibility for AI agents. Its public &lt;a href="https://github.com/perplexityai/numbat/releases/tag/v0.1.1" rel="noopener noreferrer"&gt;v0.1.1 release&lt;/a&gt; lists the current release, while its README describes inputs from local hooks or plugins, OTLP/HTTP logs, and supported on-disk session artifacts. The stated design normalizes those inputs into one event model and evaluates CEL rules.&lt;/p&gt;

&lt;p&gt;Not tested or run: this is a reading of the repository and its public documentation, not an independent compatibility, detection-quality, or security evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observation, reconstruction, and enforcement are different jobs
&lt;/h2&gt;

&lt;p&gt;It is tempting to collapse all three into “agent protection.” That loses the important engineering distinctions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observation means a host exposes a hook, plugin surface, log, or durable artifact worth collecting.&lt;/li&gt;
&lt;li&gt;Reconstruction means records retain enough source context to investigate without casually copying raw sensitive transcripts everywhere.&lt;/li&gt;
&lt;li&gt;Enforcement means a supported host invokes a synchronous pre-action callback that can request a denial before the host executes a tool action.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;numbat's &lt;a href="https://github.com/perplexityai/numbat/blob/main/docs/enforcement.md" rel="noopener noreferrer"&gt;enforcement document&lt;/a&gt; makes the boundary unusually explicit. Monitoring is the default. An operator must opt in through an enforce-marked rule, and the agent host remains the enforcement point. The project returns a host-native deny request; it does not execute or cancel the tool itself.&lt;/p&gt;

&lt;p&gt;That matters because a transcript found after the fact may help an investigation but cannot stop the original operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the coverage matrix before the command line
&lt;/h2&gt;

&lt;p&gt;The most useful project page may be its &lt;a href="https://github.com/perplexityai/numbat/blob/main/docs/agent-coverage.md" rel="noopener noreferrer"&gt;agent coverage matrix&lt;/a&gt;. It separates durable artifacts, live capture, enforcement support, and host-specific limits. Some formats are deliberately marked deferred or unsupported rather than being silently treated as complete telemetry.&lt;/p&gt;

&lt;p&gt;For an engineering rollout, that matrix suggests a practical checklist:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify the exact agent hosts and modes your team uses.&lt;/li&gt;
&lt;li&gt;Decide whether the immediate need is auditability or pre-action intervention.&lt;/li&gt;
&lt;li&gt;Check what happens on hook, parsing, or output failure. The documentation describes fail-open paths and host-specific behavior.&lt;/li&gt;
&lt;li&gt;Keep separate controls for operating-system permissions, secret access, network egress, and code review.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Who should care?
&lt;/h2&gt;

&lt;p&gt;This can be relevant for teams running several local coding agents and needing a consistent investigation layer. Normalizing supported inputs can be more useful than manually grepping unrelated logs when a review spans several tools.&lt;/p&gt;

&lt;p&gt;It is not a replacement for endpoint controls. A host hook is not a complete policy boundary, and coverage is constrained by the hooks and artifact formats each upstream host actually publishes. For a one-off inspection of a single session, directly reading a file or using grep may still be the cheaper tool.&lt;/p&gt;

&lt;p&gt;The conservative rollout is inventory first, monitoring second, and narrowly scoped enforcement only after the event quality, false positives, data retention, and host behavior are understood. The lesson is larger than one project: a security control earns trust by naming its blind spots.&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/perplexityai/numbat/blob/main/README.md" rel="noopener noreferrer"&gt;repository README&lt;/a&gt;, &lt;a href="https://github.com/perplexityai/numbat/blob/main/docs/agent-coverage.md" rel="noopener noreferrer"&gt;coverage matrix&lt;/a&gt;, and &lt;a href="https://github.com/perplexityai/numbat/blob/main/docs/enforcement.md" rel="noopener noreferrer"&gt;enforcement model&lt;/a&gt;.&lt;/p&gt;

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