Sub-issue of #406 (umbrella: showcase workspace completion — the forecastlab control story). Foundation — blocks Epics #408, #409, #410, #411, #412.
Purpose
Workspace metadata & provenance backbone: one Alembic migration extending showcase_workspace with lifecycle + provenance columns (replayed_from_workspace_id, archived, pinned, notes, tags, config_schema_version) and documented JSONB story slots (seed_overrides, user_scope, approval_events, rag_events, job_ids, phase_summaries), plus a PATCH /demo/workspaces/{id} lifecycle endpoint (rename/notes/tags/archive/pin) and Pydantic schema surface. Replay writes replayed_from_workspace_id. Every Parallel epic writes into or reads from this surface, so it ships first. All changes additive; migration applies + downgrades cleanly on a fresh DB.
Sub-tasks
To be decomposed via issue-to-subtasks when this epic is picked up.
Purpose
Workspace metadata & provenance backbone: one Alembic migration extending
showcase_workspacewith lifecycle + provenance columns (replayed_from_workspace_id,archived,pinned,notes,tags,config_schema_version) and documented JSONB story slots (seed_overrides,user_scope,approval_events,rag_events,job_ids,phase_summaries), plus aPATCH /demo/workspaces/{id}lifecycle endpoint (rename/notes/tags/archive/pin) and Pydantic schema surface. Replay writesreplayed_from_workspace_id. Every Parallel epic writes into or reads from this surface, so it ships first. All changes additive; migration applies + downgrades cleanly on a fresh DB.Sub-tasks
To be decomposed via
issue-to-subtaskswhen this epic is picked up.