Smoke test required

...

← All documentation

Documentation

Polish Roadmap

**Status:** active · last reviewed 2026-05-04

source: docs/decisions/POLISH_ROADMAP_2026-05-03.md

Session-end update 2026-05-04 03:30 UTC — Marathon continues: - Tier 1: 4/4 shipped ✅ — LT1 ✅, MOB ✅, ONB ✅, smoke gate refresh ✅ (docs/operations/SOFT_LAUNCH_GATE_2026-05-04.md) - Tier 2: 5/7 shipped ✅ — ASSET ✅, PERF ✅, LT2 ✅ (authoring UI), LT3 ✅ (agent vocabulary — full vibe-coding loop now live), A11Y refresh ✅. Remaining: Aseprite manual recolor (Kevin DIY), sound design (Kevin curation). - Tier 3: 1/5 in flight — DISCOVER (showcase grid + stumble) running. - Settings polish (SET) running — Tier 1+ adjacent (brand identity + link list + integrations) - Aggregate uplift: craft 7.7 → ~8.8, fit 6.9 → ~8.5. - Endenza is shipping-ready. Tier 1 + foundational + tests + a11y all GREEN per SOFT_LAUNCH_GATE_2026-05-04.md. Remaining gates are Kevin-manual infra (Cloudflare, Stripe, uptime) + content (screenshot, social).


Update 2026-05-03 16:30 PDT: RN-α landed. Rebrand is end-to-end: Mac app (/Applications/Endenza.app), codebase user-facing strings, PWA manifest, marketing copy, memory files (endenza_naming.md), localStorage migration shim with ENSEMBLE_*ENDENZA_* for 20+ keys. New tests: test_brand_strings.py + test_localstorage_migration.py. Out of scope (deferred): plugin dir rename, /tmp/ensemble-dashboard/ build path, GitHub repo rename. The roadmap below is now the authoritative next-steps doc.

Date: 2026-05-03 evening (this Maestro session, post Slot A/B/C/TC-α/stress-α/β/γ/RN-α merges) Bar: Apple quality across two axes — craft (engineering) × fit (does it match the user’s mental model and the v1.0 launch posture) Method: rate every visible surface, sequence improvements by visible-impact-per-effort, propose the next 4-5 warp directives

Kevin’s ask: “let’s do a quick polish ranking and plan for how we can keep improving the platform once this final warp lands”


1. Surface-by-surface polish ranking

Each surface rated on craft × fit, scale 1-10. ✅ = ready as-is. 🟡 = needs targeted polish. 🔴 = major gap.

Visitor-facing (the walkable canvas pillar)

Surface Craft Fit Status Top gap
Landing (/) 7 6 🟡 “rooms not lists” headline doesn’t yet show a room — hero is static
Canvas walk (/canvas/<id>.html) 7 5 🟡 No moving things — feels like still life. Living-things plan addresses this.
Showcase grid (/ensemble.html) 8 7 🟡 Empty in fixture mode; no real published canvases yet to showcase
Pair (/pair.html) 8 7 Working; could use a clearer “connected” celebration moment
Character Creator 9 8 Just shipped 64×64 preview + walk cycle + body layer (Slot B); needs real Mana Seed body art (Aseprite pipeline, manual)
Mobile responsive 6 5 🟡 Haven’t dogfooded on mobile this session; assume gaps in canvas walk + Studio drag

Maker-facing (the agent-controller pillar)

Surface Craft Fit Status Top gap
Terminal (/terminal.html) 9 9 Just shipped — heartbeat + diagnostic errors + hydration + mode toggles + STATUS layout + resize/reorder. Strong.
Dashboard (/dashboard.html) 8 7 🟡 Warp widget reconciliation just landed; widget catalog could be richer; “edit dashboard” mode is functional but not polished
Studio (/studio.html) 7 6 🟡 Component palette works; no “living things” tab; agent chat lacks vocabulary for behaviors
Settings (/settings.html) 7 7 🟡 Theme picker works; missing brand-management / link-management polish
Pair-this-browser flow 8 7 Auth cascade fixed earlier this session; works

Foundational

Surface Craft Fit Status Top gap
Auth + BYOK 9 8 Just unified on DASHBOARD_TOKEN; /byok/link confirmed working
Persistence (sprite/canvas/chat stores) 9 8 Atomic writes + flock + 137 tests; CC dual-shape just landed
SSE streaming 9 8 Backpressure + max-clients cap + zombie cleanup (warp γ from earlier)
Sprite engine 8 7 🟡 Pack-aware mode works; no animation for non-player sprites yet (living-things runtime needed)
Bundle + dashboard-generate 8 7 🟡 Works; ~6.5s wall-clock could be faster; perf-budget gating just landed

Brand + positioning

