Chapter 8 · status
Honest per-element status across the seven feature families, the blockers register with unblock paths, and the working order. Sources: docs/17_FEATURES_AND_PROGRESS.md and docs/15_BLOCKERS.md — both reviewed weekly.
Badges: live shipped & tested · demo works but demo-scoped · next engine-ready, waiting on a dependency · parked idea phase.
| Element | Status | One-liner |
|---|---|---|
| A · Core loop — built | ||
| A1 · 300-format match | live | any reps, any order, first to target closes |
| A2 · tier handicap v1 | live | couch ×1.5 → athlete ×0.85 |
| A3 · %HRR handicap v2 | next | Karvonen blend — engine ready, needs straps in play |
| A4 · closure bonus | live | +15 urgency for the closer |
| A5 · charity pot | live | winner directs, never receives |
| A6 · taunt engine | live | AI-generated, canned fallback |
| B · Retention arc — built | ||
| B7 · seasons | live | 4-week series, 3/2/1 + MVP, champion crowning |
| B8 · relegation | live | A/B divisions swap at season end |
| B9 · comeback ×1.2 | live | >30% behind → one-time boost |
| B10 · MVP vote | live | second podium, feeds season points |
| B11 · streak forgiveness | live | $2 charity top-up saves the streak, once/season |
| B12 · baseline learning | live | HR drift ≤10%/update; volume-based anti-sandbagging |
| C · Social & viral — mostly built | ||
| C13 · result cards | live | 1200×675 SVG from bots, PNG from app |
| C14 · spectator mode | live | watch <code> — spectate another crew |
| C15 · crew-vs-crew | live | challenge <code> / challenge accept |
| C16 · drop-cam / public ladder | parked | ideas |
| D · Corporate — built (seeded) | ||
| D17 · org leagues | demo | hub corporate tab, awaiting real orgs |
| D18 · employer-funded pots | demo | "no employee money handled" |
| D19 · wellbeing dashboard | demo | aggregate-only, k≥5 suppression (Sahha-EAP playbook) |
| E · Verification — P1 built | ||
| E20 · camera counting | live | MoveNet in-browser, on-device only, verified:true |
| E21 · HR straps | live | GATT 0x180D, Karvonen %HRR per set |
| E22 · HealthKit / Health Connect | P2 | phased with native |
| E23 · WHOOP / Garmin cross-check | P3 | phased |
| F · Wilder cards — ideas | ||
| F24–F28 | parked | referee review · champion belts · radio mode · annual charity championship |
| G · Second wave — first four built (27 Aug) | ||
| G29 · rematch | live | one-tap run-it-back, roster carried (app + bots) |
| G30 · Monday digest | live | matches, margins, MVPs, pot, rivalry callout, AI line |
| G31 · photo finish | live | ≤5% gap → dramatic card + coral SVG variant |
| G32 · nemesis | live | head-to-head rival detection |
| G33+ · still proposed | parked | PRs · ghost race · guest slot · charity ladder · roast tiers · adaptive equivalents · warm-up predictions |
What's blocked, why, who unblocks it. 🟥 blocked · 🟧 partial · 🟩 clear — full detail in docs/15_BLOCKERS.md.
| # | Blocker | Unblock path | Status |
|---|---|---|---|
| Technical | |||
| T1 | Slack app doesn't exist yet (5-min human creation from /slack/manifest.yml) | create → install → paste Client ID at /slack → permanent Add-to-Slack link | blocked |
| T2 | WhatsApp Cloud API group messaging likely 1:1-only [VERIFY] | verify with Meta at pilot; DM-fallback designed (docs/14) | blocked |
| T3 | Bots only run while the dev machine is on (minirig offline ~96d) | power-on + tailscale up --force-reauth → hosting kit install (one command) | blocked |
| T4 | No auth — names free-typed, per-device state | magic-link auth via Resend on apps/api at MVP | partial |
| T5 | App ↔ bot state split (localStorage vs file JSON) | wire app → apps/api ← bots — built + tested, migration mechanical | partial |
| T6 | AI key balance — primary exhausted, running on secondary | monitor + top up; fallbacks degrade gracefully | partial |
| T7 | CF token lacks Tunnel:Edit — local server not exposed on the domain | widen scope or one tunnel login | partial |
| T8 | GitHub Actions runner stall (Aug 26–27) | resolved — transient incident; watch billing if it recurs (private repo) | clear |
| Legal / compliance | |||
| L1 | Charity-wager legal opinion — nobody has looked at the pot structure | brief a charity/gaming lawyer (AUD 3–10k); pledge-only / employer-funded until then | blocked |
| L2 | Apple 3.2.2(iv) — no in-app charity collection | already designed around: payments stay web-only | clear |
| L3 | Privacy policy + data inventory unwritten | one data-inventory sheet → policy + Apple labels + Play data safety | blocked |
| Business | |||
| B1 | Figma + blueprint not received from founder | email ask + call scheduled — design audit waits on it | blocked |
| B2 | Equity terms undefined (split, vesting, IP) | call agenda item; get it in writing | blocked |
| B3 | Corporate prospects unvalidated — no LOIs | ask on the call; Sahha-network intros | partial |
Deliberately NOT blockers: Apple Messages (no API exists — parked permanently) · app stores (PWA ships without them) · Strava (paid + capped) · custom ML rep counting (MoveNet covers MVP).
T1 — 5 minutes, human-in-loop → corporate surface goes live.
B1/B2 — Figma + equity specifics in writing.
T3 — always-on demo reliability.
T5 — kill the localStorage/file split; ~one session, mechanical.
L3 — one sheet feeds policy, Apple labels, Play data safety.
E20 in production play — MoveNet verifier live for pilot crews.

Phase 0 (due diligence) complete. Prototype feature-complete and live. What began as an email evaluation is a running system: a tested game engine, two chat bots, a phone-first app, an ops console, an AI layer, and push-to-deploy hosting — 122 tests green in CI (measured), 11 public surfaces, GitHub → Cloudflare Pages in ~20s. Remaining for MVP proper: state unification (T5), auth (T4), first real crews, and the pilot gates (WhatsApp verification, Stripe pots, legal opinion).
Live version of the status tables with rendered components: rwf.qalarc.com/system. Full writeups: docs/17_FEATURES_AND_PROGRESS.md · docs/15_BLOCKERS.md.