<?xml version="1.0" encoding="UTF-8"?>

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Parker Jones Dev Blog - context-engineering</title>
    <subtitle>Local-first, reproducible systems in Rust and Nix — and using AI as a power tool without getting credulous about it. I build the unglamorous plumbing and write up what actually happened, including what broke.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://parkerjones.dev/tags/context-engineering/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://parkerjones.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-07-06T00:00:00+00:00</updated>
    <id>https://parkerjones.dev/tags/context-engineering/atom.xml</id>
    <entry xml:lang="en">
        <title>I Built a Harness to Build a Harness. One of Them Worked.</title>
        <published>2026-07-06T00:00:00+00:00</published>
        <updated>2026-07-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://parkerjones.dev/posts/building-the-harness-theater/"/>
        <id>https://parkerjones.dev/posts/building-the-harness-theater/</id>
        <content type="html" xml:base="https://parkerjones.dev/posts/building-the-harness-theater/">&lt;p&gt;Here is the number I keep not saying out loud: &lt;strong&gt;78.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s how many numbered documentation files I wrote to build &lt;a href=&quot;https:&#x2F;&#x2F;parkerjones.dev&#x2F;posts&#x2F;context-harness-rag-rust&#x2F;&quot;&gt;Context Harness&lt;&#x2F;a&gt; — 13 product requirements docs, 23 architecture decision records, 15 specs, 9 design docs, 18 runbooks — plus five policy documents governing them, plus six AI agents whose only job is to help write more. For a project with one developer. Me.&lt;&#x2F;p&gt;
