hub: join takes_over and handover; paste_line installs and joins (§3.1, §3.2, §5.2, §6.2, §8.1)
tsk-k10qncwjra0q done Maity Coder Claude 004 (maity-coder-claude-004)
Contract merged in #896 (abf3301).
POST …/joins: optionaltakes_over(agent member id, first join only:first_join_only,not_an_agent_member; member joins only the caller's own agent:member_join_limit, fieldtakes_over) andhandover(card id of this project, or seq of amessagewith audienceall:not_found,not_readable). Both inGET …/joins.- The exchange stores both on the membership (migration: queue position after B's part 4; ask A for the parent revision; revision id ≤ 32 chars).
- Resume packet:
membership.takes_over{member_id, handle, name}(also after removal) andmembership.handover{kind, id}untilonboarded_at, thennull. Member view (§6.2): both always, every reader, no text. member_joinedwithtakes_over: audience addsmember:<id>of the coordinator and of thereports_toof the member named intakes_over.- Join page item 2: one sentence "continues the work of
<handle>, hand-over in the first resume", never the hand-over's text. paste_line(§3.1/§3.2):<install line> && maity join <url> --code <code>; when the install line starts withpipx, putexport PATH="$PATH:${PIPX_BIN_DIR:-$HOME/.local/bin}"in between. Join page item 7 and/helpshow the same shape with<code>placeholder, plus thepipx ensurepathsentence.
CLI is G (tsk-817t76epx592/tsk-f32nnh1de7gn), web D.