<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CASP — Coding-Agent State Protocol · Blog</title>
    <link>https://casp.sh/blog/</link>
    <description>Field notes on keeping AI coding agents honest: state drift, deterministic verification, and gating the push on drift.</description>
    <language>en</language>
    <lastBuildDate>Wed, 22 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://casp.sh/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Loop Engineering: The Boxes in the Loop That Can't Be the Model</title>
      <link>https://casp.sh/blog/loop-engineering-deterministic-floor.html</link>
      <description>Loop engineering decomposes an agent loop into a trigger, a topology, a verifier, and a stop rule. A model can be three of those. It cannot be the verifier, and it cannot certify the topology — those two need a floor that resolves claims against git, not against the model's own confidence.</description>
      <pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/loop-engineering-deterministic-floor.html</guid>
    </item>
    <item>
      <title>A Verification Rule Isn't Shipped Until Existing Repos Can Adopt It</title>
      <link>https://casp.sh/blog/shipping-a-verification-rule.html</link>
      <description>Adding a rule to a checker that gates pushes is a breaking change wearing a feature's clothes — every repo already using it goes red on update, for work that was done correctly before the rule existed. How to add a deterministic drift rule that stays silent until a project opts in, and why the opt-in has to be derived from the project's own data rather than configured.</description>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/shipping-a-verification-rule.html</guid>
    </item>
    <item>
      <title>The Plan Is a Queue: Handing an AI Coding Agent One Session at a Time</title>
      <link>https://casp.sh/blog/session-prompt-queue-ai-coding-agents.html</link>
      <description>A specification handed to a coding agent whole gets sampled, not executed — the agent picks a plausible starting point and you re-explain the plan at the top of every session. Breaking the spec into an ordered queue of session prompts fixes the briefing, and creates a new failure: a pointer that still names work already shipped.</description>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/session-prompt-queue-ai-coding-agents.html</guid>
    </item>
    <item>
      <title>The Machine-Readable Handoff: A Drift Verdict an Agent Can Act On</title>
      <link>https://casp.sh/blog/machine-readable-drift-verdict.html</link>
      <description>A coding agent already reads a failing test and fixes the code from its output. The check on the project's recorded state should hand back the same kind of signal — not prose to interpret, but the value it expected and the value git actually held. How a deterministic drift verdict becomes structured output an agent can act on, without any model in the check.</description>
      <pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/machine-readable-drift-verdict.html</guid>
    </item>
    <item>
      <title>Self-Verifying AI Agents: The One Check the Harness Cannot Run on Itself</title>
      <link>https://casp.sh/blog/self-verifying-ai-agents.html</link>
      <description>Agent harnesses now verify their own work — tests, typecheck, review agents — and loop until green. Every one of those checks grades the code; none of them can verify the harness's record of the project against git. Why that check has to be deterministic, and why it has to sit outside the model.</description>
      <pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/self-verifying-ai-agents.html</guid>
    </item>
    <item>
      <title>Pre-Push Hooks for AI Coding Agents: Gate Both Boundaries of the Session</title>
      <link>https://casp.sh/blog/pre-push-hook-ai-coding-agents.html</link>
      <description>An autonomous coding agent only runs the checks it cannot skip. Why advice-level verification fails in agentic loops, and how a pre-push hook plus a session-start gate catch state drift at the two boundaries where it escapes — with exit codes, not opinions.</description>
      <pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/pre-push-hook-ai-coding-agents.html</guid>
    </item>
    <item>
      <title>State Drift: Why AI Coding Agents Lose Track of Your Project — and the Deterministic Fix</title>
      <link>https://casp.sh/blog/state-drift-ai-coding-agents.html</link>
      <description>When many agents, sessions and models touch one repo, the state you recorded quietly diverges from what git actually contains. That gap is state drift. Here is why it happens, why storage-and-recall tools don't close it, and how a deterministic check validates state against git and blocks the push when it drifts.</description>
      <pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://casp.sh/blog/state-drift-ai-coding-agents.html</guid>
    </item>
  </channel>
</rss>
