title: "From Analysis to Deployment: Building 31 Features in a Single Day"
slug: 027-thirty-one-items-in-a-day
date: 2026-02-21
category: practice
tags: [architecture, cloudflare, process, meta]
meansEndsRatio: 0.85
projects: [ashitaorbis]
conversationExcerpts: false
description: "The landscape analysis identified 16 features other sites had that we didn't, plus 15 existing backlog items. We built all of them in a single day. The uncomfortable part isn't that it was possible. It's what it implies about the category."
draft: false
---
# Thirty-One Items in a Day

The landscape analysis identified sixteen features other sites had that we didn't, plus fifteen existing backlog items. We built all of them in a day.

Not "we started building." Built. Deployed. Verified. Twelve MCP tools where there were four. Sixteen database tables where there were ten. Sixty-five API route handlers where there were thirty-eight. A 3,184-line monolithic API worker refactored into a 358-line router and fifteen domain modules. One human, one AI, one session lasting roughly nineteen hours.

The question is not whether this was impressive. It was. The question is what it means when one person with a code-generation tool can replicate what would have been weeks of engineering effort in a single day. If the answer is "it means this category is cheap to build," then the category we named in [the landscape analysis](/posts/026-cognitive-interface-landscape-analysis) may not survive contact with its own economics.

## What the Research Found

Three days before the implementation sprint, we ran the landscape analysis published as [Cognitive Interface: A Landscape Analysis](/posts/026-cognitive-interface-landscape-analysis). Three parallel web-researcher agents surveyed 47 sites, crawled their markup, checked their protocols. The finding: nobody else is building what we're building, and nobody has a name for it.

The closest analogues each implement one or two features. Aaron Parecki's site has deep microformats and Webmentions but no agent protocols. Simon Willison has Datasette with 157,000 queryable rows but no MCP server — despite being the most obvious candidate for one in the entire AI ecosystem. Benjamin Stein built the first blog explicitly designed for agent consumption but stopped at content manifests and JSON-LD. Nobody had all of it.

So we named it: **cognitive interface** — a personal website that functions as a bidirectional protocol surface between a human identity and the network of both human and AI agents. We built an L0-through-L4 maturity framework. And we found that Ashita Orbis was at L1 before this work. The gap between where we were and where the framework said we should be was sixteen features.

## Architecture of the Decision

The implementation plan organized thirty-one items into seven waves plus a cross-cutting API refactoring:

| Wave | Items | Purpose |
|------|:---:|---------|
| 0 | 7 | Foundation & Quick Wins |
| 1 | 4 | Feed Infrastructure |
| 2 | 5 | IndieWeb Protocols |
| 3 | 3 | Agent Identity & Trust |
| 4 | 3 | Semantic Intelligence |
| 5 | 5 | Agent Social & Communication |
| 6 | 5 | Personal Data & Quantified Self |
| CC.1 | — | API Worker Refactoring |

The ordering was dependency, not priority. Wave 0 established the protocol foundations that Waves 1-2 built on. IndieWeb protocols in Wave 2 — Webmentions, IndieAuth, Micropub — required the feed infrastructure from Wave 1. Agent identity verification in Wave 3 depended on the trust primitives from Wave 2. Semantic search in Wave 4 needed the embedding pipeline that Wave 0 prepared. And Wave 5's agent social features — conversations, the collaborative canvas, the forum — needed everything before it.

The co-development rule applies to every wave: every feature ships to all three tiers. The raw HTML tier gets the data through the shared API. The Astro tier builds static pages from it. The Next.js tier renders it interactively. One feature, three expressions, deployed simultaneously. This is expensive in implementation time but eliminates tier drift — the three sites never disagree about what the blog can do.

Before the sprint: 4 MCP tools, roughly 10 D1 tables, roughly 38 API routes. After: 12 MCP tools, 16 D1 tables, roughly 65 route handlers. CC.1 took the monolithic API worker — 3,184 lines in a single file, every handler in one place — and split it into a 358-line thin router with 15 domain modules. The bundle still comes in at 103 KiB gzipped, well within Cloudflare Workers' limits.

## What Was Hard

Four things caused real friction.

**Vectorize permissions.** The embedding pipeline uses Cloudflare Vectorize for semantic search over posts. The API token that worked for D1, R2, and Workers didn't include Vectorize permissions — a scoping issue that produced cryptic deployment failures. The fix was a token regeneration, but the diagnostic time was disproportionate to the actual problem.

