Shared SQLite lock
Five opencode runs were started concurrently on one host. One agent's first attempt failed with “database is locked” because a sibling run held opencode's shared database.
After the lock cleared, the retry succeeded first try.
Case study — 2026-10-15
Three production websites, one owner, three domains, one afternoon.
The brief was to build three sites for a single owner across three domains. Each was to be delivered as a single self-contained HTML file: no framework, no build step.
An orchestrator decomposed the work, then spawned role-specialised agents.
Each agent drove the opencode CLI (model: deepseek-chat) to generate its artifact. Agents were split into three lanes — copy, visual and technical — and each lane wrote to its own file so lanes never collided.
The parent agent then merged the slices by hand: one lane's <head>,
one lane's CSS, one lane's text.
Five distinct visual directions were generated for the same content.
The owner chose the directions; three were taken forward as the final doors.
Five directions, three doors. The other two directions were not taken forward.
Three finished sites, about 96 KB in total.
The stack: multi-agent runtime on a self-hosted, isolated arm64 Android chroot; opencode CLI driving DeepSeek; static single-file output; Caddy with automatic TLS on a 1-core / 1.8 GB VPS.
Five real failures. This section is the point of the piece, not a footnote.
Every one of these happened on the day. Each is listed with what it cost and what it taught, because the failures are where the useful information lives.
Five opencode runs were started concurrently on one host. One agent's first attempt failed with “database is locked” because a sibling run held opencode's shared database.
After the lock cleared, the retry succeeded first try.
One opencode run hung for roughly an hour and produced no output at all. It had to be killed manually.
A DNS check reported nothing resolving, which nearly caused a wrong conclusion. The real cause: the dig binary was not installed on the host, so every lookup silently failed.
An accessibility skip-to-content link was visible to every visitor, because the CSS hid
.skip while the element used class="skip-link" — the
rule never matched.
Sections used an IntersectionObserver reveal that defaulted to opacity:0
with no fallback, so content stayed invisible when JavaScript was disabled.
What was checked, as opposed to what was claimed.
</html>, no invented facts, no external dependencies.The regression check matters most: the new work had to prove it had not disturbed what was already running on the same VPS.