Skip to main content
Foundry Project Open Source Current build Multi-Agent Build Zero Backend

Glee-fully Chai Chasers

One wife. Two cats. Five AI tools. Zero real money.

A free, original, mobile-first cascading-reels game built as a birthday gift, and a working case study in multi-agent orchestration. One human PM directed Claude, Codex, Replit, ChatGPT, and Copilot against a canonical spec, a decision log, and a failing-test math oracle. Browser-only. Fictional currency. No purchases, no ads, no accounts.

Why this needed governance

Multi-agent work usually produces multi-agent chaos.

Point five AI tools at one repo and they overwrite each other, re-litigate settled questions, and regress each other's best work. The default outcome is churn wearing a productivity costume.

"Looks done" is not done.

The first implementation pass compiled clean and passed 23 unit tests. It also paid out 14% RTP against a 96% spec. Every gate was green except the one that mattered, because that gate did not exist yet.

Vibes don't survive handoffs.

"Make it feel like her favorite game" means nothing to the fourth tool in the chain. Canon has to be written down, or it evaporates at every boundary.

Personal projects deserve engineering discipline too.

A birthday gift with a hard deadline is exactly where governance pays: no time to rebuild, no budget to waste, one shot at the reveal.

Live Demo  ·  okhp3.github.io

External app: This game is served from okhp3.github.io, outside this site’s trust boundary.

Best on a phone. Save state inside this embedded preview may live separately from the full-screen game (browser storage partitioning). Open it full screen for the real experience.

A real game. A real spec. A real test.

The Engine

A real cascade engine.

5x4 board, 40 paylines, tumbling wins, a cascade meter feeding a free-spin ladder, specialty wilds, and a legendary event captured roughly once every 1,370 spins, on three independently rolled reels that size the reward. Pure TypeScript, zero DOM imports, fully unit-tested.

The Oracle

A simulation oracle as the definition of done.

A 200,000-spin seeded test asserts the spec's layered RTP model (the base game holds a 61% band while the bonus layer carries the rest) and five event-frequency bands. A second harness plays every bonus end to end through the same engine entry points the UI uses. Independent multi-agent validation runs totalling several million paid spins converge on a full-game RTP of about 98.1%, assuming a perfect player on the two interactive bonuses. That reading superseded an earlier forty-seed internal measurement that ran hot at its sample size, which is precisely why every published figure now ships with the harness command that reproduces it. It shipped deliberately red, and no tool was permitted to weaken it. Green meant done. Nothing else did.

The Product

Personalization as product spec.

Iced chai only. Two illustrated cats with different treat contracts. Keepsakes from one specific shared life. The specificity is the feature; genericness was treated as a defect.

The Deploy

Zero backend, zero money.

GitHub Pages static deploy, localStorage saves, fictional currency with an automatic refill. CI gates block private assets and brand strings from every build.

Five tools. One product. No chaos.

Five tools, one product, no chaos. Here's the actual structure that made that sentence true.

Tool Bounded role
Claude Canonical spec, engine math, simulation oracle, PM and independent verification
Codex / ChatGPT Work Pre-alpha foundation, product realignment, production art and UI baseline
Replit Bounded implementation sprints under validation-loop prompts
GitHub Single source of truth, CI gates, Pages deployment
Notion Project hub and decision mirror
Artifact 1

The canonical spec

One document outranks every tool's opinion. Amendments are dated and ruled on, never improvised.

Artifact 2

The decision log

Thirty-seven settled decisions and counting. Settled questions stay settled; no tool re-litigates a closed one.

Artifact 3

The oracle

A deliberately failing test as a forcing function. It caught a 7x RTP miss and a 35x bonus-frequency miss that a green build would have shipped.

Artifact 4

Layered authority

Each tool's strongest layer is protected from every other tool. Nobody regenerates someone else's best work.

Artifact 5

Bounded prompts with validation loops

Every agent got scope fences, a rubric, and a minimum cycle count. "Improve the game" was never a task.

The rules the build ran on.

One spec to rule them all.

Tools propose; the decision log disposes.

Tests are the product owner at 2 a.m.

The oracle doesn't get tired, doesn't get charmed by a pretty build, and doesn't ship 14% RTP.

Bounded work or no work.

Every agent got one deliverable, one file fence, one owner.

Generous by design.

Real slot variance, honest meters, a bust-proof balance, no dark patterns. The fun is the anticipation, not the extraction.

The gift outranks the architecture.

Every technical decision lost if it made the product less hers.

What Happened After the Gift

The gift shipped on July 17. The interesting part is what the governance layer was worth after the deadline stopped mattering.

More than four hundred commits later, the game carries five bonus chapters that did not exist at ship: Joey's Laundry Helper, Phoebe's Lap Quest, the Moonlit Keepsake Trail memory game, Morning and Nighttime Treat Time, and a five-act UniGlee marathon that plays out across all of them. It also grew a progression economy, a wager ladder, an ingredient almanac, and a cabinet UI built around an illustrated marquee. None of that regressed the engine, because the oracle never moved.

The maintenance record is the part the original build could not demonstrate. The test suite went from 149 to 360. A threat model landed. The package manager now enforces a one-day minimum release age on every dependency as a supply-chain defense, with two logged CVE overrides. Architecture decisions moved into ADRs. The repository README was rewritten against the code, not against the previous README, with every number in it re-measured on the commit it describes.

That last sentence is the whole thesis. Documentation that quotes documentation drifts. Documentation that quotes a test run cannot.

A birthday gift. Not a casino. Not a wagering product.

This project is not:

  • --a gambling product or a real-money system of any kind
  • --a casino affiliate, promotion, or template for wagering software
  • --affiliated with any game studio, beverage brand, or pet-food brand
  • --a data product (no accounts, no purchases, no ads, no cash-out)

It is a birthday gift with a public repo, and a demonstration that one person can direct a council of AI tools to ship a polished product in nine days.

Nine days. One shot at the reveal.

Chai Chasers went from first research prompt to shippable in nine days of nights and weekends. Spec and mechanics research landed July 9 and 10. The first implementation slice arrived July 10 and promptly failed the brand-new simulation oracle at 14% RTP, which is exactly what the oracle was for. A bounded Round-2 sprint rebuilt the math. A July 12 realignment reset the product fantasy and brought production art. Ship week tuned, froze, and wrapped it. The final build passed 149 tests, and the last edit before the freeze was one sentence from Jamie to Glee. The full narrative lives in the build log, and the receipts live in docs/DECISION-LOG.md.