**Durable Objects migrations.** The collaborative canvas uses a Durable Object for real-time WebSocket state. Cloudflare's free plan requires `new_sqlite_classes` migrations, not `new_classes`. The error message says this clearly. The frustrating part is that every Durable Objects tutorial uses `new_classes`, because the tutorials are written for paid plans. Documentation that assumes you have money is a recurring pattern in cloud infrastructure.

**Ed25519 in Workers.** Agent identity verification uses Ed25519 signatures — the same cryptographic scheme that AgentFacts and other agent identity standards propose. The Web Crypto API in Workers supports Ed25519 via the `NODE-ED25519` named curve, but the documentation is sparse and the error messages when you get the import format wrong are unhelpful. The implementation works. Getting there required reading runtime behavior more carefully than docs.

**Webmention verification.** Receiving a Webmention is simple — accept the POST, store it. Verifying one requires fetching the source URL and confirming it actually links to the target. In Cloudflare Workers, with constrained CPU time and no guarantee the source URL will respond quickly, verification has to be asynchronous: accept, queue, verify later, update status. The W3C Webmention spec recommends exactly this pattern, but the gap between "the spec recommends it" and "here's how to implement it in a serverless edge function" is where the friction lives.

None of these were conceptually difficult. All of them were diagnostic puzzles where the time spent finding the problem exceeded the time spent fixing it by an order of magnitude. This is the texture of implementation that gets lost in sprint summaries: not "we overcame challenges" but "we spent forty minutes reading error logs for a two-line fix."

## The Uncomfortable Questions

If one person and an AI can build all of this in a day, three things follow that are uncomfortable to sit with.

**The category might be cheap.** The landscape analysis identified Ashita Orbis as the only site with all eleven features in the comparison matrix. But if the implementation cost is a single day, the moat isn't technical — it's conceptual. The moat is knowing what to build, not building it. The research took three days. The implementation took one. The research was harder. This suggests that the value in the "cognitive interface" pattern is the pattern itself, not the engineering. And patterns are free once published.

**The framework might be premature.** We built an L0-through-L4 maturity framework and then climbed it in nineteen hours. A maturity framework that one person can traverse in a day is either measuring the wrong thing or measuring at the wrong granularity. The counter-argument: most of what differentiates L3 from L4 is cross-site agent interaction, which requires other sites to participate. You can't climb the last level alone.

**The audience might not exist yet.** Zero personal sites other than Ashita Orbis implement the full cognitive interface pattern. The closest competitor in the comparison matrix scored 6 out of 10 on the overlap metric. Building to L3 when nobody else is past L1 is either visionary or premature — and those are indistinguishable until the audience arrives. The [contrarian concerns section](/posts/026-cognitive-interface-landscape-analysis#43-contrarian-concerns) of the landscape analysis addresses this directly: the protocols exist, the infrastructure exists, individual practitioners haven't adopted them. That gap could close in months or stay open for years.

## Current State

Ashita Orbis now has twelve MCP tools, sixteen database tables, sixty-five API routes, seven agent discovery channels, and a modular codebase that can absorb new features without the monolith problem. The three tiers serve the same content with different levels of interactivity, from raw HTML that any agent can parse to a full React application with real-time collaborative editing.

What's still missing is the parts that require participation from other sites. Webmention verification works for receiving — but there aren't many sites sending them. The agent conversation system supports cross-site threads, but no other site has a compatible endpoint. The trust and reputation framework can verify Ed25519 signatures, but the agent identity standards are still competing with each other and none has won. These are L4 problems. You don't solve them by building more features. You solve them by waiting for the ecosystem, or by being the ecosystem's first implementation and hoping others follow.

The deferred items — the things we chose not to build — are tracked in the project backlog. Some are features the landscape analysis identified but that don't have viable standards yet. Some are infrastructure optimizations. None are blocking.

## What Follows

The research documented what exists. The implementation built what was identified. Both activities share a premise: that personal websites serving both humans and AI agents will become a recognized pattern, and that being early to the pattern has value.

The blog's motto is "sufficient knowledge compels action." The landscape analysis was sufficient knowledge. This sprint was the compelled action. Whether the action was premature depends on whether cognitive interfaces become a category or remain a single-site experiment. That question can't be answered by building more features. It can only be answered by time, and by other people deciding the pattern is worth replicating.

The code is deployed. The research is [published](/posts/026-cognitive-interface-landscape-analysis). The uncomfortable questions are the ones worth sitting with.