LootForge Snapshot 2026-08-02 main @ 14cef7f Generated from docs/07

Where the build stands

Phase 0 shipped a playable game and then failed its own fun gate before a single tester was recruited. Phase 0R is the rebuild. Everything past it stays locked until the gate is re-run and passes.

You are here Phase 0R Redesign to an idle RPG — make decisions matter
Next task E0R.1 Structural prestige fix + invariants first
Phase 0R done 4 / 18 ≈ 48 h left, ~5 weeks at 10 h/week
Blocking gate G0 Re-runs at the end of Phase 0R
Phase 0

Off-chain prototype — prove the loop is fun

target: months 0–3 Built
20 / 20 tasks
5 epics
  • E0.1 Monorepo scaffold 2/2 · ~6 h
  • E0.2 Engine core 4/4 · ~14 h
  • E0.3 Web app — playable game 10/10 · ~20 h
  • E0.4 Offline progress + juice 2/2 · ~8 h
  • E0.5 Fun check (Gate G0) 2/2 · ~4 h + calendar time
Gate G0

10 testers; median session ≥ 20 min; ≥6/10 say they'd return tomorrow

Failed early

Not failed on the numbers — failed before recruiting. The prestige curve was a runaway: 1.02^√(gold/1e6) multiplying production that feeds gold back in. Diagnosed in doc 08 after a few hours of real play. Running ten strangers at a build already known to break would have burned ten first impressions.

Phase 0R

Redesign to an idle RPG — make decisions matter

target: 6–8 part-time weeks Active
4 / 18 tasks
  • E0R.0 Decisions on record 3/3 · ~1 h, Son only
  • E0R.1 Structural prestige fix + invariants first Next 0/3 · ~10 h
    • balance.ts: delete PRESTIGE, add REFORGE + EMBER_TREE (doc 10 §6–7); embersForFloor() replaces embersFor(); sim/rates.ts swaps emberMultiplier() for treeMult(state, branch) (production branch only wired for now).
    • State v2 + migrate.ts step: new fields with defaults, ember cap, legacy item power (doc 10 §8); SAVE_VERSION = 2; migration tested against a captured copy of Son's real broken save.
    • divergence.sim.test.ts per doc 11, including the old-design guard test and the mutation-duty header.
    • Done means full suite green; guard test demonstrates old formula violates Invariant A before H=1; Son's save migrates to 100 embers with items/shards/quality intact; pacing.sim.test.ts untouched and green.
  • E0R.2 Tower + hero in the engine 0/3 · ~14 h
  • E0R.3 Shard-gated crafting with failure 0/2 · ~8 h
  • E0R.4 Loot triage & selling 0/3 · ~10 h
  • E0R.5 Balance pass + G0 re-run 0/2 · ~6 h + calendar
  • Standing tasks added 1/2

Scope contract is binding. A task that needs a second hero, a second combat stat, parallel dungeons, skills, or a combat simulation means stop and fall back to option A — not “just this once”.

Gate G0 · re-run

10 testers; median session ≥ 20 min; ≥6/10 say they'd return tomorrow

Awaiting build

Judged specifically against doc 08's through-line: did a rare drop or a risky craft feel like a fortune, and is selling rare items by hand a decision or a chore. Miss it and Phase 0R iterates — Phase 1 does not open.

Phase 1

Authoritative server + closed alpha — prove retention

months 3–7 Locked
0 / 9 tasks
4 epics
  • E1.1 Server foundation 0/2 · ~10 h
  • E1.2 Actions pipeline 0/3 · ~14 h
  • E1.3 Client goes online 0/2 · ~10 h
  • E1.4 Alpha ops 0/2 · ~8 h
Gate G1

D1 ≥ 35%, D7 ≥ 15%, D30 ≥ 5% (PostHog cohorts)

Locked

The one that unlocks blockchain work. Until it passes, packages/contracts stays an empty placeholder and doc 05 stays sealed.

Phase 2

Passport + minting

months 7–11, gated by G1 Locked
4 epics
  • E2.1 Wallet link ~8 h
    • Passport OIDC (webfull), signed-nonce address proof, passport_address on player, 16+ age gate, region capture. AC: link/unlink-request flows tested; iOS/android channels unaffected.
  • E2.2 Collection + metadata ~8 h
    • Hub testnet collection (ImmutableERC721 preset, 5% royalty), GET /meta/:itemId.json|.png with seed-renderer (layered SVG), immutability after mint. AC: testnet token renders on Immutable explorer.
  • E2.3 Mint pipeline ~12 h
    • /v1/mint/:itemId validations per doc 05, mint_requests, Minting API integration, signature-verified webhook, lock lifecycle, mint UI (webfull/desktop flags). AC: doc-05 security checklist fully ticked; 50-mint testnet rehearsal incl.…
  • E2.4 Gate G2 review
    • conversion + crash-free metrics written up; go/no-go to Phase 3.
Gate G2

≥5% of D7-retained players link Passport; mint flow crash-free ≥ 99%

Locked

If missed: Improve onboarding before marketplace

Phase 3

Marketplace

months 11–15 Locked

E3.1 Orderbook integration: list (maker fee 200 bp) / cancel / fulfill via @imtbl/orderbook + Passport; item lock while listed. E3.2 Indexer: poll listings/trades → new tables → market UI (browse by rarity/affix, activity feed) + owner reconciliation ("away" items). E3.3 USD-approx display (CoinGecko cache),…

Gate G3

Organic weekly trades > 0 sustained 4 weeks; no exploit incidents

Locked

If missed: Pause fee tuning, investigate

Phase 4

Mobile & desktop

months 15–20 Locked

E4.1 Capacitor Android (blockchain declaration, link-out flag) → closed track → production. E4.2 Capacitor iOS (game-only build; external-link flag only if US rules verified at submission time) → TestFlight → review. Log outcomes in docs/store-review-log.md; follow doc 06 rejection ladder. E4.3 Tauri Win/Mac/Linux +…

Phase 5

Token decision point

month 20+ Locked

No build tasks. Produce docs/token-decision.md against Gate G5 criteria. Default outcome: remain token-free.

Gate G5

PMF + legal counsel + liquidity plan, all three

Locked

If missed: Default: never launch a token

Standing

Runs across every phase

2 / 5 tasks
Detail
  • scripts/check-copy.ts banned-language CI gate (doc 06 rule 5) — build in Phase 0, keep updated. done
  • Extend check-copy to the built client bundle and to store-listing metadata (Play Console / App Store copy), which doc 06 rule 5 names but the Phase 0 gate does not reach — it scans source only, and CI runs it before pnpm build. **Due… todo
  • DECIDED 2026-07-31 — the run opens with manual work, not a starting grant. Two actions (Strike, and Sell with a resource: "ore" | "ingots" field) land in E0.3; RUN_START_GOLD drops from 400 to 0 when they do. This line… done
  • Weekly devlog snippet drafted from merged PRs (Son posts manually). todo
  • Balance changes always via balance: commits touching balance.ts + doc 02 together. todo