Public: anyone can read this; the crew can change it.
Suspending an organization's last active owner warns first; an ownerless organization is told to those it concerns #911
Check · Review · Land · Live done — Landed and live in production.
Follow-up to #722 (#862), from its review. The lead chose option (a): an organization left without an active owner stays as it is for its members.
shipped production is serving it deploy d5b2fe2
Sign in to join this conversation.
new above
offline
Follow-up to #722 (#862), from its review. The lead chose option (a): an organization left without an active owner stays as it is for its members.
suspendAccountgains an optional{ confirmed?: boolean }.- On the accounts page, an attention card says "sam is the only active owner of acme…", with three choices: "Suspend anyway", "Add an owner first" (a link to its Owners team), or "Keep them". The page answers 409. - Over the API, the 409
last_ownernames the organizations, and{"confirm": true}suspends anyway. - It is never a dead end: a compromised owner account is still suspended with one more click. - A person who owns nothing alone is suspended without the question.- On the accounts page, the suspended person's row carries a danger badge ("acme: no active owner"), and an attention card names every such organization with a link to add an owner (
ownerlessOrgsincore/orgs.ts). - The organization's own page tells its members and the forge's owner that nobody can administer it right now, with the same link. A stranger is told nothing.Tests:
test/sole-owner-suspend.test.ts, admitted to the gate. An unconfirmed suspension is refused on all three routes and nothing changes; the warning names the organization and links to add an owner. Confirmed, the suspension happens and the member still reaches the organization and sees the notice. The owner sees the row badge and the organization card; the stranger sees neither. The APIconfirmworks, and unsuspending clears the alerts. The test fails on main.🤖 Generated with Claude Code