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. |
|
| 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. |
|
| 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. |
|
| 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. |
|
| 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. |
|
| Platform and package parity | 10 | 8 | 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. |
|
| Hardening and future backend readiness | 10 | 4 | Edge, fuzz, golden, stress, and backend-lab gates exist for high-risk paths. |
|
||||||
| **Total** | **100** | **55** | Only completed tasks below may change this number. |
|
| **Total** | **100** | **63** | Only completed tasks below may change this number. |
|
||||||
|
|
||||||
When updating `Current`, add a dated note under "Completed Task Log" with the
|
When updating `Current`, add a dated note under "Completed Task Log" with the
|
||||||
task id, points moved, validation command, and commit hash.
|
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:
|
Completed Task Log:
|
||||||
|
|
||||||
| Date | Task | Validation | Commit |
|
| Date | Task | Score | 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` |
|
| 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
|
### 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
|
### STR-060 - Extract Stroke Draw Main Pass Destination Binding
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: no score movement
|
Score: no score movement
|
||||||
Debt: `DEBT-0036`
|
Debt: `DEBT-0036`
|
||||||
Scope: `src/canvas.cpp`, `src/canvas.h`, `src/legacy_canvas_stroke_execution_services.h`, `tests/paint_renderer/stroke_execution_tests.cpp`
|
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
|
### AUD-001 - Normalize Historical Task Tracker Duplicates
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: no score movement
|
Score: no score movement
|
||||||
Debt: none
|
Debt: none
|
||||||
Scope: `docs/modernization/tasks.md`
|
Scope: `docs/modernization/tasks.md`
|
||||||
@@ -2497,10 +2497,11 @@ git diff -- docs\modernization\tasks.md
|
|||||||
|
|
||||||
### ARCH-001 - Add Component Boundary Dependency Self-Test
|
### ARCH-001 - Add Component Boundary Dependency Self-Test
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 pure component behavior ownership
|
Score: +2 pure component behavior ownership
|
||||||
Debt: `DEBT-0003`, `DEBT-0008`
|
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`
|
`docs/modernization/build-inventory.md`
|
||||||
|
|
||||||
Goal:
|
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
|
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
|
### RND-007 - Freeze Renderer API Backend Contract
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 renderer boundary and OpenGL parity
|
Score: +2 renderer boundary and OpenGL parity
|
||||||
Debt: `DEBT-0036`, `DEBT-0064`
|
Debt: `DEBT-0036`, `DEBT-0064`
|
||||||
Scope: `src/renderer_api/*`, `src/renderer_gl/*`,
|
Scope: `src/renderer_api/*`, `src/renderer_gl/*`,
|
||||||
`src/paint_renderer/*`, `tests/renderer_api/*`,
|
`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:
|
Goal:
|
||||||
|
|
||||||
@@ -2557,18 +2567,19 @@ Done Checks:
|
|||||||
Validation:
|
Validation:
|
||||||
|
|
||||||
```powershell
|
```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
|
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter pano_cli
|
||||||
```
|
```
|
||||||
|
|
||||||
### RND-008 - Add Backend Conformance Test Matrix
|
### RND-008 - Add Backend Conformance Test Matrix
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 hardening and future backend readiness
|
Score: +2 hardening and future backend readiness
|
||||||
Debt: `DEBT-0036`
|
Debt: `DEBT-0036`
|
||||||
Depends: `RND-007`
|
Depends: `RND-007`
|
||||||
Scope: `tests/renderer_api/`, `tests/renderer_gl/`, `tests/CMakeLists.txt`,
|
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:
|
Goal:
|
||||||
|
|
||||||
@@ -2592,8 +2603,9 @@ Done Checks:
|
|||||||
Validation:
|
Validation:
|
||||||
|
|
||||||
```powershell
|
```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-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
|
### 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
|
### UI-001 - Define UI Thread-Affinity And Mutation Contract
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 hardening and future backend readiness
|
Score: +2 hardening and future backend readiness
|
||||||
Debt: `DEBT-0003`, `DEBT-0063`
|
Debt: `DEBT-0003`, `DEBT-0063`
|
||||||
Scope: `src/ui_core/*`, `src/app_core/app_thread.*`,
|
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
|
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
|
### UI-002 - Migrate Next Retained Panel Family To Checked UI Handles
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 legacy adapter retirement
|
Score: +2 legacy adapter retirement
|
||||||
Debt: `DEBT-0063`
|
Debt: `DEBT-0063`
|
||||||
Depends: `UI-001`
|
Depends: `UI-001`
|
||||||
Scope: choose one family from `src/node_panel_layer.cpp`,
|
Scope: `src/node_panel_layer.h/.cpp`, `src/node_combobox.cpp`,
|
||||||
`src/node_panel_brush.cpp`, `src/node_panel_stroke.cpp`,
|
`src/node_dialog_open.cpp`, `src/node_dialog_browse.cpp`,
|
||||||
`src/node_dialog_open.cpp`, or `src/node_dialog_browse.cpp`, plus
|
`src/legacy_ui_overlay_services.*`,
|
||||||
`src/legacy_ui_overlay_services.*` and focused tests.
|
focused tests.
|
||||||
|
|
||||||
Goal:
|
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
|
ownership to the checked-handle and scoped-callback model, preserving current
|
||||||
behavior while proving the migration pattern is repeatable.
|
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:
|
Done Checks:
|
||||||
|
|
||||||
- Chosen family no longer uses open-coded root insertion, close callback
|
- Chosen family no longer uses open-coded root insertion, close callback
|
||||||
@@ -2724,18 +2759,27 @@ Done Checks:
|
|||||||
Validation:
|
Validation:
|
||||||
|
|
||||||
```powershell
|
```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_app pp_ui_core_node_lifetime_tests pp_ui_core_overlay_lifetime_tests
|
||||||
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter
|
.\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
|
### APP-001 - Add Render/UI Queue Race Regression Gate
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 test and automation coverage
|
Score: +2 test and automation coverage
|
||||||
Debt: `DEBT-0003`, `DEBT-0017`
|
Debt: `DEBT-0003`, `DEBT-0017`
|
||||||
Depends: `UI-001`
|
Depends: `UI-001`
|
||||||
Scope: `src/foundation/*`, `src/app_core/app_thread.*`,
|
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/*`
|
`tools/pano_cli/*`
|
||||||
|
|
||||||
Goal:
|
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
|
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
|
### PLT-010 - Gate Backend And UI Work On Platform Package Readiness
|
||||||
|
|
||||||
Status: Ready
|
Status: Done
|
||||||
Score: +2 platform and package parity
|
Score: +2 platform and package parity
|
||||||
Debt: `DEBT-0004`, `DEBT-0011`, `DEBT-0059`
|
Debt: `DEBT-0004`, `DEBT-0011`, `DEBT-0059`
|
||||||
Scope: `scripts/automation/package-smoke.*`,
|
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
|
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
|
### 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 |
|
| 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` | `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
|
### STR-017 - Extract Draw Merge Temporary Erase Composite Branch
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user