<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>harness on Saurabh Kumar</title><link>https://saurabh-kumar.com/tags/harness/</link><description>Recent content in harness on Saurabh Kumar</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright © 2025, Saurabh Kumar.</copyright><lastBuildDate>Tue, 27 Oct 2026 03:14:24 +0000</lastBuildDate><atom:link href="https://saurabh-kumar.com/tags/harness/index.xml" rel="self" type="application/rss+xml"/><item><title>Ron Minsky: types, expect tests and review matter more with agents</title><link>https://saurabh-kumar.com/til/1793070864/</link><pubDate>Tue, 27 Oct 2026 03:14:24 +0000</pubDate><guid>https://saurabh-kumar.com/til/1793070864/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=rUYP4C29yCw" rel="noopener external"&gt;Ron Minsky&amp;rsquo;s Bug Bash 2026 talk&lt;/a&gt; argues Jane Street&amp;rsquo;s old habits (rich types, expect tests, real code review) matter more with agents: they give the model fast, exact feedback and keep the code readable for the humans who own it. He goes the other way from &lt;a href="https://saurabh-kumar.com/til/1792238400/" rel="noopener external"&gt;the Claude Code team&lt;/a&gt; on review: its main job is keeping a human able to explain the system, not catching bugs.&lt;/p&gt;&#10;&lt;p&gt;The idea I&amp;rsquo;m taking: expect tests. The test prints output, the expected text lives inline, and a change shows up as a diff of behavior, not just code. Python&amp;rsquo;s version is &lt;a href="https://github.com/15r10nk/inline-snapshot" rel="noopener external"&gt;inline-snapshot&lt;/a&gt;: &lt;code&gt;assert result == snapshot()&lt;/code&gt;, filled in by pytest.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Gotcha with agents: under &lt;code&gt;--inline-snapshot=fix&lt;/code&gt; (or &lt;code&gt;create&lt;/code&gt;, &lt;code&gt;review&lt;/code&gt;) every snapshot comparison returns True and the file is rewritten. An agent chasing green doesn&amp;rsquo;t need to delete a test; it re-accepts the wrong output. Keep acceptance with a human and never auto-fix in CI.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Django Seedkit</title><link>https://saurabh-kumar.com/til/1792760023/</link><pubDate>Fri, 23 Oct 2026 12:53:43 +0000</pubDate><guid>https://saurabh-kumar.com/til/1792760023/</guid><description>&lt;p&gt;&lt;a href="https://github.com/viewflow/seedkit" rel="noopener external"&gt;viewflow/seedkit&lt;/a&gt; is an agent skill that scaffolds a Django project by asking you questions, then writes only the parts you picked. The edge over cookiecutter: it also works on a live repo. &lt;code&gt;/django-seedkit add proper auth&lt;/code&gt; inventories what exists and wires the new package in midway: deps, settings, &lt;code&gt;.env&lt;/code&gt; example, CI step. A deterministic generator runs once, on day zero.&lt;/p&gt;&#10;&lt;p&gt;The layout is the part worth copying. One &lt;code&gt;SKILL.md&lt;/code&gt; walks the questions and routes each answer to exactly one file in &lt;code&gt;references/&lt;/code&gt; (&lt;code&gt;auth.md&lt;/code&gt;, &lt;code&gt;billing.md&lt;/code&gt;, &lt;code&gt;tasks-celery.md&lt;/code&gt;, about 50 of them). Each file keeps only what the model gets wrong: current setting names, current packages. Their benchmark: Sonnet 5 with the skill passed 72 of 72 security and config checks across nine projects; Fable 5 without it missed about a quarter.&lt;/p&gt;&#10;&lt;p&gt;The pattern generalizes past Django: one orchestrator skill that asks the questions, plus a reference pack per stack (Django, Next.js, Flutter). Seedkit ships only the Django pack today.&lt;/p&gt;&#10;</description></item><item><title>How the Claude Code team does code review</title><link>https://saurabh-kumar.com/til/1792238400/</link><pubDate>Sat, 17 Oct 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1792238400/</guid><description>&lt;p&gt;&lt;a href="https://claude.dev/blog/solving-code-review-at-anthropic/" rel="noopener external"&gt;How the Claude Code team does code review&lt;/a&gt;. Claude writes ~90% of Claude Code, so nobody reads every diff. They swapped &amp;ldquo;did a human read it?&amp;rdquo; for &amp;ldquo;which check, automated or human, should catch what could go wrong here?&amp;rdquo;, and optimise for the least human time per change, with revert and incident rates as the guardrail.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The bit I missed on first read: review noise costs more when the author is an agent. A person waves off a nit in seconds; an agent fixes every one, which is a new commit and another full review. One PR ran 50+ rounds overnight, and ~59% of later findings were on code already there at round one. Fix: cap at three rounds, re-review only the new diff, flag the class of bug, never repeat a finding.&lt;/li&gt;&#10;&lt;li&gt;The bot posts findings, never approvals. Human approvals (zero, one or two) are set by the change&amp;rsquo;s risk, not by who wrote it. Whoever prompted the agent counts as a reviewer, and an approval covers one commit, so an agent&amp;rsquo;s next push dismisses it.&lt;/li&gt;&#10;&lt;li&gt;Their reviewer&amp;rsquo;s eval is their own past incidents and reverts, run daily. Noise is measured by what authors did with each comment: fixed it, said it was wrong, intentional, or not worth it.&lt;/li&gt;&#10;&lt;li&gt;Versus &lt;a href="https://saurabh-kumar.com/til/weekly/2026-04-26.html#ankit-jain" rel="noopener external"&gt;Ankit Jain&amp;rsquo;s review layers I noted in April&lt;/a&gt;: this is the production version, with no spec-review layer and fast rollback under everything.&lt;/li&gt;&#10;&lt;li&gt;Read the numbers carefully: the share of PRs reverted fell 40% while PR volume doubled, so the count of reverts still rose (~1.2x). Also: the authors sell the reviewer.&lt;/li&gt;&#10;&lt;li&gt;Where I push back: &amp;ldquo;nobody needs a full mental model, ask Claude for an explainer of the slice you&amp;rsquo;re changing.&amp;rdquo; An explainer recovers what the code does, not why it was built that way, which is the &lt;a href="https://addyosmani.com/blog/comprehension-debt/" rel="noopener external"&gt;comprehension debt&lt;/a&gt; Addy Osmani (a co-author here) wrote about. People should spend review on whether to ship it and on direction, not line-level correctness.&lt;/li&gt;&#10;&lt;li&gt;How I read it: had Claude explain it against my notes, then quiz me. The question I got wrong taught me the most.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Microsoft eXecution Container (MXC)</title><link>https://saurabh-kumar.com/til/1791633600/</link><pubDate>Sat, 10 Oct 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1791633600/</guid><description>&lt;p&gt;&lt;a href="https://github.com/microsoft/mxc" rel="noopener external"&gt;Microsoft eXecution Container (MXC)&lt;/a&gt; is an embeddable SDK for running untrusted commands under OS-enforced policies, not a hosted sandbox service.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Defaults: Seatbelt on macOS, Bubblewrap on Linux, ProcessContainer on Windows. SDKs for Node, Rust, and .NET.&lt;/li&gt;&#10;&lt;li&gt;Restricts filesystem and network access. macOS hostname allowlists need a caller-managed proxy; not every backend is a VM.&lt;/li&gt;&#10;&lt;li&gt;Useful boundary: sandbox the command where it executes, not just the agent&amp;rsquo;s tool-composition script. Isolation limits damage; it does not make generated output trustworthy.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Pi Pocket's subagent implementation</title><link>https://saurabh-kumar.com/til/1791547202/</link><pubDate>Fri, 09 Oct 2026 12:00:02 +0000</pubDate><guid>https://saurabh-kumar.com/til/1791547202/</guid><description>&lt;p&gt;&lt;a href="https://github.com/TannerMidd/pi-pocket/blob/3e6046612db4358b599da302d5c96bd407d9de5c/src/server/extensions/subagents.ts" rel="noopener external"&gt;Pi Pocket&amp;rsquo;s subagent implementation&lt;/a&gt; gives each worker a retained conversation and uses durable tasks to deliver messages and report answers. Request IDs and recorded answer IDs prevent duplicate delivery and reporting after restart. The idea worth stealing: make the handoff durable, not just the worker.&lt;/p&gt;&#10;</description></item><item><title>Arnav Gupta's pi-subagent-manager</title><link>https://saurabh-kumar.com/til/1791547201/</link><pubDate>Fri, 09 Oct 2026 12:00:01 +0000</pubDate><guid>https://saurabh-kumar.com/til/1791547201/</guid><description>&lt;p&gt;&lt;a href="https://github.com/championswimmer/pi-subagent-manager" rel="noopener external"&gt;Arnav Gupta&amp;rsquo;s pi-subagent-manager&lt;/a&gt; makes context inheritance explicit. Nested threads receive their parent&amp;rsquo;s snapshot; independent roots start without its history. Threads stay around for steering and resume. I want synchronous coordination by default, forks for continuity and fresh context for independent review.&lt;/p&gt;&#10;</description></item><item><title>Armin Ronacher's subagent extension</title><link>https://saurabh-kumar.com/til/1791547200/</link><pubDate>Fri, 09 Oct 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1791547200/</guid><description>&lt;p&gt;&lt;a href="https://github.com/mitsuhiko/agent-stuff/blob/main/extensions/subagent.ts" rel="noopener external"&gt;Armin Ronacher&amp;rsquo;s subagent extension&lt;/a&gt; runs one observable Pi child at a time in tmux. The parent waits for the result, while I can attach to inspect or intervene. Worth preserving when adding hierarchy: synchronous coordination must not mean invisible execution.&lt;/p&gt;&#10;</description></item><item><title>Pi Durable</title><link>https://saurabh-kumar.com/til/1791374400/</link><pubDate>Wed, 07 Oct 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1791374400/</guid><description>&lt;p&gt;&lt;a href="https://earendil.com/posts/pi-durable/" rel="noopener external"&gt;Pi Durable&lt;/a&gt; is Earendil&amp;rsquo;s experimental agent harness, shipped alongside Pi 1.0. &lt;a href="https://github.com/TannerMidd/pi-pocket" rel="noopener external"&gt;TannerMidd/pi-pocket&lt;/a&gt; is a mobile-first, multiplayer web app for Pi built on it.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Every model call and tool call is a task that checkpoints to storage (SQLite, JSONL, or memory) before moving on. Kill the process and a new one opens the same file and resumes.&lt;/li&gt;&#10;&lt;li&gt;Recovery is per step: a cut-off model request is resent with the partial answer kept and marked aborted. A cut-off tool call reruns only if it is replay-safe; otherwise the model is told it was interrupted.&lt;/li&gt;&#10;&lt;li&gt;A &lt;code&gt;requestId&lt;/code&gt; makes a submission exactly-once, so a client retrying after a crash gets the original back.&lt;/li&gt;&#10;&lt;li&gt;Forks see the parent transcript up to the fork point without copying it.&lt;/li&gt;&#10;&lt;li&gt;~15k lines total, small enough for an agent to read end to end.&lt;/li&gt;&#10;&lt;li&gt;pi-pocket: restart the server mid-run and the work continues. Several people can watch, steer, or queue messages on the same session.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;npm start -- --access tailscale&lt;/code&gt; binds only to the tailnet address, so my phone gets it with no tunnel.&lt;/li&gt;&#10;&lt;li&gt;The shift: the session lives in a SQLite file, not a terminal process, so the phone is just another client. Could replace my Moshi + tmux setup.&lt;/li&gt;&#10;&lt;li&gt;Caveat: anyone who can steer runs shell commands as you.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>pi-blackhole</title><link>https://saurabh-kumar.com/til/1788609600/</link><pubDate>Sat, 05 Sep 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1788609600/</guid><description>&lt;p&gt;Every coding agent (Claude Code, Codex, pi) compacts long sessions the same way: ask an LLM to prose-summarize, then summarize that summary, until load-bearing details erode (why a decision was made, which approaches got rejected). &lt;a href="https://github.com/k0valik/pi-blackhole" rel="noopener external"&gt;pi-blackhole&lt;/a&gt; swaps that for deterministic compaction: a zero-token &lt;code&gt;compile()&lt;/code&gt; that extracts structured sections (goal, files touched, commits, preferences, brief transcript). No LLM, no drift, no cost. The compile is only lossy in the window, not on disk: blackhole also ships a &lt;code&gt;recall&lt;/code&gt; tool (BM25 + regex over the raw session JSONL and the memory ledger) that re-fetches any dropped turn on demand, so compile + recall together is lossless where an LLM summary-of-a-summary destroys the original. It also adds observational memory: background observer/reflector workers append durable facts to per-session ledgers that survive every compaction, and &lt;code&gt;/blackhole-export&lt;/code&gt; walks every past-session JSONL under a git-root into a ranked context file. The clever part is what export trusts. A fact&amp;rsquo;s rank is driven by cross-session &lt;em&gt;recurrence&lt;/em&gt;, damped as &lt;code&gt;log(1 + distinctSessions)&lt;/code&gt; with a burst penalty, not raw counts, so one chatty session can&amp;rsquo;t inflate it. Recurrence-as-reinforcement is basically &lt;a href="https://saurabh-kumar.com/articles/2025/11/notes-on-understanding-hebbian-learning/" rel="noopener external"&gt;Hebbian&lt;/a&gt;: facts that keep firing across sessions get stronger. Dedup is a 3-pass funnel, exact then Levenshtein then Sørensen-Dice token-set, with a Levenshtein floor so keyword overlap alone can&amp;rsquo;t merge two distinct facts. Bonus: the OM workers run on their own model and billing, so I point them at &lt;code&gt;openai-codex/gpt-5.6-luna&lt;/code&gt; while the main thread stays on Claude.&lt;/p&gt;&#10;</description></item><item><title>NVIDIA's NOOA framework</title><link>https://saurabh-kumar.com/til/1785240000/</link><pubDate>Tue, 28 Jul 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1785240000/</guid><description>&lt;p&gt;Python&amp;rsquo;s &lt;code&gt;Ellipsis&lt;/code&gt; literal (&lt;code&gt;...&lt;/code&gt;) is a real object (&lt;code&gt;type(...)&lt;/code&gt; is &lt;code&gt;&amp;lt;class 'ellipsis'&amp;gt;&lt;/code&gt;), not just a placeholder. Beyond type stubs and numpy slicing, &lt;a href="https://github.com/NVIDIA-NeMo/labs-OO-Agents" rel="noopener external"&gt;NVIDIA&amp;rsquo;s NOOA framework&lt;/a&gt; repurposes it as a runtime dispatch marker: methods with &lt;code&gt;...&lt;/code&gt; bodies are completed by an LLM at runtime, while methods with real bodies stay deterministic Python. The boundary between &amp;ldquo;code I control&amp;rdquo; and &amp;ldquo;code the model controls&amp;rdquo; becomes greppable: &lt;code&gt;grep -n '\.\.\.' agent.py&lt;/code&gt;. Clever reuse of existing syntax that linters and type checkers already accept.&lt;/p&gt;&#10;</description></item><item><title>karpathy/autoresearch</title><link>https://saurabh-kumar.com/til/1780920000/</link><pubDate>Mon, 08 Jun 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1780920000/</guid><description>&lt;p&gt;[karpathy/autoresearch] is a concept/framework that allows one to leverage LLM to run an optimization loops based on a criteria. &lt;a href="https://github.com/davebcn87/pi-autoresearch" rel="noopener external"&gt;davebcn87/pi-autoresearch&lt;/a&gt; takes this further has built a generic optimization long run loop method on top of pi agent. &lt;a href="https://gemini.google.com/app/7dcee9714f7955ce" rel="noopener external"&gt;gemini&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Dynamic workflows</title><link>https://saurabh-kumar.com/til/1780056000/</link><pubDate>Fri, 29 May 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1780056000/</guid><description>&lt;p&gt;&lt;a href="https://claude.com/blog/introducing-dynamic-workflows-in-claude-code" rel="noopener external"&gt;Dynamic workflows&lt;/a&gt; in Claude Code. Claude dynamically writes orchestration scripts that spawn tens to hundreds of parallel subagents. It plans, decomposes into subtasks, fans out agents, and checks results before returning a coordinated answer. Adversarial agents try to refute findings, iterating until convergence. Enable via &lt;code&gt;ultracode&lt;/code&gt; setting or ask Claude to &amp;ldquo;create a workflow&amp;rdquo;. Notable: Jarred Sumner used it to port Bun from Zig to Rust (~750K lines, 11 days). Available on Max, Team, Enterprise plans. Consumes significantly more tokens than typical sessions.&lt;/p&gt;&#10;</description></item><item><title>Claude Code: The Unreasonable Effectiveness of HTML" / X</title><link>https://saurabh-kumar.com/til/1778328001/</link><pubDate>Sat, 09 May 2026 12:00:01 +0000</pubDate><guid>https://saurabh-kumar.com/til/1778328001/</guid><description>&lt;p&gt;Use HTML instead of markdown to effectively plan and review. &lt;a href="https://x.com/trq212/status/2052809885763747935" rel="noopener external"&gt;Claude Code: The Unreasonable Effectiveness of HTML&amp;quot; / X&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>colbymchenry/codegraph</title><link>https://saurabh-kumar.com/til/1778328000/</link><pubDate>Sat, 09 May 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1778328000/</guid><description>&lt;p&gt;&lt;a href="https://github.com/colbymchenry/codegraph" rel="noopener external"&gt;colbymchenry/codegraph&lt;/a&gt;: Pre-indexed code knowledge graph for Claude Code — fewer tokens, fewer tool calls, 100% local&lt;/p&gt;&#10;</description></item><item><title>K-dense</title><link>https://saurabh-kumar.com/til/1771156800/</link><pubDate>Sun, 15 Feb 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1771156800/</guid><description>&lt;p&gt;&lt;a href="https://www.k-dense.ai/" rel="noopener external"&gt;K-dense&lt;/a&gt; known for using skills to enable deep research has published &lt;a href="ttps://github.com/K-Dense-AI/claude-scientific-skills"&gt;140+ skills&lt;/a&gt; related to scientic research including literature review, data analysis, etc.&lt;/p&gt;&#10;</description></item><item><title>LangGraph</title><link>https://saurabh-kumar.com/til/1766577600/</link><pubDate>Wed, 24 Dec 2025 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1766577600/</guid><description>&lt;p&gt;&amp;ldquo;&lt;a href="https://docs.langchain.com/oss/python/langgraph/overview" rel="noopener external"&gt;LangGraph&lt;/a&gt; is an orchestration framework for building stateful multi-agent applications using LLMs. It provides low-level primitives such as nodes and edges, along with built-in features that give developers granular control over agent workflows, memory management and state persistence. This means developers can start with a simple pre-built graph and scale to complex, evolving agent architectures. With support for streaming, advanced context management and resilience patterns like model fallbacks and tool error handling, LangGraph enables you to build robust, production-grade agentic applications. Its graph-based approach ensures predictable, customizable workflows and simplifies debugging and scaling.&amp;rdquo;&lt;/p&gt;&#10;</description></item></channel></rss>