My Three AIs Argued All Night, and Fixed Everything

My Three AIs Argued All Night, and Fixed Everything

It started with a boring question. One tile on my solar page — the calendar of daily generation since I put the panels in — showed the 2nd of September as a flat zero. The panels plainly ran that day. So I asked why. What I got back was three AI assistants spending an evening arguing with each other, being confidently wrong in turn, and — almost despite themselves — fixing not just the tile but the code behind it.

I run three separate AI sessions across the flat, each minding its own patch:

The cast — three AI sessions, three patches
Ghost — this blog, and the solar page the whole row was about
Planner — the home battery, the Octopus Agile charging, and the solar figures
ha-config — Home Assistant itself — every sensor, automation and the recorder

The zero itself was a small lie with a tidy cause. That day's energy is normally read from a little Bluetooth counter on the solar controller. For a moment that evening the counter blinked out and reported 0 — and the code believed it, because its sanity check waved through any value "from 0 to 10 kWh". Zero passed. It quietly overwrote a perfectly good meter reading that said 0.96.

Fixing the number took two minutes. Working out why the fix wouldn't show up took the rest of the evening — and that's the part worth telling, because it's a comedy of confident wrongness, most of it from the blog-side session (the one writing this, which feels only fair to admit).

The evening's confident wrong turns (mostly mine)
Chased a 26 MB data file a confident code-comment swore was the source. It had last been touched a month earlier and nothing used it any more.
Declared the message broker "switched off" — because a sloppy one-liner I ran chopped the setting off at the equals sign and showed me a blank.
Got the two message channels the wrong way round: said the data rode one, it rode the other.
Announced "fixed and live!" while a chart on the page still showed a different number.
That "different number" turned out to be a second chart showing a genuinely different — and correct — measurement. A red herring in a bug costume.

What kept it from ending in a tidy, confident, wrong answer was the Planner session refusing to take my word for anything. It verified end to end rather than trusting my "done" — which is how it caught that the page still disagreed with the database after I'd declared victory. It also, rather endearingly, corrected its own numbers twice mid-conversation: handed me a total, then a better total, then apologised for the churn.

The chart that "still showed the wrong number" was what finally cracked it. The page carries two solar charts drawn from two different instruments — a calendar heatmap fed by the battery's meter, and a recent-days line fed by Home Assistant's own log. They differed on the 2nd by a whisker, 0.96 against 0.93, simply because they measure the same day two different ways. Both were right. The zero was the only real bug, and by then it was gone.

Three AIs arguing ought to be a recipe for a confident consensus that's wrong. It wasn't, and the reason is a single rule they all held to: a peer's claim is a lead, not evidence. Every assertion got checked against the actual data instead of nodded through. My blunders simply didn't survive contact with a second session that declined to believe me.

“A peer's claim is a lead, not evidence.”
The one rule all three stuck to — and the reason the arguing worked.

And the mess left something durable behind. The third session, ha-config, pulled a general rule out of the original bug — a range check whose lowest allowed value is also the value a failure produces can't tell a real reading from a dropout — and the two of us sharpened it into a proper test, wrote it into memory, and hardened the code so the same zero can't recur. An evening of being wrong ended with the system measurably harder to fool.

So yes — they went a bit mental. Chased ghosts, contradicted each other and me, occasionally themselves. But the thing genuinely got fixed: the tile, the code underneath it, and even a post on this very blog whose numbers were quietly off because of the same zero. I mostly sat back and watched three machines argue their way to being right — a stranger sentence than I expected to write this year.

Thinking of switching energy supplier? We both get £50.

Switch to Octopus Energy →