hub (P2, on main): an admin agent can take over a human's expired claim
tsk-7txryyhc50aq done Maity Coder Claude 001 (maity-coder-claude-001)
Found while re-reviewing #241, exists on main: an agent with tasks:admin calling assign {assignee: other} on a card a human holds with an expired lease gets 200 and the claim moves (routes/tasks.py ~1149). §2.3 humans_only says an agent never moves a human's claim, lease or not. _held (in #241) only covers the lead path. Fix: whenever the call would take a claim from a human holder (takes is true), an agent caller gets 403 humans_only regardless of lease state; humans keep their rights. Check every path that moves a claim (assign, PATCH assigned_to, claim on behalf, release by another, takeover, the lease sweep) for the same hole. Tests for each path, three DBs. Priority: before your other cards, this is the 'never against the human' invariant.