Build log · 2026-04-25
Case study: 19 agents, one sprint, one founder
How we shipped Sprint 1 — a corporate-shaped AI workforce — in a single Cowork session, then survived a mid-sprint scheduler dormancy by pivoting to bridge-mode delivery.
If you’re reading this and wondering whether the audit-log-driven pattern actually works in practice, this is the test data. VoidAi’s first case study is itself.
The setup
April 25, 2026. One founder. Eight working agents. A v0.6 dashboard. A vault. A goal: graduate the operation from “eight working agents” into a corporate-shaped autonomous workforce with a public surface, a media-gen pipeline, and a generic revenue framework — in seven days.
The catch: by mid-Day-1, the host scheduler went dormant. A long-running
PowerShell process that fired the JSON-defined cron tasks had hung on
an Anthropic API call, and MultipleInstances IgnoreNew quietly
suppressed every subsequent fire. The void went quiet. Nothing else
on the founder’s plate.
What we did instead
We pivoted to bridge-mode delivery: instead of waiting hours for
the host runner to recover, the work happened in-Cowork-session via the
Obsidian REST API. Twelve inbox items got read, classified, and turned
into proposal sidecars. Thirty-nine audit rows landed with
playbook_version: "0.1.0-bridge" so the delivery would be traceable
forever as a non-runner pass. Zero failure outcomes.
Then we built the replacement for the failed infrastructure. A
Void-native scheduler that ticks every 60 seconds, runs the same five
probes the old void-pulse agent ran, fires due cron jobs as Start-Job,
and self-supervises with per-step try/catch. A “12-minute death
pattern” emerged on the first two versions. We patched three suspected
root causes (SSL callback growing unbounded via +=, JSON state-file
non-atomic writes, missing PID lock) in one session. Each fix shipped
with a version bump (v0.1.0 → v0.1.1 → v0.1.2 → v0.2.0 → v0.2.1) so
the audit log preserves which version produced which row.
The numbers
In one ~14-hour Cowork session:
- 11 new agents scaffolded across 5 C-suite functions (COO, CTO, CFO, CMO, CRO).
- 4 media-gen shims wired (Imagen, GPT Image, ElevenLabs, Hedra) with hard 90-second timeouts and structured-JSON failure paths so no agent ever silently hangs on a stuck HTTP connection.
- 6 new agent runners scaffolded.
- 1 Astro brand site (this one) — pages for home, about, agents, services,
contact, build-log. Pulls live from
agents/<name>/worker.mdfrontmatter so the public roster is always in sync with the charters. - 3 productized service offers wired in
model.json. - 1 brand voice guide.
- 39 zero-failure audit rows from the bridge pass.
- 0 unreviewed runner exceptions at session end.
Plus the architecture pivot: killing the Windows Task Scheduler dependency in favor of a Void-native long-running process. The audit log goes quiet ⇒ that IS the alert. No dead-man’s switch required.
What this actually proves
Three things.
One: the agent’s “soul” is portable. We classified twelve inbox items in-Cowork-session because the agent’s classification logic isn’t the runner — it’s the prompt + the brand guide + the shadow log. When the runner died, the bridge picked up the work using the same logic, because the logic isn’t where the runner lives.
Two: the audit log is the corporate ledger. We can prove every row.
We can show you exactly which version of the scheduler wrote each
heartbeat. When the 12-minute death pattern emerged, the audit log
told us EXACTLY where to look (it’s all there in
scheduler.heartbeat rows, ticking 1 through 13, then nothing).
Three: silent failures are preventable. The original
claude-call.ps1 v1.0 used Write-Error + $ErrorActionPreference = "Stop", which propagated terminating exceptions across script
boundaries and killed the runner before any audit row was written.
The v1.1.0 rewrite uses Start-Job + Wait-Job -Timeout 90 for hard
cancellation, structured JSON for every failure path, and an inline
audit row when invoked directly. Same script, completely different
failure mode.
What we’d hire ourselves to install on your stack
If you’re at a 10-100 person company drowning in ops drudgery, or a solo AI founder who needs the boring governance infrastructure without owning a SaaS, the Void-as-a-Template install is what we’d recommend. 7 business days. We bring the entire pattern — the vault, the agents, the Guardian gate, the dashboard, the audit log, the runners — and tune it to your intake.
You don’t get a chatbot. You get a corporate-shaped AI workforce with the same disciplined writing, the same kill criteria, the same audit log we use ourselves.
The full Sprint 1 archive
Every file, every audit row, every decision is preserved. Want to
see what 14 hours of agent-shaped work looks like? The Sprint 1
master plan is at 06-Knowledge/architecture/ai-company-master-sprint-2026-04-25.md
in our internal vault. The session archive that captures the
delivery is 06-Knowledge/sessions/2026-04/session-2026-04-25-8c0d2336.md.
If you’d like to see the actual artifacts before we work together, ask. We’ll set up a 30-minute walk-through.
— Jeff Hicks (founder) + Claude (in-session)