Files
Project-M/Docs/Vault/07_Sessions/2026/2026-07-04_Demo_Polish_Pass.md
T
2026-07-04 16:57:40 -07:00

3.9 KiB
Raw Blame History

title, date, tags, permalink
title date tags permalink
Demo-Readiness Polish Pass — redesign closeout review + full four-area polish 2026-07-04
session
polish
demo
review
netcode
hud
audio
onboarding
dots-dev
gamevault/07-sessions/2026/2026-07-04-demo-polish-pass

Demo-Readiness Polish Pass (/dots-dev, ultracode)

Operator brief: "overall complete polish pass, ready for a game demo" → intake locked: hands-off public demo, standalone Windows co-op build, finish-the-redesign baseline, all four polish areas. Full decisions + finding table: DR-044_Expedition_Redesign_Shipped_Demo_Polish.

How it went

  1. Ground fan-out (wf_d3f1890a-8ca, 3 read-only agents) — headline: the 07-02 log said "steps 111" but Run Re-Do already contained 12a/12b/13/14. Only the post-impl review + doc bookend were missing.
  2. Baseline verify — 452/452 EditMode + clean netcode Play boot (born-correct Staging on both worlds).
  3. Post-impl adversarial review (wf_38ef58c2-8bd, 3 lenses → per-finding critics, 15 agents, 0 failures) — 7 confirmed / 3 refuted. All 7 fixed same-session + pinned (RunRosterRegressionTests, TerminalCampaignRollTests); the two contradictory critic verdicts on the respawn stray line were adjudicated by reading the code (artifact confirmed, deleted).
  4. Stability slice — ConnectionWatchdog/SessionEnd/menu-reason plumbing; mode-aware outcome banner; terminal-save roll-forward; save-before-restart.
  5. UI slice — READY panel, drawn route map (Painter2D DAG + client path trace), onboarding re-author (the dead at-base Mine step was a first-run soft-lock), How-to-Play rewrite, DOWNED countdown.
  6. Feel/audio slice — 4-layer phase-locked procedural music, Fabricator can-die parity, core-hit alarm, landing grace, slash-arc reach fold (local+remote), Warrior cone VFX, boss bar+roar, rarity borders, depth dots, outcome flourish, shop pips, core-crystal tint system.
  7. Sweep — build scenes → MainMenu+Game only; com.unity.ai.assistant removed; corrupt whitespace-only Simulation/Meta.meta (committed in Run Re-Do; surfaced on the package re-resolve) deleted → regenerated.

Validation

456/456 EditMode · repeated Play smokes (launch conscription sampled tick-by-tick; wipe-abort self-validated; zero exceptions) · L3 screenshots: staging READY panel + meta shop, route map with lit path + depth dots, rarity boon modal. The route-map/boon states were forced via the disable-the-driver idiom (ResolveSystemStateRef(handle).Enabled = false on RunDirectorSystem, then write RunInfo server-side).

Gotchas worth remembering

  • A session log can lag the commit — ground the working tree, not the log's "Remaining" section.
  • Two critics can contradict each other (one refuted, one confirmed the same stray line) — adjudicate at the source before acting.
  • A committed .meta can be whitespace-corrupt and stay latent until a package re-resolve forces a full reimport ("GUID cannot be extracted"); Unity's own advice applies — delete it, let it regenerate (folder GUIDs are unreferenced; script GUIDs live in their own metas).
  • CombatFeedbackSystem already owns the AbilityCooldown fire-edge latch (muzzle flash) — a second consumer needs its OWN latch field or it never sees the edge (CS0102 caught the collision).
  • The idle-player death→respawn→wipe-abort arc is the system working, not a bug — but it exposed the missing landing grace.

Operator-side next steps

Standalone build (ProjectM/Build/Windows Player) + 2-instance smoke: -mhost / -mjoin 127.0.0.1, then kill the host and expect [ConnectionWatchdog] CONNECTION LOST… in the joiner log (that line also proves the join connected); a dead-IP join should log the 12 s timeout. Onboarding fun-gate via Settings → Force Each Launch. Explicitly deferred to operator art curation: HudTheme structure icons, projectile/pickup placeholder meshes.