Chapter 8 · status

Status & Roadmap

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.

Feature families A–G

ElementStatusOne-liner
A · Core loop — built
A1 · 300-format matchliveany reps, any order, first to target closes
A2 · tier handicap v1livecouch ×1.5 → athlete ×0.85
A3 · %HRR handicap v2nextKarvonen blend — engine ready, needs straps in play
A4 · closure bonuslive+15 urgency for the closer
A5 · charity potlivewinner directs, never receives
A6 · taunt engineliveAI-generated, canned fallback
B · Retention arc — built
B7 · seasonslive4-week series, 3/2/1 + MVP, champion crowning
B8 · relegationliveA/B divisions swap at season end
B9 · comeback ×1.2live>30% behind → one-time boost
B10 · MVP votelivesecond podium, feeds season points
B11 · streak forgivenesslive$2 charity top-up saves the streak, once/season
B12 · baseline learningliveHR drift ≤10%/update; volume-based anti-sandbagging
C · Social & viral — mostly built
C13 · result cardslive1200×675 SVG from bots, PNG from app
C14 · spectator modelivewatch <code> — spectate another crew
C15 · crew-vs-crewlivechallenge <code> / challenge accept
C16 · drop-cam / public ladderparkedideas
D · Corporate — built (seeded)
D17 · org leaguesdemohub corporate tab, awaiting real orgs
D18 · employer-funded potsdemo"no employee money handled"
D19 · wellbeing dashboarddemoaggregate-only, k≥5 suppression (Sahha-EAP playbook)
E · Verification — P1 built
E20 · camera countingliveMoveNet in-browser, on-device only, verified:true
E21 · HR strapsliveGATT 0x180D, Karvonen %HRR per set
E22 · HealthKit / Health ConnectP2phased with native
E23 · WHOOP / Garmin cross-checkP3phased
F · Wilder cards — ideas
F24–F28parkedreferee review · champion belts · radio mode · annual charity championship
G · Second wave — first four built (27 Aug)
G29 · rematchliveone-tap run-it-back, roster carried (app + bots)
G30 · Monday digestlivematches, margins, MVPs, pot, rivalry callout, AI line
G31 · photo finishlive≤5% gap → dramatic card + coral SVG variant
G32 · nemesislivehead-to-head rival detection
G33+ · still proposedparkedPRs · ghost race · guest slot · charity ladder · roast tiers · adaptive equivalents · warm-up predictions

The SOT reconciliation — where the build stands vs the master spec

3 Sep 2026: Ben's 36-page master Source of Truth (v2026-09-02) became the product spec. Full table in docs/27_SOURCE_OF_TRUTH_RECONCILIATION.md; this is the condensed, current truth.

AreaSOT (canonical)Where we areStatus
Battle modelDaily battle, adjusted target 200, first eligible to target = Daily Win, battle continues — later completers bank the dayEngine V4 (game-core + apps/sot-engine.js) + the v4 app play it end to end; e2e asserts win/bank/failshipped
SeasonsWeekly default · 1 Daily Win = 1 season pointShipped as default (monthly optional, Major future)shipped
StakesDinner / Dare / Deliverable / Charity Pot — agreed before season, resolve after; charity = contributions + winner directs + disclosed feeAll four lifecycles in Engine V4 + the v4 app (agreement gating, obligation fulfilment, charity chooser + receipt)shipped
Rep StealActivator gains 10% equivalent — target keeps their score (pure gain)Corrected in Engine V4; e2e asserts the target unchangedshipped
Group ShieldProtects the group from an agreed daily failure consequence (streak reading)Streak-protection semantics shipped (consumed at the close it saves); exact consequence scope stays open with Benshipped (scope open)
Power-up canon4 launch + post-launch set (Surprise Bomb, Rescue Rope, Combo Boost, Double Down, Assist Boost, Shield Bash)All in the engine with SOT semantics; extras from our 14 preserved as experimentalshipped
Team mode2+ per side, 3v2 allowed, scoring normalisation open (Q229–231)Team scaffolding in Engine V4, scoring pluggable per the SOT's UNCLEARscaffolded
Bots on the daily modelChat layer per §1.3 — announcements + fast commandsSotCommandBus built parallel to the legacy bus (steal=pure-gain, day close + auto-close, full stake lifecycle, --sot sims); uncommitted at time of writing — see Botsin flight · tested
BrandNear-black + gold primary + purple secondary; loot presentation; 5-tab nav; "Join the Battle. Win the Day."The v4 app's default skin — validated by the spec's own directionshipped
Company / contractNarwhal Ent Pty Ltd is the engaging entityContract parties updateddone
Critical statesThe screen inventory's MISSING/edge states — reconnect, sync conflict, duplicate warning, rest day, winner-knownv4 app ships offline/reconnecting, sync conflict + duplicate warning, rest-day home, battle-complete-season-live; own e2e walkshipped
Platform / techFlutter? NestJS? Cognito? — unlocked questions (Q263–269, 292–299)Bun/PWA/Hono stays the fastest prototype path — founder+Ben decisionopen (deliberately)

