FOUNDERPIPELINEUI
Right Call, Wrong Time
Twelve days since the last post.
Some of it was the work. Some of it was life. The life part stays where it belongs.
The work part: I picked a fight I shouldn't have picked. The UI overhaul.
Old UI worked. It wasn't pretty in places. Wasn't coherent everywhere. But it functioned, every screen did its job, and I built it by hand alongside the systems it served. There was no good reason to tear it down for an MVP.
I tore it down anyway. Looked at the mockups, decided "this will be quick," started. By the time I realized it was the wrong fight at the wrong time, I was already deep — snapshots before the start that I could've reverted to, sure, but the sunk-cost won. Finished it.
In an RPG the UI is where the player actually lives. Most of the screen-time isn't combat — it's hub, shop, inventory, gear, quests, achievements. So the UI had to be good *eventually*. I just didn't need it good for an MVP.
It is what it is. Mistake noted. Logged in pipeline memory so I don't make the same call again on a feature that doesn't need to ship for the MVP.
Three screens are MVP-ready as of this week. "MVP-ready" doesn't mean final — it means ships clean, holds up, more or less the way I want it. The last 10% of polish on every screen waits until after MVP is in your hands. For now: ready enough.
**Hub.** Fight card, nav list, utility bar, leather edges, parchment cards. Canary GREEN, device walk clean. Pass 1089.
**Shop.** Equipment, Consumables, Special tabs. Card layouts, buy-state rules. Canary GREEN. Pass 1086.
**Inventory.** Locker grid, item cells, stats ledger, Trainer's Logbook EquippedShelf. Pass 1061 mockup-align + Pass 1101 polish.
The other UI screens are all migrated to the new style and they all work — PreFight, Quests, Achievements, Campaign, Training, Daily Gift, Settings, MockPvP. On paper, the UI is done. What they aren't yet is MVP-ready. That's the work right now: walk each one through a single-surface polish pass until it gets there. Three done. Eight to go. "Almost done" would be a lie, but they all already function — what's left is the finish, not the build.
After MVP ships, every screen gets the final round — the one where I look at it and don't want to change anything. That's a different kind of "done" than what's getting shipped this month. Two stages. The first one is what's in front of me right now.
What changed during the overhaul wasn't just the visual style. It was how the pipeline runs UI work.
The old way: spin up six terminals, six surfaces in parallel, ship the lot. Fast. Most of the time, mostly right. Some of the time, mostly broken. The failure mode was always the same — six surfaces ship, one of them silently regresses, you find out two days later when something looks wrong on TestFlight and you have to trace which of six passes did it.
The new way: one or two terminals, one or two surfaces at a time. Per-surface canary. Per-surface device walk. The pass doesn't close until that single screen clears the bar — visual parity, structural integrity, tap-fire, no regression of the screens already shipped. Slower per-clock. Way fewer rework cycles. Compound speed is higher.
"Per-surface canary" deserves a beat — it's the part that made slower actually faster.
The recurring failure before this was screens shipping GREEN with dead space and unreadable text. The old checks ran against rect geometry — "this box is the right size, pass" — while the rendered pixels were sparse and the body text was 12pt with no contrast. Looked right on paper. Looked broken on the device.
The canary doesn't trust paper. PlayMode test, real device resolution, screenshot, then a kernel that measures the actual pixels — content coverage, dead-space bands, glyph contrast sampled at the character centroid against WCAG, text-size floors at phone scale, required-element presence. Verdict drops as JSON. Zero failing, or every leftover is a surfaced accepted-exception with a written basis.
Hard rule: GREEN before records. Never write the pass record with the canary pending. We learned that one expensive — Quests pass 1096 shipped with 56 hidden failures because the gate ran after the record. Now the gate runs before, or the pass doesn't close.
A measurement gate is only honest if you don't game it. The temptation every pass is to make the number pass instead of fixing the screen — lower a threshold, whitelist a real defect, rename a node into a looser bucket. Forbidden. Two legit moves: fix the actual defect, or — if the sampler's measuring the wrong thing — fix the sampler and surface why. That fork comes up every visual pass.
That's what the last two weeks built. Three screens shipped on a methodology that actually scales. The remaining UI screens come the same way — one or two at a time, exactly right, no regression. The pace from here is the methodology's pace, not the methodology being figured out anymore.
MVP is this month. Last day of it, maybe — but this month. Not a hope. The methodology's in. The tools work. The remaining screens are the work, and the work is what's left.
A few notes on what the MVP actually is and isn't:
The bones are solid and they stay. Combat, progression, story, voice timing, music systems — all of that is the real game. That doesn't get rebuilt.
What makes it an MVP is the skin. The art is AI-generated. The voice lines are AI-generated. I drew some of it myself in Aseprite (ask me how my pixel-art skills are if you want a laugh). The placeholder layer is real, and I'm not pretending otherwise.
If ChampChase gets funded, the first thing that happens — top priority, before any new content — is the art and voice get replaced. Real artist, original art made for this game specifically. Real voice actors, actual humans, every line recorded properly. The bones don't change. The skin gets the upgrade it needs.
A few surfaces below so you can see where the UI is heading. Originally I said the UI stays hidden until launch. Then I said "soon." Then twelve more days went by. The suspense has overstayed its welcome — here's where it's going.
Three down. Eight to go. End of the month is still the line.