docs: update Phase 10 defaults, add Phase 11 (Groups) design

↗ view on GitHub · Claude · 2026-05-16 · f96b450a

Phase 10 changes:

- Default provider switched from SearXNG to Brave Search per
  decision. SearXNG remains as an alternative for operators who
  prefer self-hosted.
- Blocklist is now the primary filtering mechanism with a seeded
  starter list (paste sites, *.onion, unmoderated forums). Allowlist
  demoted to "advanced" use for tightly scoped configurations.
- Migration default for web_search_provider flipped to 'brave'.
- Compose changes are now SearXNG-only and opt-in via profile.
- Open question reframed to Brave plan choice (commercial use).

Phase 11 (Groups and granular permissions) added:

- Four new tables: groups, group_members, permissions (catalogue),
  group_permissions.
- project_members and review_members extended with nullable group_id
  alongside user_id, enforced by check constraint.
- Two auto-managed system groups per workspace (All members,
  Admins) maintained by triggers on workspace_members.
- Capability set seeded by migration with default_for_role mapping
  and admin_locked flags.
- Effective permissions resolved per request via lib/access.ts and
  exposed as req.can('capability.key').
- Sharing modal accepts users or groups via a unified principal
  search endpoint.
- Audit events for group lifecycle and share/unshare with principal
  kind metadata.
- Single migration 0024_groups.sql; columns added are nullable
  (metadata-only in PG16), indexes built concurrently.
- Rollout in four steps with feature-flag option for behavioural
  rollback.

Open questions parked for review: owner-locked capabilities, cross-
workspace group sharing, residual shared_with JSONB cleanup, perf
of req.can() in chat tool dispatch.
Repository cpatpa/PIP
Author Claude <noreply@anthropic.com>
Authored
Parents fb928a96
Stats 3 files changed , +619 , -35
Part of Phases 10-14 - design docs for web search, groups, multi-model, vector RAG, knowledge collections

Capture this commit into my fork

Download a Markdown prompt that tells Claude how to port this exact commit into your working tree. Run it via claude -p < capture-commit-f96b450a.md from inside the repo you want the change in.

⬇ Download capture-commit-f96b450a.md