Notes · 01

The bottleneck wasn't the model & ninety minutes around a five-minute fix, and the bridge that should have existed before.

The bug

delegateandorchestrate.com/demo/justai was returning the demo's HTML at 200, but every JS and CSS asset under it was 404'ing. The demo is a Vite multi-page app deployed to justai-demo.vercel.app, then proxied to the main site through a vercel.json rewrite. The rewrite caught the HTML — but the HTML emitted absolute /assets/... paths, and those don't match the rewrite pattern, so the browser asked the wrong host for them. Easy to spot once the trace was in front of you. Less easy to spot from a casual click.

The fix

Two-line change across two repos: set Vite's base: './' in the demo's config so it emits relative asset URLs, then add a third rewrite on the main site for /demo/assets/:path*. One artifact serves both justai-demo.vercel.app/ (root-mounted) and the proxied /demo/justai path. app.html stays standalone-reachable. Live-app /api/* calls stay absolute, which is what they want.

Two paths I considered first didn't work. base: '/demo/justai/' would have broken dist/app.html as a standalone output — Vite applies base globally to all rollup inputs, not per input. A trailing-slash redirect would have fought the main site's trailingSlash: false convention. Choosing the rewrite over the redirect was the load-bearing call.

The bottleneck

That fix was five minutes. The session was ninety. The other eighty-five were spent on me, copy-pasting between an orchestration surface and a local execution surface. About ten paste cycles, each one meaningful — not noise — but each one a serial dependency on me being awake at the keyboard.

I noticed it mid-task and named it: "the only missing gap in our workflow that could probably be automated — me copying and pasting back and forth between you and codex. You guys work so well if I just simply copy and paste so you can talk to each other." Cowork-Claude responded that the answer was already in my harness, which we'd actually used once that day and then walked past.

The bridge

Earlier in the session, the auto-review helper had broken. I worked around it with a direct dispatch: one agent asked another agent for a bounded review, and the verdict came back as markdown. Zero copy-paste, zero me-in-the-loop. The same pattern would work for any task the parent session would otherwise pass to the local execution surface.

We generalized it into a small bridge with two shapes. One path handles review, planning, and code-generation requests that return prose or diffs. The other path handles bounded local execution with explicit tool permissions and logs. The important property is not the specific command name; it is that orchestration and execution can talk directly without making me the transport.

The cost lens stays the same: the orchestrator stays mostly in orchestration mode while the mechanical work goes through the cheaper execution path. The new property is I'm not the bottleneck anymore. The parent agent dispatches, watches, redirects when off-track. I approve diffs and arbitrate when verdicts disagree.

The chat

Mid-build, after I'd named the bottleneck and Cowork-Claude sketched what the bridge would look like. Lightly edited for length; nothing material removed.

Me: Crazy. I just read an article a few days ago that Opus 4.7 will absorb your harness, and to let it. Along the lines of what I was saying about how the models are pretty much there with a little nudging. AI-slop is fading and human-slop is growing.

Cowork-Claude: I'd take it half-literally. The orchestration parts — coordination, memory, agent fan-out, planning — are exactly the kind of thing models keep absorbing as they get more agentic. Each generation, more of it lives inside the model's planning rather than in shell scripts. But the infrastructure parts of your harness — routing for cost, local inference, provider abstraction, workstation integration — those stay yours. They're about cost, locality, sovereignty, integration with your particular machine. Even a much stronger model won't make those disappear, because they're about where compute happens, not what the model can do. Model absorbs the orchestration; you keep the substrate.

Both halves matter. The orchestration layer is converging into the model and that's the right direction — fighting to preserve scaffolding once the capability moves up is sunk cost. But the substrate is durable: routing policy, locality, where the bytes live, who pays for the compute. That layer is mine, regardless of which model is on top of it.

What I'm taking forward

The five-minute / ninety-minute split is the load-bearing observation. The actual code change wasn't the slow part. The orchestration around it was. As models get more capable — more agentic, longer-context, better-at-planning — the model side keeps fading. What stays is the human side: process, paste cycles, infrastructure choices, when-to-ship judgment. AI-slop fades, human-slop grows. Workflow is the new ceiling.

Every minute spent today on infrastructure — the bridge, the operating practice, the memory entries future sessions can retrieve before they re-discover the same wedge — is paying down that envelope for next time. Small infrastructure investment beats one-time hero work. The fix shipped. The pipe is now wider for the next one.


← All notes JustAi case study →