Brand layer
Resellers get a real four-level data model — not a workspace fake.
Every Tenant has a mandatory `brandId` foreign key. Brand-Owner role admins a Brand and every Tenant under it without ever seeing sibling Brands, even when they share the same VPS.
Per-Brand secrets vault (AES-256-GCM, scoped by `brandId`) means an LLM key leak on one Brand cannot bleed into another. Same primitive for OAuth client secrets, Slack tokens, Teams bot creds.
Brand offboarding is a 30-day soft-delete window with a one-click export of every audit row, tenant config, KB file, and secret reference.