Surface Craft Fit Status Top gap
Wordmark + icon 9 8 ✅/🟡 Single logo across themes shipped; Mac icons regen’d; codebase rebrand in flight
MANIFESTO + marketing copy 7 6 🟡 Will be partly rewritten by RN-α; tone could be sharper post-rebrand
Press kit 7 7 Exists per memory; needs post-rebrand pass
Social proof / waitlist 5 4 🔴 No public-facing signup → no list to flip when launching

Technical health

Surface Craft Fit Status Top gap
Test suite 8 7 0 errors after stress-β; 3 pre-existing failures left (test-pollution patterns)
CI 6 6 🟡 Local-only; no GitHub Actions yet
Lint / formatter 7 6 🟡 shellcheck + ruff configured but ruff not installed locally; pre-commit hooks light
Smoke gate (per memory) 7 7 Phase smoke checkpoints exist per memory; visitor-flow tests just stabilised

Aggregate

  • Craft 7.7 / 10 — most surfaces solid, mobile + asset depth pull the average down
  • Fit 6.9 / 10 — vision is clear, but several “where’s the wow?” gaps (living things, mobile, social proof)

The session moved this from ~6.5/6.0 to ~7.7/6.9 — meaningful uplift. Next session should target 8.5/8.0.


2. The four-tier roadmap

Tier 1 — Ship-blocking polish (before public flip)

These are the gaps where a first-time visitor will say “this doesn’t feel done.” Do these in the next session(s).

  1. Living-things Phase 1 — Pets + ambient NPCs in the canvas. One wandering chick changes the whole “is this thing alive?” vibe. Plan: docs/decisions/LIVING_THINGS_PLAN_2026-05-03.md. 4 ACs, 1 Sonnet slot.

  2. Mobile responsive sweep — Walk the canvas + Studio drag + Terminal compose ALL on iPhone Safari. Identify breakpoints that look broken. ~3-5 ACs depending on findings.

  3. Visitor onboarding flow polish — Signup → first canvas → showcase publish in <3 minutes. The path exists; the experience has rough edges. ~3 ACs.

  4. Soft-launch smoke gate refresh — The 4 mandatory user-eyes-on checkpoints per memory. Verify each + document the current pass-state.

Tier 2 — High-leverage post-launch (first 2-4 weeks after flip)

These multiply the value of Tier 1 but aren’t strictly blocking.

  1. Asset audit — Crawl Kevin’s purchased LimeZu + Mana Seed packs (likely in ~/Downloads or ~/Library). Bundle the worthy subset. Replaces the procedural body-layer placeholder with real art. ~2-3 ACs of audit + 1 of bundling.

  2. Aseprite recolor pipeline — Manual ~3-6h Kevin DIY (per SESSION_HANDOFF.md §🟡). Real Mana Seed body sprites in 6 skin tones.

  3. Living-things Phase 2 (authoring) — Component palette gains “Living things” tab + behavior panel + path waypoint editor. ~4 ACs.

  4. Living-things Phase 3 (agent vocabulary) — Studio agent learns to suggest pets/NPCs in chat. ~2-3 ACs.

  5. Sound design pass — Replace 16 Freesound placeholder files with real audio. Curate, license, integrate. Manual + ~2 ACs of integration code.

  6. A11y deep audit refresh — Last audit was 2026-05-02. With all the new resize/reorder/collapse features, re-audit. ~2-3 ACs.

  7. Performance budget tightening — Now that perf-budget tests pass cleanly, add 2-3 new budgets (canvas walk frame rate, character-creator first-paint, terminal hydrate latency). ~2 ACs.

Tier 3 — Differentiator features (months 1-3 post-launch)

The “Endenza is unique because…” moves.

  1. Living-things Phase 5 (L4 reactive + L5 dialogue) — NPCs turn to face the player, click-to-show-line. The “place feels alive” capstone before live AI.

  2. Multi-canvas overworld scaffolding — v1.5 territory. The grid where you walk between creator canvases. Major work — separate planning doc needed.

  3. Live presence — See other visitors as walking sprites in the same canvas. Pubsub via SSE; client-side smoothing.

  4. Discovery / stumble — A “show me a random canvas” button. Crucial for the network effect to start before there’s a critical mass of search.

  5. Pricing + checkout polish — Pro tier conversion flow. Right now exists per memory but needs end-to-end UX polish before driving traffic at it.

Tier 4 — Stretch / strategic (post v1.5)

  1. Live AI creator-bots (Living-things L6) — NPCs backed by Claude prompts. The “Roblox for Claude” framing crystallises here. v2.

  2. Theme store — Per VISION_REVISION_2026-04-30 v1.5 hint. User-installable themes beyond the 21 built-in.

  3. Marketplace — Per the original “playground combining a personal Studio, a navigable multiplayer pixel world, setup sharing, theme store, and creator marketplace” pitch.

  4. Mobile native app — PWA is fine for v1.0; native app store presence matters for distribution at scale.


