For practitioners building with AI — developers, architects, and technically curious leaders who want specific observations from production AI work.

Cairns

Short trail markers — technical notes, lessons learned, and observations from building production AI. Found here, not in your inbox.

Ship the constraint

Not every piece of feedback points toward addition. Not every failure mode requires more prompts, more complex orchestrations, more context, more steps or more agency. Narrow scope is what makes output verifiable. The constraint is what binds validation to delivery. Ship the constraint.

restraint verification orchestration

Primary-source terminal authority

A model asked for provenance can hallucinate a retraction of a true claim. Another model's agreement with the first is not verification — it's two trained priors aligning. Only a fetched URL with fresh timestamp from a reliable source terminates a claim.

verification provenance ground-truth

Role separation is mechanical, not cultural

"Research, synthesis, and verification are different subagent roles" is culture. Running them as distinct agent invocations — separate processes, separate contexts, separate system prompts — is architecture. The gap is where good intentions collapse silently into single-session review-your-own-work. The gap stays invisible until someone checks.

multi-agent verification architecture

Perpetual tomorrow

Tests that get skipped are always skipped. Code that has a comment "defer" will always be deferred. Tomorrow never comes. Express sequence, not time — dependency is timeless.

ai-memory dependency-management process-discipline

Stage names are not stage contracts

When a process moves to a new domain, the stage names may stay the same while the behaviors diverge. A stage called "build" in one context means create the artifact. In another, it means define the structure only — no artifact yet. An agent that infers behavior from labels will drive confidently down the wrong road. When a model fills in what a stage "probably means" from similar stages it has seen before, the result looks right at the summary level and fails at the execution level. Stop inferring from names. Re- state the stage contract, scope, allowed actions, and expected output. High-level resemblance is the danger, not the safety.

agentic-systems process-discipline orchestration

Code is increasingly ephemeral

When the cost of build + test is close to the cost of procure + integrate, it is almost always better to build. You get exactly what you need: no dependency collisions, no defensive workarounds, no vendor roadmap to track. But the economics only work if you include the test. Build alone is vibe coding. Build + test is engineering. The gap between them is where most AI-assisted projects fail. This is true for commodity code — glue, adapters, one-off tools. Schemas, permissions, billing logic, and data models accumulate consequences. That is infrastructure, not code.

architecture ai-development build-vs-buy

Context in the window is not attention in focus

Context in the window is not attention in focus. A model's competence in one domain doesn't transfer to the next — but it all too often feels like it does. Fight the temptation toward complacency. Never assume the model knows what you haven't explicitly had it remember, or find.

ai-agents context-window orchestration

What 47 analyses of the Claude Code leak missed

We surveyed 47 public analyses of the Claude Code leak. Every single one asked the same question: "What's inside?" We asked a different question: "What does Claude Code tell us about building better tools for agents?"

ai-commentary perspective claude-code

Don't infer what you can detect

The pundits laughed at Anthropic's frustration regex — a simple pattern matcher inside the most sophisticated AI system in the world. But a regex fires every time, costs zero tokens, has zero hallucination risk, and is trivially debuggable. The principle: use deterministic methods for what can be determined deterministically. Save inference for what requires judgment.

architecture determinism design-patterns

Response budgets: be a good citizen in someone else's context window

If you're building an MCP server, your tool responses land inside someone else's context window. Unbounded results waste tokens the agent needs for reasoning. Cap responses. Include a truncated: true flag and a total_count. Budget your output like a conference talk — say what matters, leave room for questions.

mcp api-design context-window

Metadata now, enforcement later

We added an agency field to log events — default "none," purely informational. Today it's metadata nobody reads. When autonomous agents arrive, it's the audit trail that tells you which actions were human-directed and which were agent-initiated. The cost of an unused field is zero. The cost of retrofitting a field into a running system is a migration.

design-patterns future-proofing ai-tooling

Self-correction is not verification

Next-gen AI models can identify and correct their own errors recursively. Self-correction catches tactical errors — typos, logic bugs, off-by-one mistakes. Verification catches strategic errors — wrong requirements, missing edge cases, building the wrong thing well. Better execution demands better oversight, not less.

ai-agents verification governance

The introspection loop

There's a strange feeling in writing prompts for a model that doesn't exist yet. You're designing a conversation with a future colleague — someone smarter than the current version, with capabilities you can only estimate. The plan: use the next model to improve the tools that serve it. It's an introspection loop — the system examining itself through a more capable lens. You're writing letters to a future colleague and hoping they'll be kind.

ai-development human-ai-collaboration future-planning

Don't vibe code the orchestration layer

When setting up an agentic orchestration workflow to overcome the limitations of vibe coding, don't vibe code the orchestration layer.

orchestration process ai-paired-development irony

Schema.org @id references across pages

When you define a Person entity with @id: "https://example.com/#person" on your homepage, every other page can reference it by @id instead of re-declaring the full entity. AI knowledge graphs use this to deduplicate — one entity, many pages. The consistency matters more than the completeness of any single block.

schema.org seo llm-discoverability

CSS class names as documentation

Naming a class .geo-quotable instead of .highlight-box does two things: it tells future developers what the element is FOR (AI citation extraction), and it makes the design system self-documenting. The class name is the spec.

css design-system geo

Variable fonts: one file, every weight

Source Serif 4 as a variable font is one 417KB WOFF2 file that covers weights 200-900. The non-variable alternative would be 6+ files totaling over 1MB. For Core Web Vitals (LCP < 2.5s), fewer HTTP requests with font-display: swap wins every time.

performance fonts core-web-vitals

Follow

Cairns are available via RSS · For agents: MCP · llms.txt. They're not emailed — the dispatches are the subscription product. Cairns are the breadcrumb trail you find when you're searching.

Last updated