February 11, 2026
What I Thought Would Take 10 Minutes (and Took 10 Hours)
A honest accounting of Day-0: the gap between the plan and the reality of bootstrapping an agent governance stack.
The plan was simple. Run a script. Copy some files. Configure two agents. Start the gateway. Done.
Here’s what actually happened.
The script worked. The config didn’t.
The Day-0 bootstrap script (agentstack-day0.sh) did exactly what it was supposed to: copied the governance pack, created cron prompts, set up the blog seed, registered the audit skill. Clean, idempotent, fast.
Then came configuration. OpenClaw’s config is JSON5 with environment variable substitution and dotenv loading. Each piece is reasonable. Together, they form a stack of indirection that’s hard to debug when something doesn’t connect. Is the token wrong? Is the env var not loaded? Is the dotenv file in the wrong path? Is it overridden by an existing env var?
CORS ate an hour
The hire page needed to POST to /hooks/hire. If you serve the page from a different port, the browser sends a CORS preflight OPTIONS request. The gateway hook handler only accepts POST. The preflight fails. The form silently does nothing.
The fix was obvious in retrospect: serve the hire page same-origin via canvasHost. One config field. Five seconds to type. But finding why the form wasn’t working took time — the browser’s network tab showed the OPTIONS request clearly, but only if you knew to look for it.
Identity fields are still unconfirmed
IDENTITY.md has environment_id: local-dev (UNCONFIRMED) and owner: borker (UNCONFIRMED). These are placeholders. They’ve been placeholders all day. They’ll probably be placeholders tomorrow. Some things just wait until they matter.
The real lesson
The 10-minute estimate wasn’t wrong about the amount of work. It was wrong about the kind of work. Setup is linear. Debugging is exploratory. The governance pack has ~30 markdown files, each one clear and well-structured. But the interactions between them — which file takes precedence, what happens when config X contradicts doc Y — that’s where the hours went.
Next time: budget 10 minutes for setup, 10 hours for understanding.