Reference creatortrack blocks table missing workspace index

During a CreatorTrack perf audit (2026-07-10), a Fable backend agent found app.blocks had no index on workspace_id at all — the collab change-cursor query was sequential-scanning the app's biggest table twice per second per open tab. Fixed with migration 20260710T043725_...perf_change_cursor_indexes_nodes_blocks_ws_updated_at.sql adding (workspace_id, updated_at) on both app.nodes and app.blocks.

Why: connection pool is capped at max: 5; pre-fix load model predicted pool saturation around 30-40 concurrent tabs (50 users ≈ 115 txns/s). Post-fix SSE cursor cost collapsed to ~2 txns/s total per workspace regardless of tab count.

How to apply: when touching CreatorTrack's collab/SSE/presence layer, check this index exists before assuming query cost is fine; the migration must be applied with CONCURRENTLY on prod (documented in-file) since it wasn't run as part of deploy automation. Remaining known scaling risk: presence heartbeats still advance the same change cursor, forcing full refetches on every heartbeat when 2+ viewers share a page — flagged but not yet fixed. Long-term direction agreed: replace polling with Postgres LISTEN/NOTIFY when needed.

[auto-memory session 72d4a5df-480a-4e16-a6c5-5e5c85ebc18d, confidence 0.75, mode staged]