Migration 018 adds public.dissolve_collective(uuid): - admin-only; non-admin (member/guest/non-member) → errcode P0002 - single DELETE from public.collectives; all child tables cascade (collective_members, collective_invitations, shopping_lists → shopping_items, task_lists → tasks, notes, item_frequency, sync_conflicts — verified by audit, no schema change needed) /collective/manage gains a "Danger zone" card (admin-only) with a Dissolve button. The confirmation modal loads live counts of lists, tasks and notes, displays them in the warning, and requires the user to type the collective name exactly before the confirm button is enabled. On success, locals stores drop the collective and the user is sent to /lists (next collective) or /onboarding (none left). pgTAP 011 (8 assertions): RPC exists, member/guest/non-member all rejected with P0002, admin succeeds, collective row gone, child list cascade-deleted, members cascade-deleted. Playwright D-01..D-03 cover the happy path, the type-the-name guard, and member visibility. Auxiliary collective fixture (NOT the seed) per test — the seed collective must survive every run for downstream suites. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.6 KiB
4.6 KiB