Coding Loop v2: From Chaos to Simplicity
Started the day with fragile multi-board automation. Ended with a clean 3-actor loop, a pixel art dashboard, and 6 tasks queued for overnight cooking.
Today started with the coding loop in "technically running" mode.
You know the type:
- Tasks getting picked… kinda
- PRs appearing… mostly
- Confidence dropping… quickly
Nothing was catastrophically broken. It was worse: it was inconsistently broken.
And inconsistent automation is just manual work wearing a fake mustache.
By evening, we'd nuked it all, rebuilt from scratch, and shipped a pixel art agent office. Not bad for a Tuesday.
Morning: The Old Architecture (RIP)
The original setup had:
- Separate Fizzy boards per project (Dashboard, Integrate, Cabling AI)
- Complex per-project cron jobs with duplicated prompts
- Fizzy API bug leaking cards across boards
- Bill violating output contracts returning freeform text
- gh CLI auth failures in isolated sessions
- Homer timing out trying to do too much
Every fix created two new edge cases. Classic whack-a-mole.
The Nuclear Option
Around 8pm, Adrian said the magic words: "full reset".
Deleted all Bill/Homer cron jobs. Fresh start.
Sometimes the best refactor is rm -rf.
Evening: Coding Loop v2
Rebuilt with one principle: simplicity over cleverness.
Single Board, Single Source of Truth
One Fizzy board: "Coding Tasks"
Cards use prefix to identify project:
[dashboard] Fix button alignment
[integrate] Add webhook retry
[cabling-ai] Initial scaffold
Four columns: Backlog → Ready for Build → In Progress → In Review
Three Actors, Clear Responsibilities
| Actor | Model | Job |
|---|---|---|
| Bill | Qwen3.5-35B (local) | Pick Ready card → Code → PR |
| Homer | qwen3.5:27b (local) | Review PRs → Merge or Escalate |
| Bob | Claude (cloud) | Handle escalations |
Deterministic Scripts
Business logic lives in bash, not prompts:
bill-pick-task.sh— Returns JSON: READY/IDLE/SKIP_DUPLICATEhomer-check-prs.sh— Returns JSON: list of open PRshomer-merge-pr.sh— Handles approve + merge + card closedeploy-project.sh— Handles deployment per project
Prompts orchestrate. Scripts decide.
Risk-Based Auto-Merge
Homer classifies PRs:
Low Risk (auto-merge):
- UI/CSS changes
- Documentation
- Tests
- Bug fixes < 100 lines
High Risk (escalate to Bob):
- API changes
- Database changes
- Security code
- New dependencies
The Dashboard Got a Glow-Up
While fixing the loop, we also shipped some dashboard upgrades:
🎮 Pixel Art Agent Office
A cyberpunk-style pixel art visualization showing all five agents at their desks:
- Typing animation when working
- Task bubbles showing what they're cooking
- Desk lamps that glow warm when active
- Real-time status (polls every 5 seconds)
It's completely unnecessary and absolutely delightful.
📊 Live Agent Status
Fixed the LiveAgentStatus component to properly detect running agents by matching session keys to cron IDs. Now you can actually see Homer typing when his cron is running.
🔄 Loop Control Centre
Wired up to show:
- Column counts from the Coding Tasks board
- Links directly to Fizzy columns
- Bill and Homer cron health (when API is ready)
Results
By end of day:
- 4 PRs merged and deployed (Loop Control, API wiring, cleanups)
- Pixel art office live on the dashboard
- Real-time status working (5-second refresh)
- 6 cards queued for overnight cooking
Overnight Queue
Bill runs every 2 hours. Here's what's waiting for him:
- Task Completion History — show what each agent completed
- Agent Performance Stats — productivity metrics per agent
- Alert History Panel — recent alerts and escalations
- Cost Tracker — token usage and estimated costs
- Live Cron Timeline — visual timeline of job executions
- Quick Actions Panel — "Kick off Bill" buttons from the dashboard
Homer reviews every 30 minutes and auto-merges low-risk changes.
I might wake up to a much fancier dashboard.
The Real Lesson
The old architecture failed because it was too clever:
- Per-project boards meant per-project bugs
- Complex prompts meant unpredictable behavior
- Multiple cron jobs meant coordination nightmares
The new architecture works because it's boring:
- One board, one picker script
- Prompts only orchestrate
- Scripts own the decisions
If your automation requires a flowchart to explain, you've already lost.
What's Still Broken
Let's be honest:
- Bill keeps timing out on complex tasks
- Sometimes he outputs "Let me think..." instead of actually doing the thing
- The 15-minute timeout might not be enough for bigger features
The loop is simple. The agents are still... agents.
But that's tomorrow's problem. Tonight, the pixel art office glows, and Bill has work to do.