LumiBaseDocs

System Collections & Sensitive Access Contract

Decision date: 2026-06-03.

This document is the contract for system permission seeding, Permission Builder grouping, access import/export, and security review when new system tables are added.

Source: packages/database/src/schema/*.

Principles

  1. System collections are not normal content collections by default.
  2. Public policy must not grant system collections unless explicit and reviewed.
  3. Sensitive collections are hidden from non-admin users in Permission Builder.
  4. Permission Builder must group system collections so admins can understand blast radius.
  5. New system tables must be classified here before production seeding.
  6. Tables containing secrets, hashes, tokens, audit trails, or security state are admin/security-only.

Standard Seed Policy Keys

Policy keyPurpose
policy_adminAdmin bypass, app access, enforce TFA.
policy_access_managerManage roles, policies, permissions, user-role/user-policy bindings.
policy_schema_managerManage collections, fields, relations, materialized collections.
policy_user_managerManage users, teams, membership, notifications where needed.
policy_security_managerRead audit/security logs, manage lockout/recovery/SCIM/API keys.
policy_automation_managerManage flows, operations, webhooks, CDC pipelines.
policy_extension_managerInstall/enable/configure/grant capabilities for extensions.
policy_ai_managerManage AI approvals/conversations/embeddings where enabled.
policy_studio_selfStudio user can read/update own profile, notifications, presets.
policy_publicNo app access; only explicit public content grants.

Current Classification

UI groupCollectionsPermission Builder visibilityDefault seedNotes
Tenant rootsitesAdmin onlypolicy_adminInstance/site metadata.
Identityusers, user_sites, user_roles, teams, team_members, notificationsAccess/User managerpolicy_user_manager, policy_studio_selfSelf policy is scoped to own profile/notifications/presets.
Access controlroles, policies, role_policies, user_policies, permissionsAccess managerpolicy_access_managerChanges can open the whole site; always audit.
Schema buildercollections, fields, relations, materialized_collectionsSchema managerpolicy_schema_managerData model management; not ordinary editor access.
Content storeitems, pages, revisions, activityPer content rolePer project/roleitems/pages are content; revisions/activity should be read-only except admin.
Files & assetsfolders, filesPer content role / asset managerPer project/roleFile metadata can include PII; public must be explicit.
UX statepresets, translations, settingsStudio/self + managerpolicy_studio_self, manager policiessettings is config-sensitive.
Automationflows, flow_runs, operations, webhooksAutomation managerpolicy_automation_managerWebhook secret/header data is sensitive.
ExtensionsextensionsExtension managerpolicy_extension_managerCapability grants/install/enable/delete are privileged.
Translation memorytranslation_memory, glossaryTranslation managerDedicated translation policyMay contain internal content; not public by default.
AIai_approvals, ai_conversations, ai_messages, ai_embeddingsAI manager / owner-scopedpolicy_ai_managerConversations/messages can contain PII/secrets.
CDCcdc_pipelines, cdc_pipeline_health, cdc_deploymentsAutomation/ops managerAutomation or ops policyPipeline connection/env config is sensitive.
Security sensitivesystem_state, audit_log, login_attempts, login_baselines, admin_backup_codes, scim_tokensHidden for non-adminpolicy_admin, policy_security_managerNever public; no plaintext secrets in export.

Sensitive Collections Hard Rule

Sensitive/admin-only collections:

txt
system_state
audit_log
login_attempts
login_baselines
admin_backup_codes
scim_tokens

Future sensitive collections:

txt
api_keys
api_key_roles
api_key_policies
shares
extension_access_policies

Rules:

  • Hide from non-admin users in Permission Builder.
  • Seed only for policy_admin or dedicated manager policies.
  • Import/export must not include plaintext secrets or token material.
  • Security manager read access must be read-only and field-masked where needed.

Future Virtual/System Access Targets

These targets may not be direct DB tables but must appear in Permission Builder:

TargetPurpose
extension_modulesVisibility for extension modules in Module Bar.
extension_endpointsCalling extension endpoints.
extension_operationsRunning extension operations/flow nodes.
api_keysAPI key lifecycle management.
sharesShare link management.
admin_securityUnlock user, unblock IP, recovery/audit security actions.

Minimum Seed

Minimum local/staging/prod seed:

  1. role_administrator + policy_admin.
  2. policy_access_manager.
  3. policy_schema_manager.
  4. policy_studio_self.
  5. policy_public empty or only explicit public content.

Never seed:

  • public read-all content;
  • public system collections;
  • plaintext API/static token;
  • non-admin writes into access/security collections.

Checklist For New System Collections

  1. Add the collection to this classification table.
  2. Choose seed policy owner.
  3. Decide if it is hidden from non-admin users.
  4. Decide if import/export must mask secrets.
  5. Add a test that public policy cannot read it if sensitive.
Last modified: 23/07/2026