SOT open questions we answered with working software

The spec's §6 list, answered by things you can click today — the proposals to bring to Ben.

Q240–242 · power-up economy

How are cards acquired, kept fair, do they expire? Our live answer: founder pack + daily drop, hold cap 4, leftovers carry (no expiry), draft-from-3 with the catch-up curve from v2 for competitive fairness.

Engine V4 + v4 app

Q216 · RUF vs reps

Internal unit naming. Implemented as ruled: RUF internal, "reps" everywhere in the UI — enforced by the e2e language gate.

v4 app + tests

Q222 · the 200 target

Working baseline confirmed? Configurable, default 200 — the wizard presets it, the engine honours per-group targets.

Engine V4

Q223 · 1:1 season points

Daily Win → season point conversion. Shipped as default — standings read straight from the engine record.

Engine V4

Q237 · can a steal win the day?

Stolen reps counting toward target. Our answer: a per-day stealCanTriggerWin flag — the demo sets it on; the group decides.

Engine V4 flag

#103/#105/#119/#29/#102 · critical states

The spec's missing/edge screens. Built as real states with their own 59-check e2e — offline queue, sync conflict sheets, rest-day home, winner-known transitions.

v4 app + e2e-states

Still founder/Ben decisions, not ours to guess (SOT §6): handicap formula details (Q217–221) · team scoring (Q229–231) · brand lock (Q270–275) · monetisation (Q276–282) · platform (Q263–269, 292–299).

Blockers register

What's blocked, why, who unblocks it. 🟥 blocked · 🟧 partial · 🟩 clear — full detail in docs/15_BLOCKERS.md.

#BlockerUnblock pathStatus
Technical
T1Slack app doesn't exist yet (5-min human creation from /slack/manifest.yml)create → install → paste Client ID at /slack → permanent Add-to-Slack linkblocked
T2WhatsApp Cloud API group messaging likely 1:1-only [VERIFY]verify with Meta at pilot; DM-fallback designed (docs/14)blocked
T3Bots only run while the dev machine is on (minirig offline ~96d)power-on + tailscale up --force-reauth → hosting kit install (one command)blocked
T4No auth — names free-typed, per-device statemagic-link auth via Resend on apps/api at MVPpartial
T5App ↔ bot state split (localStorage vs file JSON)wire app → apps/api ← bots — built + tested, migration mechanicalpartial
T6AI key balance — primary exhausted, running on secondarymonitor + top up; fallbacks degrade gracefullypartial
T7CF token lacks Tunnel:Edit — local server not exposed on the domainwiden scope or one tunnel loginpartial
T8GitHub Actions runner stall (Aug 26–27)resolved — transient incident; watch billing if it recurs (private repo)clear
Legal / compliance
L1Charity-wager legal opinion — nobody has looked at the pot structurebrief a charity/gaming lawyer (AUD 3–10k); pledge-only / employer-funded until thenblocked
L2Apple 3.2.2(iv) — no in-app charity collectionalready designed around: payments stay web-onlyclear
L3Privacy policy + data inventory unwrittenone data-inventory sheet → policy + Apple labels + Play data safetyblocked
Business
B1Figma + blueprint not received from founderemail ask + call scheduled — design audit waits on itblocked
B2Equity terms undefined (split, vesting, IP)call agenda item; get it in writingblocked
B3Corporate prospects unvalidated — no LOIsask on the call; Sahha-network introspartial

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).

The working order

1 · Slack app

T1 — 5 minutes, human-in-loop → corporate surface goes live.

blocker T1

2 · Founder email + call

B1/B2 — Figma + equity specifics in writing.

blockers B1 B2

3 · Bots to minirig

T3 — always-on demo reliability.

blocker T3

4 · App ↔ API ↔ bots

T5 — kill the localStorage/file split; ~one session, mechanical.

blocker T5

5 · Data inventory

L3 — one sheet feeds policy, Apple labels, Play data safety.

blocker L3

6 · Camera lane activation

E20 in production play — MoveNet verifier live for pilot crews.

element E20

Where the build stands

The /system dissemination page showing element families and progress
design-system.png · the live /system page — the same status data, publicly rendered with live components

Phase 0 (due diligence) complete. Prototype feature-complete and live — and since 2 Sep 2026, re-spec'd. Ben's master Source of Truth arrived and was reconciled (docs/27): Engine V4 shipped (daily-200 first-to-target battles, weekly 1:1 seasons, all four stakes, corrected power-up canon — 110 tests), the v4 app walks the whole product (120 + 59 e2e checks, zero console errors), and the critical states exist as real states. The stack underneath is unchanged: a tested game engine, two chat bots, a phone-first app, an ops console, an AI layer, push-to-deploy hosting. Remaining for MVP proper: the SOT bot port (in flight), 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.

← backDesign System