Share document export readiness reporting

This commit is contained in:
2026-06-05 20:19:46 +02:00
parent 2d33f9d928
commit ebc84373e6
9 changed files with 181 additions and 87 deletions

View File

@@ -252,9 +252,10 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
rectangles into full renderer-sized RGBA buffers with layer visibility,
opacity, and blend mode applied in document order, then uploading those six
faces through the renderer-neutral `IRenderDevice` texture API using the
recording backend. It also covers the shared recorded-upload report helper
consumed by CLI and live export-readiness bridges, plus a pure six-face PNG
export helper that encodes composited document-frame faces through `pp_assets`.
recording backend. It also covers the shared
`prepare_document_frame_export_readiness` report consumed by CLI and live
export-readiness bridges, including the recorded upload command summary and
pure six-face PNG export bytes encoded through `pp_assets`.
- `pano_cli simulate-document-export` exposes the same pure document-to-PPI
export, asset-level decode, and document reimport path through JSON
automation and is covered by `pano_cli_simulate_document_export_smoke`.
@@ -271,17 +272,15 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
payload-complete or metadata-only snapshots, the same app-core boundary now
exports through the pure `pp_document` PPI writer and reports generated byte
counts plus decoded dirty-face counts in `ppiExport` JSON. Payload-complete
snapshots also feed the active frame through the `pp_paint_renderer`
document-frame compositor and renderer-neutral recorded-upload report helper,
reporting texture, transition, command, byte, and active-frame payload counts
in `rendererUpload` JSON. The same payload-complete path also reports
`facePngExport` readiness, face count, byte count, and payload count from the
pure face-PNG export helper. It is covered by
snapshots also feed the active frame through the shared `pp_paint_renderer`
export-readiness report, reporting texture, transition, command, byte, and
active-frame payload counts in `rendererUpload` JSON plus `facePngExport`
readiness, face count, byte count, and payload count. It is covered by
`pano_cli_plan_canvas_document_snapshot_smoke` plus the payload-bearing
snapshot smoke.
- Live equirectangular, layer, animation-frame, and cube-face export adapters
now prepare and log the same payload-bearing canvas document snapshot plus
shared renderer-neutral active-frame upload and face-PNG export reports.
shared paint-renderer export-readiness report.
Cube-face export writes the pure document/renderer PNG bytes through the
app-core write/publish executor to the planned retained face filename set and
falls back to `Canvas::export_cube_faces` if snapshot capture, PNG generation,
@@ -1125,7 +1124,7 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
exports, Web prepared-file handoff, and legacy `Canvas` export execution while
retained renderer/document/platform ownership is tracked by `DEBT-0043`.
Equirectangular, layer, animation-frame, and cube-face execution now prepare
the document snapshot plus renderer-upload readiness report before those
the document snapshot plus shared paint-renderer export-readiness report before those
retained calls; cube-face export writes pure face-PNG bytes to the app-core
planned legacy work-directory face paths through the app-core write/publish
executor before falling back to the retained writer, and depth export remains

View File

@@ -11,7 +11,7 @@ and validation command.
| Capability | Current Area | Target Owner | Required Tests |
| --- | --- | --- | --- |
| PPI open/save | `Canvas`, serializer, dialogs | `pp_document`, `pp_assets`, `pano_cli` | Round-trip tiny project, old-version fixture, corrupt/truncated fixture, live-canvas-to-`pp_document` snapshot projection with captured RGBA8 payloads, pending renderer-readback counts, save-readiness reporting before retained live saves, pure PPI export from payload-complete snapshots, and renderer-neutral active-frame upload from the same snapshot |
| PPI open/save | `Canvas`, serializer, dialogs | `pp_document`, `pp_assets`, `pano_cli` | Round-trip tiny project, old-version fixture, corrupt/truncated fixture, live-canvas-to-`pp_document` snapshot projection with captured RGBA8 payloads, pending renderer-readback counts, save-readiness reporting before retained live saves, pure PPI export from payload-complete snapshots, and shared paint-renderer export-readiness reporting from the same snapshot |
| Open-document routing | `App::open_document` | `pp_app_core`, `pano_cli`, `pp_panopainter_ui`, `pp_document`, `pp_assets` | Project/ABR/PPBR route tests, malformed path tests, open-action plan tests, CLI route/action smoke, app open smoke |
| Document session decisions | `App::open_document`, `App::request_close`, save hotkeys, file menu, dialogs | `pp_app_core`, `pano_cli`, `pp_panopainter_ui` | Clean/dirty/prompt-open/save/save-as/save-version/save-before-workflow/name/new-document resolution/overwrite/version-target decision tests, CLI session, new-document, document-file, and document-version smoke, app close/open/save/new/browse smoke |
| Version metadata | `scripts/pre-build.py`, `version.*` | build system, `pp_foundation` | Generated header smoke test, missing-tag behavior |
@@ -24,9 +24,9 @@ and validation command.
| Capability | Current Area | Target Owner | Required Tests |
| --- | --- | --- | --- |
| PNG/JPEG import | `Image`, `Canvas` import paths | `pp_assets`, `pp_document` | Fixture import, malformed file |
| PNG/JPEG export | `Canvas`, `Image`, export dialogs | `pp_assets`, `pp_paint_renderer`, `pp_app_core` | Golden output tolerance, export start/target planning tests, live export-adapter document snapshot readiness |
| Equirectangular import/export | `Canvas`, shaders, RTT, export dialogs | `pp_paint_renderer`, `pp_app_core` | Tiny cube/equirect golden, app-core file target tests, live export-adapter renderer-upload readiness |
| Cube face export | `Canvas` fallback | `pp_paint_renderer`, `pp_app_core` | Pure six-face document frame composite, renderer texture-upload bridge, pure face-PNG export helper, app-core face filename planning and write/publish service execution, payload-complete canvas-snapshot renderer-upload and face-PNG automation, live document/renderer face-PNG writer with retained Canvas fallback, OpenGL command-plan coverage, six-face golden set |
| PNG/JPEG export | `Canvas`, `Image`, export dialogs | `pp_assets`, `pp_paint_renderer`, `pp_app_core` | Golden output tolerance, export start/target planning tests, live export-adapter document snapshot readiness through the shared paint-renderer export report |
| Equirectangular import/export | `Canvas`, shaders, RTT, export dialogs | `pp_paint_renderer`, `pp_app_core` | Tiny cube/equirect golden, app-core file target tests, live export-adapter renderer-upload/face-PNG readiness report |
| Cube face export | `Canvas` fallback | `pp_paint_renderer`, `pp_app_core` | Pure six-face document frame composite, renderer texture-upload bridge, shared export-readiness report, app-core face filename planning and write/publish service execution, payload-complete canvas-snapshot renderer-upload and face-PNG automation, live document/renderer face-PNG writer with retained Canvas fallback, OpenGL command-plan coverage, six-face golden set |
| Depth export | `Canvas`, grid tools | `pp_paint_renderer` | Float/readback validation |
## Brush And Painting