3. Craft-debt ledger (small but worth tracking)

Not roadmap-tier but worth a sweep next time we’re idle:

  • plugins/endenza/ directory renameplugins/endenza/ with import path updates (deferred from RN-α)
  • ENSEMBLE_* localStorage one-cycle deprecation cleanup — once the migration shim has been live a few weeks, delete the old keys
  • VISION_REVISION_*.md historical banners — each historical doc gets a “decided 2026-XX-XX, brand was Ensemble at the time” header
  • Test pollution last 3test_canvas_detail_endpoint_serves_public_canvas, test_studio_html_shrunk_below_threshold, test_no_api_key_*. Per stress-α report.
  • ruff installpip3 install --user ruff so the lint check in warp_post_merge_verify.sh actually runs
  • Stale claude/warp-* branches — none right now (we cleaned up earlier today). Good.
  • Aseprite recolor pipeline manual — Kevin DIY 3-6h for real Mana Seed body sprites
  • Freesound audio — 16 placeholder files
  • Persistent CF tunnel — manual, Kevin owns the cloudflared rotation pain
  • Repo renameKiwiMaddog2020/claude-ensemble…/endenza (Kevin owns the GitHub remote)

4. Concrete next-warp candidates (ready to fire after RN-α lands)

Each is a directive I can write + fire as soon as you give the go.

  • Tier: Sonnet standard
  • Wall-clock: ~45-60 min
  • ACs: 4 (data model, runtime simulator, idle/wander/patrol behaviors, deterministic seed + reduced-motion + IntersectionObserver pause)
  • Files: bin/dashgen/canvas_store.py, NEW bin/dashgen/widgets/living_things_runtime.py, hook in studio_widgets_runtime.js
  • Dependency: RN-α merged (so file paths are post-rebrand)

Slot MOB — Mobile responsive sweep

  • Tier: Sonnet standard
  • Wall-clock: ~60-75 min (heavier visual work)
  • ACs: 5 (audit each surface on iPhone breakpoint, fix Studio drag on touch, fix Terminal compose on landscape, fix canvas walk perf on mobile, regression test against existing breakpoints)
  • Files: all bin/dashgen/styles/responsive_*.py + targeted patches across pages

Slot ONB — Onboarding flow polish

  • Tier: Sonnet standard
  • Wall-clock: ~45 min
  • ACs: 3 (signup CTA polish, first-canvas hand-holding, showcase-publish celebration)
  • Files: bin/dashgen/pages/ensemble_body.py, studio_body.py, settings flow

Slot ASSET — Pack audit + bundle expansion

  • Tier: Sonnet standard
  • Wall-clock: ~75 min (file-system crawl + judgment calls + manifest updates)
  • ACs: 3 (audit purchased packs in ~/Downloads/~/Library, propose subset to bundle with rationale, bundle + update credits)
  • Files: bin/dashgen/static/packs/, /credits.html, manifests

Slot PERF — Performance budget tightening

  • Tier: Sonnet standard
  • Wall-clock: ~30 min
  • ACs: 2 (define 3 new budgets — canvas-walk fps, CC first-paint, terminal hydrate latency; add tests)
  • Files: tests/test_perf_budget.py, bin/perf_audit.py

Once RN-α lands:

  1. Single fire: Slot LT1 (Living-things Phase 1) — biggest visible wow per minute of work. The canvas comes alive. ~45 min.
  2. Parallel pair: Slot MOB + Slot ASSET — both ~60-75 min, no file overlap (mobile = CSS / responsive; asset = packs/ + credits). Memory permitting (sudo purge between fires if tight).
  3. Single fire: Slot ONB — best done after LT1 lands so first-canvas onboarding can include the pet placement.
  4. Single fire: Slot PERF — lowest priority of these five; do it when you want.

Total: ~3-4 hours of warp wall-clock + Kevin’s review + merges. Could finish Tier 1 of the roadmap in one focused session.


6. Open decisions that affect the plan

  • Repo rename — Kevin owns. When are you flipping claude-ensembleendenza on GitHub?
  • Public flip date — what’s your gate? Living-things Phase 1 + mobile + onboarding shipped seems like the natural cut.
  • Aseprite manual time — when do you want to block out the 3-6h to do real Mana Seed body sprites?
  • Sound design — are you owning the curation of Freesound replacements, or do you want me to propose a search list + you approve?
  • Living-things behavior tier — already locked at L0+L1+L2+L3 for v1.0 per LIVING_THINGS_PLAN_2026-05-03.md. No re-decision needed.

End of roadmap. Next directive ready when RN-α lands.