Route live save snapshots through PPI policy

This commit is contained in:
2026-06-06 11:43:50 +02:00
parent 772dc7332b
commit 9d9b93abb1
8 changed files with 148 additions and 23 deletions

View File

@@ -283,10 +283,11 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
state toward `pp_document::CanvasDocument`, including dimensions, active
layer/frame, layer visibility/opacity/alpha/blend metadata, frame durations,
captured RGBA8 face payloads, and remaining renderer payload-readback counts,
plus the save-readiness report now consumed before retained live saves. For
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
plus the save-readiness and save-writer route reports now consumed before
retained live saves. For 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 shared `pp_paint_renderer`
export-readiness report, reporting texture, transition, command, byte, and
active-frame payload counts in `rendererUpload` JSON plus `facePngExport`
@@ -1172,8 +1173,10 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
route through this bridge before reaching legacy project-save execution,
overwrite prompts, document field updates, title updates, and keyboard/dialog
cleanup. Existing Save, Save As, Save Version, and save-before-workflow
prepare and log a payload-bearing canvas document snapshot report before
delegating to retained `Canvas::project_save`. Retained legacy UI/canvas
prepare and log a payload-bearing canvas document snapshot report, run the
app-core pure PPI save-writer route for payload-complete snapshots, and log
generated byte counts before delegating to retained `Canvas::project_save`.
Retained legacy UI/canvas
execution and actual live save serialization remain tracked by `DEBT-0040`,
`DEBT-0041`, and `DEBT-0042`; the pure snapshot-to-PPI export handoff is
already validated in `pp_app_core_document_canvas_tests` and

View File

@@ -524,8 +524,16 @@ agent or engineer to remove them without reconstructing context from chat.
Save, Save As, Save Version, and save-before-workflow now prepare a
payload-bearing canvas document snapshot plus `pp_app_core` save-readiness
report before delegating to retained `Canvas::project_save`. The retained
writer still owns PPI serialization, progress/threading, and compatibility
quirks, so pure writer replacement remains open.
writer still owned PPI serialization, progress/threading, and compatibility
quirks, so pure writer replacement remained open.
- 2026-06-06: DEBT-0010/DEBT-0013/DEBT-0040/DEBT-0042 were narrowed again.
`pp_app_core` now owns a tested save-writer route policy for canvas snapshots,
`pano_cli plan-canvas-document-snapshot` emits that route as JSON, and live
Save, Save As, Save Version, and save-before-workflow run the pure PPI
exporter for payload-complete snapshots and log byte counts before retained
`Canvas::project_save` continues. The retained writer still owns actual save
serialization, app metadata mutation, progress/threading, and compatibility
quirks.
- 2026-06-05: DEBT-0010/DEBT-0013 were narrowed again. `pp_app_core` now
exports payload-complete or metadata-only canvas document snapshots through
the pure `pp_document` PPI writer and rejects snapshots that still require

View File

@@ -699,11 +699,13 @@ now builds the same metadata snapshot from live `Canvas` state and has an
opt-in dirty-face payload snapshot path backed by retained `Layer::snapshot()`
readback. Live Save, Save As, Save Version, and save-before-workflow paths now
prepare and log a payload-completeness report from that snapshot before
delegating to retained `Canvas::project_save`; the app-core snapshot boundary
also has a tested pure PPI export helper, and
delegating to retained `Canvas::project_save`; payload-complete live save
snapshots also run the tested pure PPI exporter and log the app-core
save-writer route/byte count before retained save continues. 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 shared
snapshots and reports generated byte/dirty-face summaries plus the same
save-writer route JSON. The same automation 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
@@ -2292,13 +2294,16 @@ Results:
automation.
- Live Save, Save As, Save Version, and save-before-workflow execution now
prepare a payload-bearing canvas document snapshot and save-readiness report
through `src/legacy_document_session_services.*` before delegating to the
retained `Canvas::project_save` writer, keeping behavior stable while moving
the app path onto the document/canvas boundary.
through `src/legacy_document_session_services.*`; payload-complete snapshots
now run the pure PPI exporter and log the app-core save-writer route/byte
count before delegating to the retained `Canvas::project_save` writer,
keeping behavior stable while moving the app path onto the document/canvas
boundary.
- `pano_cli plan-canvas-document-snapshot` now emits the same save-readiness
report (`payloadComplete` and `canExportPpi`) used by the live save bridge,
and payload-complete snapshots now run the pure `pp_document` PPI exporter
and decoded-project summary before emitting `ppiExport` JSON.
the same save-writer route, and payload-complete snapshots now run the pure
`pp_document` PPI exporter and decoded-project summary before emitting
`ppiExport` JSON.
- The same payload-complete snapshot automation now uploads the active document
frame through `pp_paint_renderer::upload_document_frame_faces` and the
`RecordingRenderDevice`, emitting `rendererUpload` JSON with texture,