File diff suppressed because one or more lines are too long

View File

@@ -676,19 +676,17 @@ delegating to retained `Canvas::project_save`; the app-core snapshot boundary
also has a tested pure PPI export helper, and
`pano_cli plan-canvas-document-snapshot` runs that helper for payload-complete
snapshots and reports generated byte/dirty-face summaries. The same automation
now feeds payload-complete snapshots through the `pp_paint_renderer`
document-frame compositor and renderer-neutral recording upload path, reporting
texture, transition, byte, payload, and command counts through the shared
`record_document_frame_upload` report helper. Payload-complete snapshot
automation also encodes the active document frame's six composited faces to PNG
bytes through `pp_paint_renderer::export_document_frame_face_pngs`, giving the
cube-face export path a pure renderer/document writer primitive before live
writer replacement. Live save writer replacement, export adoption, and
renderer-owned readback remain under
now feeds payload-complete snapshots through the shared
`pp_paint_renderer::prepare_document_frame_export_readiness` report, which
records renderer-neutral six-face texture upload commands and encodes the
active document frame's six composited faces to PNG bytes. This gives CLI
automation and live export adapters the same document/canvas-to-renderer
readiness boundary before broader writer replacement. Live save writer
replacement, export adoption, and renderer-owned readback remain under
`DEBT-0010`/`DEBT-0013`/`DEBT-0036`.
Live equirectangular, layer, animation-frame, and cube-face export adapters now
prepare the same payload-bearing document snapshot and renderer-neutral upload
report helper plus pure face-PNG export report. Cube-face export writes those
prepare the same payload-bearing document snapshot and shared renderer export
readiness report. Cube-face export writes those
document/renderer-owned PNG bytes through a tested app-core write/publish
executor using the app-core-planned legacy face filenames when available and
falls back to retained `Canvas::export_cube_faces` on snapshot/write failure;
@@ -2523,13 +2521,11 @@ Results:
`pano_cli plan-canvas-document-snapshot` reports `ppiExport` readiness,
byte count, and dirty-face count for agent automation.
- Payload-complete canvas snapshot automation also crosses the renderer
boundary now: `pano_cli plan-canvas-document-snapshot` records the same
snapshot through the pure document-frame compositor and renderer-neutral
texture upload stream through `pp_paint_renderer::record_document_frame_upload`,
and encodes the composited active-frame cube faces as PNG bytes through
`pp_paint_renderer::export_document_frame_face_pngs`, so agents can validate
document/canvas payloads moving into renderer commands and image bytes before
live canvas export/save writer replacement.
boundary now: `pano_cli plan-canvas-document-snapshot` feeds the same snapshot
through `pp_paint_renderer::prepare_document_frame_export_readiness`, which
records the renderer-neutral active-frame texture upload stream and encodes
the composited active-frame cube faces as PNG bytes, so agents validate the
same document/canvas-to-renderer readiness report consumed by live export.
- Live image/collection/cube export adapters now prepare and log the same
document/canvas plus shared renderer-upload and face-PNG export readiness
reports. Cube-face export now writes the pure document/renderer PNG bytes to