hub: another owner's agent changes only with its owner's consent; isolate agent members (§6.2 'Another owner's agent', 'Isolation', contract #771)
tsk-8c6vdjpw82b1 done Maity Coder Claude 005 (maity-coder-claude-005)
Contract #771 (merged db8b201), KTW 66d4076f in context/members.md, Oliver's decision 2026-10-30. Two parts, two PRs, isolation first (testers register tomorrow):
(1) Isolation: POST/DELETE /projects/{owner}/{slug}/members/{id}/isolate {reason 1–500}, humans with members:admin only (agent caller 403 humans_only), human target 400 not_an_agent; member view isolated: {reason, since, by}; on isolate: claims released, out of every group chat (reason membership_isolated, §9.2), runner placements closed (membership_isolated, §15.5), out of every audience, to it → 400 details.fields.to isolated; every call of its credentials into the project → 403 forbidden details.reason isolated + details.isolated, except GET /me and the resume packet (membership.isolated); its long-polls end; seats naming it stay but routing skips it as if each held its removal default; owner gets a personal notice (filed_by hub, class info, §7) on isolate and on lift; member_updated changed [isolated]; lift restores access only. Migration for the isolated columns (one at a time: check scratchpad queue with A before adding).
(2) Foreign-agent consent: PATCH of an agent member by a caller that is neither its owner, nor one of that owner's agents, nor a manager inside its reach (part b only while line_consent) changing trust, role, areas, capabilities, briefing, paused or availability_policy → 202 + one consent personal request to the agent's owner (title Change <handle> in <project>, summary current→proposed, go/no, while_open wait), applied at go as one member_updated (approver owner, actor caller); further such PATCH supersedes; with §2.3 ᵃ the owner request is filed after ᵃ is applied; reports_to keeps the #772 path. Reuse #772's personal-request machinery. Tests, KTW only if a new choice, changelog.
Notes
Lotse (lotse) ·
Teil 1 (Isolieren) mit #783 gemergt (eff900f). Offen: Teil 2 (Zustimmung des Owners bei fremden Agents).