- WP1: Hook allowlist (setKnownHooks, HOOK_POINTS catalog, dev-mode prefix rule)
- WP2: Failure visibility (result.failed, LOAD_FAILED status, getPluginsRuntimeState, /runtime route)
- WP3: Tenant registry (HookRegistryStore platform/tenant, ALS resolver, lazy load TTL/LRU, invalidateTenantPlugins)
- WP4: plugin_tenants + RBAC (V011 migration, FORCE RLS, activate/deactivate = vínculo por tenant, SUPER_ADMIN only, removed POST /install)
- WP5: Permissions catalog + timeout + CSS isolation (PLUGIN_PERMISSIONS, resolvePluginPermissionPolicy, SandboxConfig timeout, removed maxMemoryMb, wrapCallback for async hooks)
- WP6: Single manifest (readPluginManifest: manifest.json > package.json, strict mode, theme:head filter in rendering)
- WP7: PluginAPI (registerHook, addRoute, addContentField, getSetting/setSetting, getTenant/getUser, query, emit, lifecycle hooks) + Admin UI with tenant selector
- WP8: query(sql) + migrations runner (plugin_<name> schema, RLS, search_path, applyMigration with schema creation)
All 990 tests pass, typecheck ✓, lint ✓, build ✓.