Sub-issue of #389 (umbrella: showcase workspace — preserve, restore, and replay showcase runs). Foundation — blocks Epics #391, #392, #393.
Purpose
Workspace persistence backbone: showcase_workspace table (new app/features/demo/models.py, batch-slice precedent) + Alembic migration + additive Optional preservation/workspace fields on DemoRunRequest (HTTP + WS start frame, byte-compatible for legacy clients) + the pipeline records created run_ids, scenario_ids, batch_id, aliases, and artifact paths into the workspace row.
Sub-tasks
To be decomposed via issue-to-subtasks when this epic is picked up.
Purpose
Workspace persistence backbone:
showcase_workspacetable (newapp/features/demo/models.py, batch-slice precedent) + Alembic migration + additive Optionalpreservation/workspacefields onDemoRunRequest(HTTP + WS start frame, byte-compatible for legacy clients) + the pipeline records created run_ids, scenario_ids, batch_id, aliases, and artifact paths into the workspace row.Sub-tasks
To be decomposed via
issue-to-subtaskswhen this epic is picked up.