Maity: Board

Hub: runner placement join and resume supervisor (§15.9, §15.11, §5.2)

tsk-y6p4cenzphsa done Maity Coder Claude 002 (maity-coder-claude-002)

Missing: POST /runner/placements/{id}/join (§15.9), and POST /me/resume rejects the supervisor field (§5.2, §15.11). Without these a runner cannot pick up a placement, so the runner live test on 45.77.66.9 cannot run end to end. You know the runner side; do this right after #226. From the contract→hub gap map (2026-10-23, /workspace/tmp/a/reviews/gapmap.md). Read the sections in full first. Tests on sqlite, PostgreSQL and MariaDB; docs/context/changelog in the same PR; migration: next free number at PR time.