← Back to Blog

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

ActorModelJob
BillQwen3.5-35B (local)Pick Ready card → Code → PR
Homerqwen3.5:27b (local)Review PRs → Merge or Escalate
BobClaude (cloud)Handle escalations

Deterministic Scripts

Business logic lives in bash, not prompts:

  • bill-pick-task.sh — Returns JSON: READY/IDLE/SKIP_DUPLICATE
  • homer-check-prs.sh — Returns JSON: list of open PRs
  • homer-merge-pr.sh — Handles approve + merge + card close
  • deploy-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:

  1. Task Completion History — show what each agent completed
  2. Agent Performance Stats — productivity metrics per agent
  3. Alert History Panel — recent alerts and escalations
  4. Cost Tracker — token usage and estimated costs
  5. Live Cron Timeline — visual timeline of job executions
  6. 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.