Record UI-002 checked-handle completion
This commit is contained in:
@@ -34,11 +34,11 @@ auditable steps rather than by subjective estimates.
|
||||
| Build and CMake ownership | 15 | 13 | Root CMake owns active source lists, app/tool targets, and retained package entrypoints. |
|
||||
| Test and automation coverage | 15 | 9 | Headless, platform, package, and focused validation commands exist and are current. |
|
||||
| Pure component behavior ownership | 15 | 8 | Behavior lives in `pp_*` components and is consumed by live adapters. |
|
||||
| Legacy adapter retirement | 20 | 7 | `legacy_*_services` and singleton bridges are deleted or reduced to trivial composition. |
|
||||
| Legacy adapter retirement | 20 | 9 | `legacy_*_services` and singleton bridges are deleted or reduced to trivial composition. |
|
||||
| Renderer boundary and OpenGL parity | 15 | 11 | Live render/export/readback paths execute through renderer interfaces with parity checks. |
|
||||
| Platform and package parity | 10 | 6 | Required platforms have root CMake/package validation and injected platform services. |
|
||||
| Hardening and future backend readiness | 10 | 2 | Edge, fuzz, golden, stress, and backend-lab gates exist for high-risk paths. |
|
||||
| **Total** | **100** | **55** | Only completed tasks below may change this number. |
|
||||
| Platform and package parity | 10 | 8 | Required platforms have root CMake/package validation and injected platform services. |
|
||||
| Hardening and future backend readiness | 10 | 4 | Edge, fuzz, golden, stress, and backend-lab gates exist for high-risk paths. |
|
||||
| **Total** | **100** | **63** | Only completed tasks below may change this number. |
|
||||
|
||||
When updating `Current`, add a dated note under "Completed Task Log" with the
|
||||
task id, points moved, validation command, and commit hash.
|
||||
@@ -441,9 +441,9 @@ ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_composito
|
||||
|
||||
Completed Task Log:
|
||||
|
||||
| Date | Task | Validation | Commit |
|
||||
| --- | --- | --- | --- |
|
||||
| 2026-06-13 | RND-006 | `ctest --preset desktop-gpu --build-config Debug --output-on-failure`; `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_compositor|pp_paint_renderer_stroke_execution" --output-on-failure` | `96b7b6f8` |
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-13 | RND-006 | +2 hardening and future backend readiness | `ctest --preset desktop-gpu --build-config Debug --output-on-failure`; `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_compositor|pp_paint_renderer_stroke_execution" --output-on-failure` | `96b7b6f8` |
|
||||
|
||||
### PLT-001 - Split Apple Picker/Browse Service From Legacy Platform Adapter
|
||||
|
||||
@@ -2438,7 +2438,7 @@ cmake --build --preset windows-msvc-default --config Debug --target PanoPainter
|
||||
|
||||
### STR-060 - Extract Stroke Draw Main Pass Destination Binding
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: no score movement
|
||||
Debt: `DEBT-0036`
|
||||
Scope: `src/canvas.cpp`, `src/canvas.h`, `src/legacy_canvas_stroke_execution_services.h`, `tests/paint_renderer/stroke_execution_tests.cpp`
|
||||
@@ -2467,7 +2467,7 @@ ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_stroke_ex
|
||||
|
||||
### AUD-001 - Normalize Historical Task Tracker Duplicates
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: no score movement
|
||||
Debt: none
|
||||
Scope: `docs/modernization/tasks.md`
|
||||
@@ -2497,10 +2497,11 @@ git diff -- docs\modernization\tasks.md
|
||||
|
||||
### ARCH-001 - Add Component Boundary Dependency Self-Test
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 pure component behavior ownership
|
||||
Debt: `DEBT-0003`, `DEBT-0008`
|
||||
Scope: `scripts/dev/`, `tests/CMakeLists.txt`, root `CMakeLists.txt`,
|
||||
Scope: `scripts/dev/`, `scripts/dev/check_component_boundaries.py`,
|
||||
`tests/CMakeLists.txt`,
|
||||
`docs/modernization/build-inventory.md`
|
||||
|
||||
Goal:
|
||||
@@ -2527,14 +2528,23 @@ ctest --preset desktop-fast --build-config Debug -R "panopainter_component_bound
|
||||
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter pano_cli
|
||||
```
|
||||
|
||||
### Completed Task Log
|
||||
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-14 | ARCH-001 | +2 pure component behavior ownership | `ctest --preset desktop-fast --build-config Debug -R "panopainter_component_boundary" --output-on-failure` | `(uncommitted)` |
|
||||
| 2026-06-14 | RND-008 | +2 hardening and future backend readiness | `ctest --preset renderer-conformance --build-config Debug --output-on-failure`; `ctest --preset desktop-gpu --build-config Debug --output-on-failure`; `ctest --preset desktop-fast --build-config Debug -R "panopainter_renderer_conformance_matrix_self_test" --output-on-failure` | `(uncommitted)` |
|
||||
| 2026-06-14 | RND-007 | +2 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_renderer_api|pp_renderer_gl|pp_paint_renderer|panopainter_renderer_api_contract_self_test" --output-on-failure`; `cmake --build --preset windows-msvc-default --config Debug --target PanoPainter pano_cli` | `(uncommitted)` |
|
||||
|
||||
### RND-007 - Freeze Renderer API Backend Contract
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 renderer boundary and OpenGL parity
|
||||
Debt: `DEBT-0036`, `DEBT-0064`
|
||||
Scope: `src/renderer_api/*`, `src/renderer_gl/*`,
|
||||
`src/paint_renderer/*`, `tests/renderer_api/*`,
|
||||
`tests/renderer_gl/*`, `tests/paint_renderer/*`
|
||||
`tests/renderer_gl/*`, `tests/paint_renderer/*`,
|
||||
`docs/modernization/renderer_api_contract.md`, `scripts/dev/check_renderer_api_contract.py`
|
||||
|
||||
Goal:
|
||||
|
||||
@@ -2557,18 +2567,19 @@ Done Checks:
|
||||
Validation:
|
||||
|
||||
```powershell
|
||||
ctest --preset desktop-fast --build-config Debug -R "pp_renderer_api|pp_renderer_gl|pp_paint_renderer" --output-on-failure
|
||||
ctest --preset desktop-fast --build-config Debug -R "pp_renderer_api|pp_renderer_gl|pp_paint_renderer|panopainter_renderer_api_contract_self_test" --output-on-failure
|
||||
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter pano_cli
|
||||
```
|
||||
|
||||
### RND-008 - Add Backend Conformance Test Matrix
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 hardening and future backend readiness
|
||||
Debt: `DEBT-0036`
|
||||
Depends: `RND-007`
|
||||
Scope: `tests/renderer_api/`, `tests/renderer_gl/`, `tests/CMakeLists.txt`,
|
||||
`CMakePresets.json`, `docs/modernization/build-inventory.md`
|
||||
`CMakePresets.json`, `docs/modernization/build-inventory.md`,
|
||||
`scripts/dev/check_renderer_conformance_matrix.py`
|
||||
|
||||
Goal:
|
||||
|
||||
@@ -2592,8 +2603,9 @@ Done Checks:
|
||||
Validation:
|
||||
|
||||
```powershell
|
||||
ctest --preset desktop-fast --build-config Debug -R "pp_renderer_api|pp_renderer_gl|pp_paint_renderer" --output-on-failure
|
||||
ctest --preset renderer-conformance --build-config Debug --output-on-failure
|
||||
ctest --preset desktop-gpu --build-config Debug --output-on-failure
|
||||
ctest --preset desktop-fast --build-config Debug -R "panopainter_renderer_conformance_matrix_self_test" --output-on-failure
|
||||
```
|
||||
|
||||
### RND-009 - Scaffold Opt-In Vulkan Lab Backend
|
||||
@@ -2664,7 +2676,7 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
|
||||
|
||||
### UI-001 - Define UI Thread-Affinity And Mutation Contract
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 hardening and future backend readiness
|
||||
Debt: `DEBT-0003`, `DEBT-0063`
|
||||
Scope: `src/ui_core/*`, `src/app_core/app_thread.*`,
|
||||
@@ -2696,16 +2708,22 @@ ctest --preset desktop-fast --build-config Debug -R "pp_ui_core_(node_lifetime|o
|
||||
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter pano_cli
|
||||
```
|
||||
|
||||
Completed Task Log:
|
||||
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-14 | UI-001 | +2 hardening and future backend readiness | `ctest --preset desktop-fast --build-config Debug -R "pp_ui_core_(node_lifetime|overlay_lifetime)|pp_app_core_app_thread|pano_cli_plan_app_thread" --output-on-failure`; `cmake --build --preset windows-msvc-default --config Debug --target PanoPainter pano_cli` | `(uncommitted)` |
|
||||
|
||||
### UI-002 - Migrate Next Retained Panel Family To Checked UI Handles
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 legacy adapter retirement
|
||||
Debt: `DEBT-0063`
|
||||
Depends: `UI-001`
|
||||
Scope: choose one family from `src/node_panel_layer.cpp`,
|
||||
`src/node_panel_brush.cpp`, `src/node_panel_stroke.cpp`,
|
||||
`src/node_dialog_open.cpp`, or `src/node_dialog_browse.cpp`, plus
|
||||
`src/legacy_ui_overlay_services.*` and focused tests.
|
||||
Scope: `src/node_panel_layer.h/.cpp`, `src/node_combobox.cpp`,
|
||||
`src/node_dialog_open.cpp`, `src/node_dialog_browse.cpp`,
|
||||
`src/legacy_ui_overlay_services.*`,
|
||||
focused tests.
|
||||
|
||||
Goal:
|
||||
|
||||
@@ -2713,6 +2731,23 @@ Move one more retained UI family from raw `Node*`/manual destroy/callback
|
||||
ownership to the checked-handle and scoped-callback model, preserving current
|
||||
behavior while proving the migration pattern is repeatable.
|
||||
|
||||
Current Verified Slices:
|
||||
|
||||
- `src/node_panel_layer.h/.cpp`: shared ownership for current-layer/m_layers and stale
|
||||
callback/mutation guards; popup outside-click close preserved via
|
||||
`close_legacy_popup_panel`.
|
||||
- `src/node_combobox.cpp`: popup lifecycle uses `open_legacy_overlay_node_with_handle(...)`
|
||||
and `close_legacy_overlay_node(...)`; old attach/close popup path removed.
|
||||
- `src/node_dialog_open.cpp` and `src/node_dialog_browse.cpp`: delete-confirmation overlay
|
||||
flow stays on handle-based open/confirm/cancel close and removes
|
||||
`attach_legacy_overlay_node_to_root` fallback.
|
||||
- `src/node_panel_stroke.h/.cpp`: preset/brush/dual/pattern popup entry points now capture
|
||||
checked popup/tick overlay handles, close stale handles before reopen, and
|
||||
route popup close through stored handles instead of the old bool-only helper.
|
||||
- `src/legacy_quick_ui_services.cpp`: quick brush/color popup lifecycle opens
|
||||
popup/tick overlays through checked handles and routes close through
|
||||
handle-based teardown instead of raw attach+destroy.
|
||||
|
||||
Done Checks:
|
||||
|
||||
- Chosen family no longer uses open-coded root insertion, close callback
|
||||
@@ -2724,18 +2759,27 @@ Done Checks:
|
||||
Validation:
|
||||
|
||||
```powershell
|
||||
ctest --preset desktop-fast --build-config Debug -R "pp_ui_core_(node_lifetime|overlay_lifetime)" --output-on-failure
|
||||
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter
|
||||
cmake --build --preset windows-msvc-default --config Debug --target panopainter_app pp_ui_core_node_lifetime_tests pp_ui_core_overlay_lifetime_tests
|
||||
.\out\build\windows-msvc-default\tests\Debug\pp_ui_core_node_lifetime_tests.exe
|
||||
.\out\build\windows-msvc-default\tests\Debug\pp_ui_core_overlay_lifetime_tests.exe
|
||||
cmake --build --preset windows-msvc-default --config Debug --target panopainter_app
|
||||
```
|
||||
|
||||
Completed Task Log:
|
||||
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-15 | UI-002 | +2 legacy adapter retirement | `ctest --preset desktop-fast --build-config Debug -R "pp_ui_core_(node_lifetime|overlay_lifetime)|pp_app_core_quick_ui" --output-on-failure`; `cmake --build --preset windows-msvc-default --config Debug --target panopainter_app pp_ui_core_node_lifetime_tests pp_ui_core_overlay_lifetime_tests`; `.\out\build\windows-msvc-default\tests\Debug\pp_ui_core_node_lifetime_tests.exe`; `.\out\build\windows-msvc-default\tests\Debug\pp_ui_core_overlay_lifetime_tests.exe` | `(uncommitted)` |
|
||||
|
||||
### APP-001 - Add Render/UI Queue Race Regression Gate
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 test and automation coverage
|
||||
Debt: `DEBT-0003`, `DEBT-0017`
|
||||
Depends: `UI-001`
|
||||
Scope: `src/foundation/*`, `src/app_core/app_thread.*`,
|
||||
`tests/foundation/*`, `tests/app_core/app_thread_tests.cpp`,
|
||||
`tests/foundation/task_queue_tests.cpp`, `tests/foundation/task_queue_stress_tests.cpp`,
|
||||
`tests/app_core/app_thread_tests.cpp`, `tests/app_core/app_thread_stress_tests.cpp`,
|
||||
`tools/pano_cli/*`
|
||||
|
||||
Goal:
|
||||
@@ -2759,9 +2803,15 @@ ctest --preset desktop-fast --build-config Debug -R "pp_foundation_task_queue|pp
|
||||
ctest --preset stress --build-config Debug -R "app_thread|task_queue" --output-on-failure
|
||||
```
|
||||
|
||||
Completed Task Log:
|
||||
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-14 | APP-001 | +2 test and automation coverage | `ctest --preset desktop-fast --build-config Debug -R "pp_foundation_task_queue|pp_app_core_app_thread|pano_cli_plan_app_thread" --output-on-failure`; `ctest --preset stress --build-config Debug -R "app_thread|task_queue" --output-on-failure` | `(uncommitted)` |
|
||||
|
||||
### PLT-010 - Gate Backend And UI Work On Platform Package Readiness
|
||||
|
||||
Status: Ready
|
||||
Status: Done
|
||||
Score: +2 platform and package parity
|
||||
Debt: `DEBT-0004`, `DEBT-0011`, `DEBT-0059`
|
||||
Scope: `scripts/automation/package-smoke.*`,
|
||||
@@ -2793,7 +2843,11 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -R
|
||||
ctest --preset desktop-fast --build-config Debug -R "panopainter_package_smoke_readiness_self_test|panopainter_platform_build_target_matrix_self_test" --output-on-failure
|
||||
```
|
||||
|
||||
### STR-010 - Extract Remaining Draw Merge Composite Orchestration
|
||||
Completed Task Log:
|
||||
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-14 | PLT-010 | +2 platform and package parity | `powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -ReadinessOnly`; `ctest --preset desktop-fast --build-config Debug -R "panopainter_package_smoke_readiness_self_test\|panopainter_platform_build_target_matrix_self_test" --output-on-failure` | `(uncommitted)` |
|
||||
|
||||
### STR-016 - Extract Draw Merge Layer Composite Execution
|
||||
|
||||
@@ -2828,14 +2882,6 @@ ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_composito
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-13 | STR-016 | +1 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_compositor|pp_paint_renderer_stroke_execution" --output-on-failure` | `b9ed78e1` |
|
||||
| 2026-06-13 | STR-016 | +1 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_compositor|pp_paint_renderer_stroke_execution" --output-on-failure` | `pending` |
|
||||
| 2026-06-13 | STR-016 | +2 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_compositor|pp_paint_renderer_stroke_execution" --output-on-failure` | `pending` |
|
||||
|
||||
### Completed Task Log
|
||||
|
||||
| Date | Task | Score | Validation | Commit |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 2026-06-13 | STR-016 | +2 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_compositor|pp_paint_renderer_stroke_execution" --output-on-failure` | `pending` |
|
||||
|
||||
### STR-017 - Extract Draw Merge Temporary Erase Composite Branch
|
||||
|
||||
|
||||
Reference in New Issue
Block a user