Can an orchestrating agent build and ship a Cloudflare board app slice by slice from a Wayfinder map, merging and deploying its own green pull requests, and what breaks when a merge is a deploy?
Building a Board App Slice by Slice with Wayfinder
Mostly yes. In three days we built boards.thrivbe.com on Cloudflare Workers and Durable Objects as numbered slices from a Wayfinder map, merging and deploying each green pull request; the backlog went from 8 to 2 in a day. Lessons: Durable Object RPC rejects null-prototype objects, and a merge to main is a deploy.
- Cloudflare Workers
- Durable Objects
- Cloudflare R2
- ElevenLabs Agents
- GitHub Actions
- Codex
- Claude Code
Relevant services: Second Brain Audit — €750 · Thrivbe AI
Hypothesis
A board app (boxes, arrows, goals, a day-by-day journey, a voice guide) is too big to build in one go but fits well into small slices. If a Wayfinder map holds the open questions and each decision becomes a ticket, then each slice can be built as its own pull request. If the orchestrator is allowed to merge and deploy green pull requests without asking each time, the owner's merge and deploy clicks stop being the bottleneck between slices.
What we built
- The app. boards.thrivbe.com runs on Cloudflare Workers with one Durable Object per board. Boards have kinds (system, goals, attendee day), a switcher, a scenario view, history with a slider and reset, and a progress panel that polls GitHub issues.
- A talking guide. An ElevenLabs agent answers questions about a board and can stage board changes by voice. Each conversation start reserves a fixed cost against a per-board daily budget, and fails closed.
- Backups. A nightly job writes one JSON file per changed board to R2. A dead-job check reports to Sentry if no backup lands for 36 hours. An admin-key restore endpoint takes a backup of the current state before it restores.
- Rights. An admin page behind Cloudflare Access for the owner only, a one-time-PIN sign-in for anyone else, and per-user rights on boards.
- Goals and journey views. A goals outline and a top-to-bottom day view, with a role lens and "needs" links between steps.
- The workflow. Wayfinder maps (a "finish the board app" map and a "boards for the whole system" map) held the questions. Decisions became tickets, tickets became numbered slices. Codex, and later cloud agents, wrote the code. The orchestrator ran the checks, got a review, squash-merged and deployed, then live-checked each slice and commented the result on the issue.
Learnings
- Durable Object RPC rejects null-prototype objects. A progress poll built
maps with
Object.create(null). Every live call failed withDataCloneError, yet Node'sstructuredCloneaccepts those objects, so unit tests with fake stubs were green. The fix copied the document through JSON before the call. Test fakes for DO stubs now reject non-plain prototypes. We found it in Sentry, not in test output. - A merge to main is a deploy. A workflow ships the Worker on every push to main. We rolled the backup slice back by hand after it crashed the board objects. An hour later a merge of an unrelated pull request shipped main again, and the crash came back. A manual rollback does not outlive the next merge. Fix main first (revert or an off switch), then merge anything else.
- The voice guide read code aloud. It spoke raw change JSON and believed it could not add boxes. We found this in a real conversation transcript. The fix documented the change shapes in the agent builder script, refused bad shapes before staging, forced a plain-words read-back, and patched the live agent's prompt and 22 tool configs. The patch script updates only tools and prompt, never a full upsert, and we took a backup of the agent first.
- Prototype before you pick a look. The goals band was settled with a throwaway prototype of 3 looks on real board text. The owner picked a thin time strip with one dot per key result, rolled-up lines on hover only, and a Gantt-row goals view. Key-result dates stay optional.
- Cloud agents can take the queue, with care. A cloud agent took roughly 25 minutes per ticket in the session that cleared the backlog. Deleting a base branch on merge closed the pull requests stacked on top of it, so we reopened them as new ones.
- Still open. Wider key-result progress, child-board journeys and a third-party backup copy are not done. Whether the voice guide now follows the fixed prompt end to end still needs a live retest.
Log
- 2026-10-27: Backlog went from 8 open issues to 2 in one day: needs links, roles and role lens, goals outline and journey day, a phone-width fix, and the voice guide fix, each merged, deployed and live-checked. Goals and journeys map continued with the look decisions above.
- 2026-10-26: Slices 7 to 11 live: scenario view, history and reset, progress panel, voice guide, nightly R2 backup. Per-user sign-in and rights, admin page and guide chat panel followed in the evening. Hand rollback of the backup slice was re-shipped by the next merge.
- 2026-10-25: Build starts from the Wayfinder map. Orchestrator gets leave to squash-merge and deploy green slice pull requests.
