Skip to content

Commit 8173742

Browse files
okohlbacherclaude
andcommitted
docs(999.58): mark complete after final UAT — scene.C dialog-free (VIEW-CLEAN-03)
UAT 2026-05-22: materials/lights/stage render via Inspector; scene.C no longer constructs MaterialSettings/LightSettings/StageSettings; stereo defers cleanly. 999.53 (legacy dialog deletion) now fully unblocked. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 6f544c6 commit 8173742

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

.planning/REQUIREMENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ Added 2026-05-21 when the v1.7.x patch-cycle runway (Phases 999.51–999.56) was
236236
- [x] **VIEW-INSP-02** _(✓ UAT PASS 2026-05-21 — labels appear; surface-normal artifact traced to a pre-existing renderLabel_ blend-state leak, fixed in 8e14034b9d)_ (Phase 999.51 · v1.7.x-02): same shape for `LabelController::apply()` + a `LabelSection` in the Inspector — _IMPLEMENTATION-COMPLETE / AWAITING GUI HUMAN-VERIFY (Plan 999.51-02 commits 3d2102a5b2/8ad9fc6076/590d7d6b9e; VIEW build green BALL_UI_V2=ON; STUB removed; apply() ports LabelDialog::accept → MODEL_LABEL Representation + LabelModel + MainControl insert/update; legacy LabelDialog untouched). Checkbox flips to [x] after the blocking running-BALLView human-verify confirms the section renders + a label visibly appears._
237237
- [x] **VIEW-INSP-03** _(✓ UAT PASS 2026-05-21 — Material transparency slider visibly works; closes GH #527)_ (Phase 999.52 · v1.7.x-30 · GH #527): a working transparency control in the Inspector `materialSection`, superseding the broken legacy `MaterialSettings` transparency slider — _IMPLEMENTATION-COMPLETE / AWAITING GUI HUMAN-VERIFY (Plan 999.52-01 commits ce4061a93d/7374d42ae8; libVIEW + BALLView.app green BALL_UI_V2=ON). MaterialController gained an int transparency (0-255) property driving `Representation::setTransparency()` + `rep_->update(false)` — the per-vertex alpha path the interactive GLRenderer honors — NOT the dead `Stage::Material.transparency` field (the #527 bug; grep-verified unwritten). MaterialSection shows a raw 0-255 Transparency slider sharing Representation state with the Model-section slider. Legacy MaterialSettings dialog untouched (Phase 999.53 deletes it). Checkbox flips to [x] after the blocking running-BALLView human-verify confirms the Material-tab slider visibly changes transparency, the Model-section slider reflects the same value, and reset works._
238238
- [x] **VIEW-CLEAN-02** (Phase 999.57 · prerequisite for 999.53) — _✓ UAT PASS 2026-05-21_: `createModelProcessor`/`createColorProcessor` relocated out of the legacy `modelSettingsDialog`/`coloringSettingsDialog` into headless `ModelProcessorFactory`/`ColorProcessorFactory` (MODELS layer, no QWidget dep); `displayProperties.C:451/487` + `modelController`/`coloringController` repointed onto the factories (grep-proven no legacy reach-throughs); CONFIG-01 compiled-default invariant preserved; render UAT confirmed Model + Coloring representations render correctly. _(scene.C's MaterialSettings/LightSettings/Stage + the remaining displayProperties consumers moved to VIEW-CLEAN-03 / Phase 999.58.)_
239-
- [ ] **VIEW-CLEAN-03** (Phase 999.58 · 2nd prerequisite for 999.53): `scene.C` no longer constructs `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161) — their Preferences-stack + `applyPreferences` + **stereo render-path** (scene.C:2664-3165) responsibilities relocated into Inspector Stage/Light/Material coverage; the Material/Light/Stage Inspector sections drive lights/materials/stereo end-to-end (GUI-verified); tri-OS green
239+
- [x] **VIEW-CLEAN-03** _(✓ UAT PASS 2026-05-22 — materials/lights/stage render via the Inspector; scene.C dialog-free; stereo defers cleanly; tri-OS CI confirming)_ (Phase 999.58 · 2nd prerequisite for 999.53): `scene.C` no longer constructs `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161) — their Preferences-stack + `applyPreferences` + **stereo render-path** (scene.C:2664-3165) responsibilities relocated into Inspector Stage/Light/Material coverage; the Material/Light/Stage Inspector sections drive lights/materials/stereo end-to-end (GUI-verified); tri-OS green
240240
- [ ] **VIEW-CLEAN-01** (Phase 999.53 · v1.7.x-08, depends on VIEW-CLEAN-02 + VIEW-CLEAN-03): the 9 superseded legacy VIEW dialog files (commit `7f56f80d89` breadcrumb) + `displayProperties.{C,h,ui,.sip}` + `lightSettings.sip` + the `Tools › Legacy Settings` submenu / `LegacySettingsHelper` deleted; `grep -r` for all 9 names in `source/`+`include/` returns 0; tri-OS CI green
241241
- [x] **VIEW-UX-01** (Phase 999.54 · v1.7.x-31 · GH #501): BALLView emits a `Log`/status-bar warning at startup when zero renderer plugins are discovered
242242
- [~] **BUILD-ACCEL-08** (Phase 999.55 · v1.7.x-09 PCH half): **ATTEMPTED + REVERTED.** Extending PCH to the test build via `REUSE_FROM BALL`/`VIEW` forces test TUs to inherit the SHARED library's compile-definitions (`NDEBUG` etc.), which flipped `Debug_test`'s debug-macro behavior under GCC → Linux runtime failure (CI run 26233705613; macOS never caught it — AppleClang has PCH guarded off). Reverted in `test/CMakeLists.txt`. The **library** PCH (BUILD-ACCEL-01 / 999.16: Windows −35.6% cold, Linux −15%) already delivers the build-time win; test-suite PCH is dropped as not worth the cross-platform fragility. No further action.

.planning/ROADMAP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This roadmap mirrors the human-authored `/Users/kohlbach/Claude/BALL/ROADMAP-1.6
3030
- [x] **Phase 999.55: Build acceleration — PCH across BALL + VIEW (v1.7.x)** - Investigated extending PCH to the test build; the library PCH (the real win) already shipped in 999.16. Test-suite `REUSE_FROM` PCH was tried and **reverted** (it injects the library's `NDEBUG` into tests, broke `Debug_test` on GCC). Net outcome: doc reconciliation + dropped the fragile test-PCH. (closed 2026-05-21)
3131
- [ ] **Phase 999.56: Refresh the PDF tutorial for the modernized stack (#560) (v1.7.x)** - Update tutorial content/screenshots/URLs/build flow to v1.7.x.
3232
- [x] **Phase 999.57: Complete Inspector controller cut-over — unwire displayProperties.C from the rendering pipeline (v1.7.x) — PREREQUISITE FOR 999.53** - Relocate `createModelProcessor`/`createColorProcessor` (the rendering-path factories at displayProperties.C:451/487) out of the legacy Model/Coloring settings dialogs into the Inspector/Controller layer; and the displayProperties references in mainControl/mainframe. Highest-risk (touches the threaded renderer) — incremental + verifiable per CLAUDE.md. **Planner scope-corrected:** scene.C's MaterialSettings/LightSettings/StageSettings are NOT dead (load-bearing for the Preferences stack + the entire stereo render path) — split out as 999.58. 3 plans created; unblocks deleting the Model/Coloring/displayProperties triples. **Code+build+audit COMPLETE 2026-05-21** (all 3 plans landed; render path grep-proven detached; BALLView.app links clean BALL_UI_V2=ON) — **but Plan 03's BLOCKING running-BALLView render UAT is PENDING**, so VIEW-CLEAN-02 stays PARTIAL and the phase is not yet closed. (completed 2026-05-22)
33-
- [ ] **Phase 999.58: scene.C settings-dialog cut-over — Material/Light/Stage incl. the stereo render path (v1.7.x) — 2nd PREREQUISITE FOR 999.53** - Relocate scene.C's `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161; load-bearing across ~15 sites incl. the Preferences stack, applyPreferences, and the full stereo rendering path scene.C:2664-3165) into Inspector Stage/Light/Material coverage. Independent high-risk threaded-renderer migration, comparable in size to 999.57; own GUI UAT (lights/materials/stereo must still render). Needed before 999.53 deletes those 3 dialog triples.
33+
- [x] **Phase 999.58: scene.C settings-dialog cut-over — Material/Light/Stage incl. the stereo render path (v1.7.x) — 2nd PREREQUISITE FOR 999.53** - Relocate scene.C's `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161; load-bearing across ~15 sites incl. the Preferences stack, applyPreferences, and the full stereo rendering path scene.C:2664-3165) into Inspector Stage/Light/Material coverage. Independent high-risk threaded-renderer migration, comparable in size to 999.57; own GUI UAT (lights/materials/stereo must still render). Needed before 999.53 deletes those 3 dialog triples. (completed 2026-05-22)
3434

3535
<!-- v1.7.4 milestone — Inspector depth + the contract (ingested from design handover 2026-05-22; renumbered +1 from handover 999.58-999.63 to clear the 999.58 collision) -->
3636
- [ ] **Phase 999.59: Controller cut-over · command-shaped `apply()` (v1.7.4 · Wave A · GATING)** - Land the command-shaped `Controller::apply()` contract (validate → guard → mutate → notify → invalidate → record reversible payload) on all 8 mutating Controllers + `ApplyGuard`/`ApplyPayload` base types; narrow `Stage`/`Representation` setters to Controller-`friend` scope. Maps to v1.7.x-24. *Depends on 999.57.* See [Phase 999.59 detail](#phase-99959-controller-cut-over--command-shaped-apply-v174--wave-a--gating).
@@ -2545,7 +2545,7 @@ Plans:
25452545
**Requirements:** `VIEW-CLEAN-03`.
25462546
**Risk:** HIGHEST — independent threaded-renderer migration comparable in size to 999.57, touching the stereo path. Incremental + verifiable against a running GUI (lights/materials/stereo render end-to-end); own GUI UAT.
25472547
**Depends on:** 999.57 (builds on the detached render path). **Blocks:** 999.53.
2548-
**Plans:** 3 plans (sequential; render-touching, each with a blocking GUI human-verify).
2548+
**Plans:** 3/3 plans complete
25492549
Plans:
25502550
- [~] 999.58-01-PLAN.md — Material + Light config relocation onto the Inspector MaterialController/LightController; route applyPreferences material+light + the light-refresh sites off the dialogs (wave 1). **Code+build COMPLETE 2026-05-22** (MaterialController owns the full default-material field set incl. the 3 colors + `applyDefaultMaterial()`; LightController owns the full per-light list + `syncFromStage()`; scene.C `applyPreferences` + all 5 light-refresh sites routed through the controllers; no live MaterialSettings/LightSettings reach-throughs remain on Scene's render path; BALLView.app links clean BALL_UI_V2=ON). **BLOCKING running-BALLView render UAT PENDING** (lights + materials must still visibly drive the scene) — VIEW-CLEAN-03 stays incomplete (phase-spanning).
25512551
- [~] 999.58-02-PLAN.md — Full non-stereo Stage render config relocation onto StageController (vertex buffers, downsampling, projection, FPS, preview, offscreen, renderer switch, etc.); route applyPreferences stage branch + getGLSettings off stage_settings_ (wave 2). **Code+build COMPLETE 2026-05-22** (StageController grew the full non-stereo render-config field set — projection / show-lights / animation-smoothness / offscreen+factor / capping / FPS / preview / vertex-buffers incl. rep-delete side effect / smooth-lines / downsampling / renderer-switch / mouse+wheel-sensitivity — applied through the same Scene/Stage/Camera/GLRenderer/ClippingPlane backend behind the re-entrancy shield + a new MainControl::isBusy() defer-guard; scene.C `applyPreferences` routed through a transient StageController; non-load-bearing `getGLSettings()` init readback removed; swap-side-by-side left to StereoController; BALLView.app links clean BALL_UI_V2=ON). **BLOCKING running-BALLView render UAT PENDING** (stage controls must still visibly drive the scene; no regression to background/fog/eye/focal) — VIEW-CLEAN-03 stays incomplete (phase-spanning).

.planning/STATE.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ gsd_state_version: 1.0
33
milestone: v1.6.2
44
milestone_name: · 2026-05-16)
55
status: paused
6-
stopped_at: "999.58-03 at BLOCKING checkpoint:human-verify (FINAL scene.C dialog cut-over render UAT pending; 999.58-01/02 UATs also pending)"
7-
last_updated: "2026-05-22T00:00:00.000Z"
8-
last_activity: 2026-05-22 -- 999.58-03 FINAL scene.C dialog cut-over landed (scene.C constructs none of LightSettings/MaterialSettings/StageSettings; Preferences stack registers none of them; deferred stereo bodies read a Scene-owned StereoScreenConfig; applyStereoDefaults computes in-Scene; demoTutorialDialog repointed); BALLView.app links clean (BALL_UI_V2=ON); VIEW-CLEAN-03 construction grep proof passes; GUI render UAT pending — 999.53 unblocked to delete the dialog triples
6+
stopped_at: "999.57-03 at BLOCKING checkpoint:human-verify (render UAT pending)"
7+
last_updated: "2026-05-22T09:27:38.420Z"
8+
last_activity: 2026-05-22
99
progress:
1010
total_phases: 73
1111
completed_phases: 33
@@ -24,10 +24,10 @@ progress:
2424

2525
## Current Position
2626

27-
Phase: 999.58 (scene-settings-stereo-cutover) — EXECUTING (all 3 plans code+build complete; phase-level GUI render UAT pending)
28-
Plan: 3 of 3 (FINAL — code+build done; BLOCKING GUI render UAT pending — 999.58-01/02 UATs also pending)
27+
Phase: 999.58
28+
Plan: Not started
2929
Status: Executing Phase 999.58 — 999.58-03 paused at blocking checkpoint:human-verify
30-
Last activity: 2026-05-22 -- 999.58-03 FINAL scene.C dialog cut-over landed (scene.C constructs/registers none of LightSettings/MaterialSettings/StageSettings; deferred stereo bodies read a Scene-owned StereoScreenConfig; applyStereoDefaults computes in-Scene; demoTutorialDialog repointed; unused dialog includes dropped); BALLView.app links clean (BALL_UI_V2=ON); VIEW-CLEAN-03 construction grep proof passes; 999.53 unblocked
30+
Last activity: 2026-05-22
3131

3232
## Performance Metrics
3333

0 commit comments

Comments
 (0)