&lt;p&gt;And when I went back through the git log to write this, the surprise was that the harness worked. I used it — the doc pipeline, the six agents, the whole apparatus — to build the engine feature by feature, and the commits show the seams. That part isn&#x27;t the confession.&lt;&#x2F;p&gt;
&lt;p&gt;Context Harness works. It&#x27;s a local-first RAG engine in Rust: ingests your files, chunks and embeds them, serves &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;blob&#x2F;main&#x2F;docs&#x2F;spec&#x2F;0003-hybrid-scoring.md&quot;&gt;hybrid search&lt;&#x2F;a&gt; to any AI tool over MCP. Single binary, six build targets, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;blob&#x2F;main&#x2F;docs&#x2F;adr&#x2F;0004-brute-force-vector-search.md&quot;&gt;brute-force cosine similarity&lt;&#x2F;a&gt; that clears 10,000 chunks in single-digit milliseconds. I&#x27;m not being falsely modest about the engineering — it&#x27;s real. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&quot;&gt;Forty strangers starred it&lt;&#x2F;a&gt;; a couple hundred people pulled the release binaries across eight versions. What I can&#x27;t point to is one person — myself very much included — who has aimed it at a problem that wasn&#x27;t itself. Months on, the only corpus it has really indexed is its own source code: a tool built to hand your context to an AI, whose only context has ever been &lt;em&gt;itself&lt;&#x2F;em&gt;. Stars are interest, downloads are curiosity, and neither is a job.&lt;&#x2F;p&gt;
&lt;p&gt;So before I write four more posts about &quot;harness engineering,&quot; here&#x27;s what I&#x27;m actually holding: a harness that did its job — it built the engine — and an engine still waiting for one of its own. Both real. One proven, one not. The gap between them is the whole series.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-word-everyone-s-using-and-nobody-defines-the-same-way&quot;&gt;The word everyone&#x27;s using and nobody defines the same way&lt;&#x2F;h2&gt;
&lt;p&gt;&quot;Harness engineering&quot; arrived fully formed sometime this spring, the way these things do. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;robearlam.com&#x2F;blog&#x2F;an-introduction-to-harness-engineering&quot;&gt;Rob Earlam wrote a genuinely good five-part series&lt;&#x2F;a&gt; building his own website with an agent pipeline — a Product Owner agent hands to a Design agent hands to a Tech Lead hands to Build hands to QA, an Orchestrator reading a &lt;code&gt;run-state.md&lt;&#x2F;code&gt; between them. It&#x27;s clean, it&#x27;s sequential, and if you&#x27;ve ever shipped software you&#x27;ll recognize the shape immediately: it&#x27;s the SDLC, staffed by robots.&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile the phrase itself has at least three parents. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mitchellh.com&#x2F;writing&#x2F;my-ai-adoption-journey&quot;&gt;Mitchell Hashimoto&lt;&#x2F;a&gt; describes &lt;em&gt;engineering the harness&lt;&#x2F;em&gt; as a habit: any time the agent makes a mistake, you take the time to fix its environment so it can&#x27;t make that mistake again. LangChain, in &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.langchain.com&#x2F;blog&#x2F;the-anatomy-of-an-agent-harness&quot;&gt;&quot;The Anatomy of an Agent Harness&quot;&lt;&#x2F;a&gt;, gave us the tidy equation &lt;strong&gt;Agent = Model + Harness&lt;&#x2F;strong&gt; — &quot;if you&#x27;re not the model, you&#x27;re the harness.&quot; And &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;martinfowler.com&#x2F;articles&#x2F;harness-engineering.html&quot;&gt;Birgitta Böckeler, on Martin Fowler&#x27;s site&lt;&#x2F;a&gt;, frames it as a &lt;em&gt;cybernetic governor&lt;&#x2F;em&gt; — feedforward guides that steer before the agent acts, feedback sensors that catch it after — a steering loop, not a one-pass pipeline.&lt;&#x2F;p&gt;
&lt;p&gt;Everyone cites the same kind of stat: hold the model fixed, change only the harness, watch the score jump. The cleanest one I can actually source is LangChain&#x27;s — same model (&lt;code&gt;gpt-5.2-codex&lt;&#x2F;code&gt;), harness-only changes, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.langchain.com&#x2F;blog&#x2F;improving-deep-agents-with-harness-engineering&quot;&gt;52.8% to 66.5% on Terminal-Bench 2.0&lt;&#x2F;a&gt;, enough to move from outside the top 30 to the top 5. The more dramatic one making the rounds — &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hal.cs.princeton.edu&#x2F;corebench_hard&quot;&gt;42% to 78%&lt;&#x2F;a&gt; — is real too, but it&#x27;s Claude Opus 4.5 on &lt;em&gt;scientific-reproducibility&lt;&#x2F;em&gt; tasks, and by the time it reaches the LinkedIn post it&#x27;s lost the part where that isn&#x27;t the coding you do all day. I&#x27;ll wave the numbers around like everyone else. I&#x27;ll also tell you I&#x27;ve never reproduced them, and neither, probably, have you.&lt;&#x2F;p&gt;
&lt;p&gt;What I notice about all of it: it&#x27;s triumphant. The scores only ever go up and to the right; the pipelines are always clean. Nobody in this literature is holding 78 documents and an engine whose only real user, so far, is itself.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-the-harness-actually-was&quot;&gt;What the harness actually was&lt;&#x2F;h2&gt;
&lt;p&gt;Strip the grandeur and here&#x27;s the machine. Five directories, each a level of authority: &lt;code&gt;docs&#x2F;prd&#x2F;&lt;&#x2F;code&gt; (what to build and why), &lt;code&gt;docs&#x2F;adr&#x2F;&lt;&#x2F;code&gt; (why I picked an approach), &lt;code&gt;docs&#x2F;spec&#x2F;&lt;&#x2F;code&gt; (exactly how it behaves — the contract), &lt;code&gt;docs&#x2F;design&#x2F;&lt;&#x2F;code&gt; (thinking out loud, non-authoritative), &lt;code&gt;docs&#x2F;runbook&#x2F;&lt;&#x2F;code&gt; (how to operate it). Every file numbered &lt;code&gt;NNNN-kebab-title.md&lt;&#x2F;code&gt;; every directory fronted by a &lt;code&gt;0000&lt;&#x2F;code&gt; policy that governs the rest.&lt;&#x2F;p&gt;
&lt;p&gt;Then six agents — one per layer, plus a coordinator — and here&#x27;s the part that matters: &lt;strong&gt;they don&#x27;t run anything.&lt;&#x2F;strong&gt; A Context Harness agent is a Lua script that generates a prompt and then stops. It never calls a model. Invoke &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;blob&#x2F;main&#x2F;agents&#x2F;spec-writer.lua&quot;&gt;&lt;code&gt;spec-writer&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; and it prints exactly what it would hand one:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;text&quot;&gt;❯ ctx agent test spec-writer --arg feature=&amp;quot;hybrid search API&amp;quot;
Agent: spec-writer
Source: lua (agents&#x2F;spec-writer.lua)
Tools: search, get

System prompt (2343 chars):
  You are a Spec Writer for Context Harness.
  Your job is to write authoritative specifications that conform to the Spec Policy.
  ...
  ### When to Write a Spec
  PREFERRED: Implement the feature first, then write the spec describing actual behavior.
  ...

Tools override: search, get
Resolved in 239ms
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;In 239 milliseconds, without calling a model once, it did three things. It assembled that 2,343-character system prompt — the whole spec policy, inlined, down to &lt;em&gt;no &quot;could,&quot; no &quot;might.&quot;&lt;&#x2F;em&gt; It ran a hybrid search over everything already indexed (three queries: the feature, &lt;code&gt;spec &amp;lt;feature&amp;gt;&lt;&#x2F;code&gt;, &lt;code&gt;&amp;lt;feature&amp;gt; behavior&lt;&#x2F;code&gt;), deduped the hits, sorted them into &lt;em&gt;existing specs&lt;&#x2F;em&gt; and &lt;em&gt;related docs&lt;&#x2F;em&gt;, and pre-seeded them as context — &lt;em&gt;here&#x27;s what already exists; &lt;code&gt;get&lt;&#x2F;code&gt; the full text before you write.&lt;&#x2F;em&gt; Then it handed back the prompt, a scoped toolset (&lt;code&gt;search&lt;&#x2F;code&gt;, &lt;code&gt;get&lt;&#x2F;code&gt;), and that retrieved context — and stopped. Whatever model is driving your editor does the actual writing.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;blob&#x2F;main&#x2F;agents&#x2F;doc-coordinator.lua&quot;&gt;&lt;code&gt;doc-coordinator&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; sits on top and is even more hands-off. Give it a feature and it searches all five layers, reports what exists and what&#x27;s missing, and emits an ordered plan — &lt;em&gt;write this PRD, then this ADR, use &lt;code&gt;spec-writer&lt;&#x2F;code&gt; for the contract.&lt;&#x2F;em&gt; Its own instructions state the boundary in one line: &quot;You coordinate but do not write docs yourself.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;So the real output was never the documents. It was a &lt;strong&gt;prompt with the right context already loaded into it&lt;&#x2F;strong&gt; — produced deterministically, handed to a model the harness doesn&#x27;t own. Assemble context, borrow the model. Hold that thought; it turns out to be the entire thesis of this series, and I shipped it as a side effect before I had the words for it.&lt;&#x2F;p&gt;
&lt;p&gt;What the machine emitted in the end: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;tree&#x2F;main&#x2F;docs&quot;&gt;78 numbered documents&lt;&#x2F;a&gt; and a RAG engine that conforms to them. ADR-0015 is a representative specimen — status, context, decision, five numbered principles, alternatives, consequences. Multiply by 78. It is, and I mean this, a genuinely handsome pile of documents.&lt;&#x2F;p&gt;
&lt;p&gt;And I did point it at real work — its own. A &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;blob&#x2F;main&#x2F;config&#x2F;ctx.toml&quot;&gt;checked-in &lt;code&gt;config&#x2F;ctx.toml&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; aims the connectors at Context Harness&#x27;s own &lt;code&gt;.&#x2F;docs&lt;&#x2F;code&gt;, its &lt;code&gt;.&#x2F;crates&#x2F;**&#x2F;*.rs&lt;&#x2F;code&gt;, and its README, registers all six agents, and opens with a single instruction: &lt;code&gt;# Run from repo root: ctx sync all &amp;amp;&amp;amp; ctx serve&lt;&#x2F;code&gt;. The harness indexed the codebase it was building and fed that back to the agents building it. You can watch it in the log — &lt;code&gt;design: multi workspace routing design&lt;&#x2F;code&gt;, then &lt;code&gt;feat: multi-workspace MCP router&lt;&#x2F;code&gt; two days later; &lt;code&gt;feat: sync progress on stderr (design from SYNC_PROGRESS.md)&lt;&#x2F;code&gt; — 145 commits across four months, design turning into features. So when I say the harness is unproven, I don&#x27;t mean it didn&#x27;t work. It worked. I mean the &lt;em&gt;engine&lt;&#x2F;em&gt; it built never got aimed at anyone else&#x27;s problem.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-it-works-driving-it-from-claude-code&quot;&gt;How it works: driving it from Claude Code&lt;&#x2F;h2&gt;
&lt;p&gt;The agents aren&#x27;t a CLI party trick — they&#x27;re served over MCP, so the editor drives them. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;parallax-labs.github.io&#x2F;context-harness&#x2F;&quot;&gt;Install &lt;code&gt;ctx&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;, start the server, and point Claude Code at it:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;ctx serve mcp   # search + the six agents, at 127.0.0.1:7331&#x2F;mcp
claude mcp add --transport http context-harness http:&#x2F;&#x2F;127.0.0.1:7331&#x2F;mcp
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Type &lt;code&gt;&#x2F;mcp&lt;&#x2F;code&gt; in Claude Code and the server&#x27;s capabilities show up split into exactly the two halves from a moment ago. The &lt;strong&gt;agents are MCP prompts&lt;&#x2F;strong&gt; — you fire them deliberately, as slash commands like &lt;code&gt;&#x2F;mcp__context-harness__spec-writer&lt;&#x2F;code&gt;. The &lt;strong&gt;&lt;code&gt;search&lt;&#x2F;code&gt; and &lt;code&gt;get&lt;&#x2F;code&gt; are MCP tools&lt;&#x2F;strong&gt; — the model reaches for them on its own, mid-thought, as &lt;code&gt;mcp__context-harness__search&lt;&#x2F;code&gt;. Prompts are yours to invoke; tools are the model&#x27;s to call. That split is the entire design in one line.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s a feature going through it, the way the multi-workspace router actually did. You start at the top, with the coordinator:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;&#x2F;mcp__context-harness__doc-coordinator &amp;quot;multi-workspace routing&amp;quot;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It hybrid-searches all five doc layers, tells you what exists and what&#x27;s missing, and hands back a plan — &lt;em&gt;write a PRD, then an ADR, lock the contract with &lt;code&gt;spec-writer&lt;&#x2F;code&gt;&lt;&#x2F;em&gt; — then stops, because it coordinates but does not write. You work the plan by firing the writers it named, one at a time. Each drops a fully-loaded starting point into the chat — the policy inlined, plus the existing docs it retrieved — and from there the model in Claude Code does the writing, calling &lt;code&gt;search&lt;&#x2F;code&gt; and &lt;code&gt;get&lt;&#x2F;code&gt; itself to pull the full text of anything it needs. Then you implement against the spec and commit. &lt;code&gt;design:&lt;&#x2F;code&gt;, then &lt;code&gt;feat:&lt;&#x2F;code&gt;. The trail in the log isn&#x27;t an accident; it&#x27;s the shape of the pipeline.&lt;&#x2F;p&gt;


&lt;figure class=&quot;post-image&quot;&gt;
  &lt;img src=&quot;https:&#x2F;&#x2F;parkerjones.dev&#x2F;processed_images&#x2F;harness-flow.a0d7ef39d46c7fd8.webp&quot; width=&quot;1600&quot; height=&quot;1128&quot;
       alt=&quot;Driving the harness from Claude Code: after ctx serve mcp and claude mcp add, you fire the doc-coordinator then spec-writer prompts inside Claude Code; each returns a context-loaded prompt; the model writes the spec and code, calling the search and get tools itself; the run ends in design: and feat: commits.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;
  &lt;figcaption&gt;The feature-building loop, driven from Claude Code — you fire the agents (prompts), the model does the work, and the harness only plans and retrieves.&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Notice what Context Harness never does in that loop: run a model. It plans, retrieves, and assembles; Claude Code brings the intelligence. &lt;em&gt;Assemble context, borrow the model&lt;&#x2F;em&gt; — the same four words as before, except now you can watch them run.&lt;&#x2F;p&gt;
&lt;p&gt;It borrows something else, too: the control loop. Three different things get called &quot;orchestration,&quot; and it&#x27;s worth being precise about which one is happening here.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The loop&lt;&#x2F;strong&gt; — a model calling tools in a cycle toward a goal — is Claude Code&#x27;s, not the harness&#x27;s.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Subagent orchestration&lt;&#x2F;strong&gt; — one agent &lt;em&gt;autonomously&lt;&#x2F;em&gt; spawning and coordinating others (Claude Code&#x27;s own sub-agents; Rob&#x27;s Orchestrator firing PO → Design → Build → QA off a state file) — the harness doesn&#x27;t do at all. The &lt;code&gt;doc-coordinator&lt;&#x2F;code&gt; hands you a plan; it &lt;em&gt;can&#x27;t&lt;&#x2F;em&gt; fire the writers itself, because MCP prompts are user-invoked and the model can&#x27;t chain them.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;What Context Harness does&lt;&#x2F;strong&gt; is neither: it&#x27;s a human-fired &lt;em&gt;context-and-plan injector&lt;&#x2F;em&gt; into someone else&#x27;s loop. You&#x27;re the orchestrator; the harness just makes sure each step starts with the right context already loaded.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Whether that&#x27;s a limitation or the whole point — whether autonomous orchestration earns its keep, or &quot;read the plan, fire the next command&quot; is the boring thing that wins — is a post later in this series. For now the split is clean: the harness assembles the context; the loop and the orchestration are borrowed.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;i-did-microservices-to-myself&quot;&gt;I did microservices to myself&lt;&#x2F;h2&gt;
&lt;p&gt;Now set my machine beside Rob&#x27;s. His: a Product Owner agent handing to Design handing to Tech Lead handing to Build handing to QA, an orchestrator shuttling between them. Mine: a coordinator that plans and delegates to single-purpose writers, one per layer. Same shape. We each took a process, chopped it into specialized agents, and wired them to an orchestrator.&lt;&#x2F;p&gt;
&lt;p&gt;We built microservices.&lt;&#x2F;p&gt;
&lt;p&gt;Not literally — but the instinct is identical, and so is the failure mode. Remember how that went? For about five years the industry believed the answer to every architecture question was &quot;more, smaller services.&quot; Then everyone counted the operational cost of all that wiring — the network calls, the distributed failure modes, the sheer ceremony — and quietly retreated to the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;signalvnoise.com&#x2F;svn3&#x2F;the-majestic-monolith&#x2F;&quot;&gt;majestic monolith&lt;&#x2F;a&gt;. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;martinfowler.com&#x2F;bliki&#x2F;MonolithFirst.html&quot;&gt;Start with the monolith&lt;&#x2F;a&gt;; extract a service only when something concrete forces you to. Most teams that went services-first paid for it.&lt;&#x2F;p&gt;
&lt;p&gt;The field didn&#x27;t land on &quot;it depends, it&#x27;s all just taste.&quot; It developed a spine: a boring default, with an opinion attached. And I think harness engineering is going to travel the exact same arc. Right now we&#x27;re in the services-first phase — everyone&#x27;s building elaborate multi-agent pipelines because decomposition &lt;em&gt;feels&lt;&#x2F;em&gt; like rigor. In a couple of years the default will be boring: one capable agent, good context, and a small amount of plumbing that nobody finds impressive. The harness that wins will be the one you can&#x27;t demo.&lt;&#x2F;p&gt;
&lt;p&gt;I have proof this is already happening, because it happened inside my own repo. My &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&#x2F;blob&#x2F;main&#x2F;docs&#x2F;adr&#x2F;0015-spec-driven-development.md&quot;&gt;spec-driven-development ADR&lt;&#x2F;a&gt; is emphatic: we &lt;em&gt;program to the spec&lt;&#x2F;em&gt; — the implementation conforms to the spec, and the spec is never updated to match the code after the fact. Very rigorous. Very impressive. And then, three principles down in the very same document, the &lt;em&gt;preferred workflow&lt;&#x2F;em&gt; turns out to be: &lt;strong&gt;implement first, then write the spec.&lt;&#x2F;strong&gt; The ceremony and the pragmatism are sitting side by side, and the pragmatism already won. I just hadn&#x27;t noticed I&#x27;d written down the fight and its outcome.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;where-i-might-be-wrong&quot;&gt;Where I might be wrong&lt;&#x2F;h2&gt;
&lt;p&gt;The honest counter to &quot;it deflates into plumbing&quot; is one word: &lt;strong&gt;Kubernetes.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Kubernetes did not get simpler. It got &lt;em&gt;abstracted&lt;&#x2F;em&gt;. The complexity is all still there — it just moved behind a managed platform you rent, and the &quot;boring default&quot; turned out to be enormous and someone else&#x27;s problem. That&#x27;s the other arc this could take, and there are companies betting hard on it right now: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.langchain.com&#x2F;langgraph-platform&quot;&gt;LangChain&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.databricks.com&#x2F;blog&#x2F;introducing-omnigent-meta-harness-combine-control-and-share-your-agents&quot;&gt;Databricks&lt;&#x2F;a&gt;, and everyone else selling a managed harness where the orchestration lives in their cloud and you stop thinking about it.&lt;&#x2F;p&gt;
&lt;p&gt;So maybe I&#x27;m wrong. Maybe the harness doesn&#x27;t deflate; it gets rented. The signal I&#x27;m watching for is which one becomes &lt;em&gt;invisible&lt;&#x2F;em&gt; first — the plumbing, or the platform. If in two years the interesting work is choosing which harness vendor to lock into, the monolith people lost. If it&#x27;s a boring config file in your repo that you barely think about, I was right. I genuinely don&#x27;t know yet, and I&#x27;d rather tell you that than pick the ending that flatters my thesis.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;would-i-build-it-again-yes-was-most-of-it-ceremony-also-yes&quot;&gt;Would I build it again? Yes. Was most of it ceremony? Also yes.&lt;&#x2F;h2&gt;
&lt;p&gt;Both are true, and holding both is the only honest position. I would write the specs again — the act of stating what the system &lt;em&gt;should&lt;&#x2F;em&gt; do, in language that forbids &quot;might&quot; and &quot;could,&quot; caught real design mistakes before they cost me anything. But if you made me bet, maybe three of those 78 documents are why the project didn&#x27;t collapse into mud, and the other 75 I performed because ceremony feels like progress. &lt;strong&gt;Figuring out which three is the actual point of this series.&lt;&#x2F;strong&gt; Not &quot;here&#x27;s my framework, adopt it.&quot; I don&#x27;t trust anyone who&#x27;s that sure this early, including the version of me who wrote 78 files.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-nail&quot;&gt;The nail&lt;&#x2F;h2&gt;
&lt;p&gt;Here&#x27;s the part that took me embarrassingly long to say plainly. I don&#x27;t have a &quot;team context problem&quot; or a &quot;knowledge management problem.&quot; Those are euphemisms, and they smuggle in a lie — that the cupboard is bare. It isn&#x27;t.&lt;&#x2F;p&gt;
&lt;p&gt;At work I have real pieces. A registry of reusable skills and agent rules a model can discover on demand over MCP. A hard-won framework for building systems that &lt;em&gt;check&lt;&#x2F;em&gt; the model instead of trusting it — that treat it as an advisor to be verified, not an authority. Both genuinely AI-native. And they don&#x27;t compose. The skills live in one place; the principles live as a thousand-line design document in another; neither travels. An engineer starting in a different repo can&#x27;t ask &quot;how do I apply this here?&quot; and get a usable answer — they go find the document, read the whole thing, extract the idea, and re-translate it by hand, in whatever editor they happen to be in. The knowledge is either too welded to the system that birthed it to reuse, or too abstract to apply. A &lt;code&gt;CLAUDE.md&lt;&#x2F;code&gt; in one repo is great — for that one repo. It composes across exactly none of the others.&lt;&#x2F;p&gt;
&lt;p&gt;So what I want is a &lt;strong&gt;declarative harness for day-to-day development&lt;&#x2F;strong&gt;: reproducible, transparent, portable across whatever editor I&#x27;m using this month — Cursor, Claude Code, whatever ships next — where a hard-won principle becomes a discoverable skill that travels across repos, and &quot;give the agent cross-repo awareness&quot; does &lt;em&gt;not&lt;&#x2F;em&gt; mean pasting every repo&#x27;s markdown into the context window until it&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.anthropic.com&#x2F;engineering&#x2F;effective-context-engineering-for-ai-agents&quot;&gt;full of text and short on attention&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;In the meantime, what I actually run is duct tape: one &lt;code&gt;CLAUDE.md&lt;&#x2F;code&gt; at the root above all my repos, a wiki, an Obsidian vault. It works — I think. I can&#x27;t prove it. The only number I can put on it is token spend, which is high, because the whole approach is concatenation: shovel the context in and hope the model reads the right part of it. &quot;The invoice went up&quot; is not the same as &quot;the work got better,&quot; and the distance between those two is the honest state of the art. The elaborate harness did its one job — it built the engine — and went quiet. The boring one I lean on every day, and still can&#x27;t measure.&lt;&#x2F;p&gt;
&lt;p&gt;Say that requirement out loud and the redemption is obvious: cross-repo awareness &lt;em&gt;without&lt;&#x2F;em&gt; dumping everything into context is retrieval, not concatenation. Which is the one thing the engine I shelved actually does. I built a retrieval harness, wrote it off because it had no job outside itself, and the whole time it was standing next to the job.&lt;&#x2F;p&gt;
&lt;p&gt;So maybe you have the job. It&#x27;s the same wiring as above — except this time you point &lt;code&gt;ctx.toml&lt;&#x2F;code&gt; at &lt;em&gt;your&lt;&#x2F;em&gt; repos, the several that don&#x27;t know about each other, and &lt;code&gt;ctx sync all&lt;&#x2F;code&gt; collapses them into one index. Now the model in Claude Code can &lt;code&gt;search&lt;&#x2F;code&gt; and &lt;code&gt;get&lt;&#x2F;code&gt; across all of them, retrieved on demand instead of pasted: your cross-repo context on tap, without shoveling it into the window. It&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;parallax-labs&#x2F;context-harness&quot;&gt;open source&lt;&#x2F;a&gt;, the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;parallax-labs.github.io&#x2F;context-harness&#x2F;docs&#x2F;&quot;&gt;docs&lt;&#x2F;a&gt; are thorough, and I&#x27;d genuinely like to hear from anyone who finds the deployment I haven&#x27;t.&lt;&#x2F;p&gt;
&lt;p&gt;The bet — and it is a bet, not a conclusion — is that Context Harness stops being a search box and becomes the thing that &lt;strong&gt;self-hosts the harness&lt;&#x2F;strong&gt;: the agents, the roles, the workflow, backed by a knowledge base you build once and carry with you. The doc-writing agents it already ships are the proof of concept; the missing piece is making that harness portable and its knowledge base buildable and sideloadable — the same substrate underneath Cursor today, Claude Code tomorrow, whatever ships next, local-first and inspectable, not rented from a cloud. That&#x27;s the thread the rest of this series pulls on. Not a competing editor: I have no interest in fighting Anthropic and Google over the surface, and it&#x27;s the wrong altitude anyway. The plumbing is the bet — in the prediction, and in what I&#x27;m building.&lt;&#x2F;p&gt;
&lt;p&gt;Whether it works, I&#x27;ll find out in public. There&#x27;s an honest chance that &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;modelcontextprotocol.io&#x2F;specification&quot;&gt;MCP&lt;&#x2F;a&gt; carries context and tools but not the control loop — no primitive in the spec owns the agent&#x27;s orchestration; that lives in the host — in which case &quot;portable harness&quot; is really &quot;portable context, borrowed orchestration,&quot; and I&#x27;ll say so when I hit that wall. That&#x27;s the deal for this whole series: real receipts, real numbers, and the parts where I was wrong or just performing rigor, on the record.&lt;&#x2F;p&gt;
&lt;p&gt;Next: what retrieval actually buys you, and the specific moments it&#x27;s slop in, slop out.&lt;&#x2F;p&gt;
&lt;p&gt;— Parker Jones&lt;&#x2F;p&gt;
</content>
    </entry>
</feed>
