From ffd98daf08ff1ae2b4b34a80cd2c6d9091374720 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Mon, 2 Nov 2026 09:16:33 +0100 Subject: [PATCH] Plan the pre-RC patch levels Add detailed 0.9.1 UI/dialog/button polish, 0.9.2 NPC model refinement, 0.9.3 texture/material refinement and 0.9.4 integration/performance/judge workstreams before the 0.9.5 release candidate. Update the remaining-gap table, baseline to v0.9.0 and README development status. --- TODO.md | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 176 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index 185b34d..5157424 100644 --- a/TODO.md +++ b/TODO.md @@ -33,16 +33,186 @@ release-candidate foundation, not yet a 1.0 product. | Area | Current baseline | Remaining gap | Risk | Milestone | | --- | --- | --- | --- | --- | | Content and balance | 3 venues with validated 12+ event matrices, recovery events and contextual dialogue | External playtest evidence, balance/fairness pass, event-weight tuning and final content lock | Repetition or unfair outcomes survive into 1.0 | 0.9.5 | -| Animation/presentation | Procedural pose layers, portrait captures, reduced hem clipping | Final animation/readability acceptance and no remaining P0/P1 clipping in the release candidate | Close-up jank reduces perceived quality | 0.9.5 | -| Audio/accessibility | Procedural ambience/SFX, volume controls, captions/reduce-motion settings, searchable Help | Full accessibility/localization acceptance review, audio caption coverage and P0/P1 fixes | Public 1.0 cannot claim accessible play | 0.9.5 | -| Localization | English JSON table, validation and input-generated Help | Pseudo-locale/layout audit and translator workflow sign-off | Text expansion/clipping at release | 0.9.5 | -| Performance/platform | 24-NPC headless budget (6.9 ms), Compatibility/Web/HQ paths | Target hardware matrix, Web/HQ manual profiling, frame-time/memory evidence | Platform-specific drops or startup failures | 0.9.5 | +| Dialog/UI | Complete screens and panel art, but copy/button behavior has not had a dedicated audit | Terminology, button states, long-string layout and full screen coverage need a focused pass | Inconsistent UI undermines first-hour clarity | 0.9.1 | +| Animation/presentation | Procedural pose layers, portrait captures, reduced hem clipping | Final model/pose/facial readability and gear-fit acceptance before visual QA | Close-up jank reduces perceived quality | 0.9.2 | +| Audio/accessibility | Procedural ambience/SFX, volume controls, captions/reduce-motion settings, searchable Help | Full accessibility/localization acceptance review, audio caption coverage and P0/P1 fixes | Public 1.0 cannot claim accessible play | 0.9.1 / 0.9.5 | +| Localization | English JSON table, validation and input-generated Help | Pseudo-locale/layout audit and translator workflow sign-off | Text expansion/clipping at release | 0.9.1 / 0.9.5 | +| Performance/platform | 24-NPC headless budget (6.9 ms), Compatibility/Web/HQ paths | Target hardware matrix, Web/HQ manual profiling, frame-time/memory evidence | Platform-specific drops or startup failures | 0.9.4 / 0.9.5 | | Save lifecycle | Settings/campaign/history/checkpoint files, atomic writes | Migration fixtures from 0.8/0.9, fresh-install/upgrade verification, rollback instructions | Player progress loss on upgrade | 0.9.5 | -| QA/CI | Headless suite, smokes, screenshot compare, optional judge | Full release-candidate smoke matrix, final gallery/judge, CI/release dry run and checksums | Regressions escape the release gate | 0.9.5 | +| QA/CI | Headless suite, smokes, screenshot compare, optional judge | Full visual judge gate, release-candidate smoke matrix, final gallery and release dry run | Regressions escape the release gate | 0.9.4 / 0.9.5 | | Release/legal | Unsigned desktop/macOS builds, Web/HQ packages | Signing/notarization decision, checksums, AI-asset provenance, credits, privacy/body-camera and rating review | Public release blocked by trust/policy | 0.9.5 | -| Documentation | Architecture/ADR/status/roadmap ownership established | Final README/changelog/status/TODO/smoke-checklist sign-off and known-limitations page | Docs drift at launch | 0.9.5 | +| Documentation | Architecture/ADR/status/roadmap ownership established | Final README/changelog/status/TODO/smoke-checklist sign-off and known-limitations page | Docs drift at launch | 0.9.4 / 0.9.5 | | Post-launch | Stable 0.9 feature set | Live replay, more venues, VO/music, image-to-mesh props and seasonal content | Scope creep before launch | Post-1.0 | +## Patch 0.9.1 — Dialog, button and UI polish + +Goal: make every player-facing screen read consistently and pass the Python +screen-design judge before any model/texture changes. No gameplay rules change. + +### Screen and terminology inventory + +- [ ] Inventory every screen/panel: start menu, venue menu, tutorial, HUD, pause, + settings, Help, inspection, wand, radio/emergency, wheel, shift review, + timeline and campaign/continue screens. +- [ ] Record the canonical terms for admit/deny, allow/refuse, warning/blocking, + assistance/emergency, body camera, shift/review and campaign; remove synonyms + that mean the same action. +- [ ] Audit all button labels for verb-first wording, capitalization, ordering, + destructive-action confirmation and consistent confirm/cancel placement. +- [ ] List every hardcoded player-facing string and route it through + `content/strings.en.json`; add placeholder validation for new keys. +- [ ] Review NPC/door-staff/radio/tutorial/help/review/campaign dialogue for + repetition, ambiguity, tone and localization length. + +### Button and panel behavior + +- [ ] Audit normal/hover/pressed/focus/disabled states on every button, including + tutorial skip, venue continue, settings apply/cancel/reset, judge/review, + radio send/emergency hold and Help close. +- [ ] Verify keyboard-only and gamepad-only navigation: focus order, wrapping, + default focus, confirm/cancel behavior and no focus traps. +- [ ] Verify every modal closes with Esc/right-click where documented, recaptures + the mouse, and does not leave the guard frozen or the menu visible. +- [ ] Test buttons at minimum/maximum HUD font scale and with 1.5–2× longer + strings; fix clipping, overflow and overlapping layouts. +- [ ] Test destructive/irreversible actions (campaign reset, tutorial replay, + emergency send) require the intended confirmation/hold and cannot double-fire. +- [ ] Verify radio normal-send vs emergency hold, inspection/wand allow/deny, + review continue/retry/menu and Help search/filter behavior end to end. + +### Visual and judge verification + +- [ ] Update the affected UI art/reference mapping where copy or button order + changes; keep the no-overwrite image convention. +- [ ] Capture a deterministic screenshot for every dialog/button state that has a + design reference; add missing capture stages or an explicit coverage gap. +- [ ] Run `tools/check_screenshots.sh` and `python3 tools/screen_designs.py compare`; + fix all `bad` results. +- [ ] Run `python3 tools/screen_designs.py judge` with `--model auto` (or a pinned + model); clear every `diff` and record accepted `review` verdicts. +- [ ] Record the judge model, fallback order, spend and evidence in + `docs/screens/realism/` or the screen-design report. +- [ ] Add a short UI copy/button checklist to `docs/smoke-checklist.md`. +- [ ] Exit: all screens have consistent terminology and button behavior, long + strings/scale pass, and the Python compare/judge gate has no unexplained + diff. + +## Patch 0.9.2 — NPC model refinement + +Goal: make the eight character variants and their gear hold up in portraits and +normal play without changing the `npc_base`/`Rig/Head` contract. + +### Model and rig audit + +- [ ] Render all eight variants from front, profile, back and portrait angles; + compare faces, hair, ears, hands, shoes, proportions and gear fit. +- [ ] Audit head/face readability (brow, eyes, lips, nose, hairline) at portrait + distance; fix the highest-impact silhouette/face issues. +- [ ] Audit gear fit and clipping: caps/beanie/hood/helmet/sunglasses, shoulder bag, + backpack, SCBA tank, lanyard, hand items and the new coat/dress stride. +- [ ] Audit coat/dress/skirt hems during walk, blocking, sitting and turning; fix + remaining leg/hem intersections with weights, geometry or stride limits. +- [ ] Re-check the frozen contract: mesh `npc_base`, bone names, five tint slots, + front direction, attach points, triangle/vertex budgets and grounding. +- [ ] Rebuild affected GLBs, bake AO, run `godot --headless --path . --import`, and + run `blender_assets.py audit` plus fit/portrait checks. + +### Pose and animation polish + +- [ ] Review idle, walk, warning, blocking, recognition, refusal, phone, clipboard, + photo, film, sit and responder poses for pops or floating props. +- [ ] Add/adjust short transitions for negotiation/reaction poses without breaking + the seeded pose helpers or head-turn behavior. +- [ ] Verify LOD tiers and the impostor at 16/24-NPC distances; re-run the budget + smoke and record any triangle/draw-call changes. +- [ ] Refresh the Blender review sheets and character portraits; keep per-asset + previews local if gitignored. + +### Verification + +- [ ] Add/update headless tests for any new pose/model contract behavior. +- [ ] Capture the portrait and character gallery; compare against the design + references and run the Python judge. +- [ ] Update `docs/blender-assets.md`, architecture/status and `MEMORY.md` with the + revised budgets, limitations and rebuild commands. +- [ ] Exit: portrait/readability and gear fit pass, no obvious P0/P1 clipping remains, + and the 24-NPC budget/full test suite are green. + +## Patch 0.9.3 — Texture and material refinement + +Goal: improve close-range surface and character texture quality while keeping GL +Compatibility/Web parity, deterministic assets and offline CI. + +### Environment textures and materials + +- [ ] Audit the v2 picks (brick, sidewalk pavers, dry/wet asphalt, awning canvas, + day/dusk/night skylines) at close range and in the entrance/street shots for + seams, tiling, scale, contrast and normal-map strength. +- [ ] Refine brick mortar/wear, paver joints/stains, asphalt aggregate/wet response + and awning weave using the existing image/asset tooling; never overwrite a + pick, use `-vN` candidates and promote validated results. +- [ ] Check UV scales and material roughness/metallic profiles; keep day/night + phase behavior and the wet-street transition intact. +- [ ] Review distant skyline haze and foliage/planter surfaces against the concept + references; fix obvious flatness without regressing readability. + +### Character and prop textures + +- [ ] Audit NPC skin, cloth, pants, hair and gear albedo/normal/AO maps in portraits; + refine fabric weave, skin variation and fixed detail materials. +- [ ] Re-bake AO where geometry changes; verify the 256² maps and material wiring. +- [ ] Audit library props and UI/card/icon textures at their actual screen sizes; + remove blurry/oversized or unused textures where safe. +- [ ] Run texture audits, import, and the full asset test suite; record texture memory + and triangle/draw-call impact. + +### Visual verification + +- [ ] Run `python3 tools/scene_concepts.py realism` for the affected stages with the + judge enabled; record metric gaps and model/spend. +- [ ] Re-run `tools/check_screenshots.sh` and the screen-design judge; clear all + `diff` verdicts. +- [ ] Capture before/after close-ups for brick, pavement, asphalt, character cloth + and skyline; document accepted trade-offs. +- [ ] Update asset docs and the changelog/status with the promoted texture versions. + +## Patch 0.9.4 — Integration, performance and judge gate + +Goal: integrate the UI/model/texture patches, prove the combined build on the +target paths and leave a clean release-candidate handoff. + +### Integration and asset rebuild + +- [ ] Rebuild all changed Blender/GLB/AO assets, re-import, and verify manifest/fit/ + audit coverage. +- [ ] Run the complete headless suite, Python tooling and smoke matrix; fix any + regression from the three polish patches. +- [ ] Re-run the 24-NPC budget smoke and record frame time, mesh count and any + texture-memory change; check Web and Desktop HQ if available. +- [ ] Verify save/campaign/tutorial behavior is unchanged by the visual/UI patches. + +### Visual gallery and judge gate + +- [ ] Recapture the full gallery, portraits, venue/realsim stages and Desktop HQ A/B + as needed; no stale screenshots in the release set. +- [ ] Run `tools/check_screenshots.sh`, `screen_designs.py compare` and + `screen_designs.py judge` on the final captures. +- [ ] Run the realism judge for the affected concepts with a pinned model; record + model, attempt count, spend and verdicts. +- [ ] Review all `review` verdicts manually; convert unexplained layout/composition + mismatches into fixes or explicit known limitations. +- [ ] Ensure generated realism folders remain gitignored/local-only and only the + durable report decisions/docs are committed. + +### Release-candidate handoff + +- [ ] Update README, architecture, development status, changelog and TODO with the + final patch-level results and any remaining gaps. +- [ ] Tag/version or otherwise freeze `0.9.4` as the integration checkpoint before + the `0.9.5` release candidate. +- [ ] Exit: combined build is functionally green, visually reviewed, performance + measured and ready for the 0.9.5 content-lock/playtest phase. + ## Milestone 0.9.5 — Release candidate Goal: freeze the feature set, prove it with external players, clear release/legal blockers and