# Plan: Settings Integrity and Controls Reorganization

## Objective
Create a single coherent configuration model for Security, Commands, and Tasks so UI labels, enforcement behavior, docs, and navigation all match actual runtime behavior.

## Current Integrity Findings

### 1) Scope Registry and Enforcement Are Out of Sync
- Gateway command routes enforce scopes that are not exposed in Fine-Grained Security Scopes:
  - `gateway.contacts`
  - `gateway.help`
  - `gateway.whoami`
- Fine-Grained Security Scopes currently expose only:
  - `gateway.tasks`, `gateway.approval`, `tasks.submit`, `tasks.commands`, `command.bp`, `command.codex`, `command.claude`
- Result: users cannot configure all enforced gateway capabilities from the UI.

### 2) “Require Trusted Fingerprint” Semantics Are Incorrect
- UI and labels imply trust-list based enforcement.
- Runtime policy enforcement checks `UserXmppOmemoState.latest_client_key` equality, not `UserXmppOmemoTrustedKey` trust records.
- Result: behavior is “match latest observed key,” not “require trusted fingerprint.”

### 3) Command Surfaces Are Split Across Inconsistent Places
- Command Routing UI create flow exposes command slugs: `bp`, `codex`.
- Runtime command engine auto-bootstraps `claude` profile and bindings.
- Security scopes include `command.claude`, but Command Routing create UI does not.
- Result: commands are partially configurable depending on entrypoint.

### 4) Task and Command Control Planes Interlock Implicitly, Not Explicitly
- Task settings contain provider approval routing (Codex/Claude approver service/identifier).
- Security permissions contain policy gates (`tasks.*`, `command.*`, `gateway.*`).
- Command Routing controls profile/binding/variant policy.
- These are tightly coupled but not represented as one layered model in UI/docs.

### 5) Settings Shell Coverage Is Incomplete
- Shared settings hierarchy nav is context-processor driven and route-name based.
- Settings routes missing from modules/general/security group coverage include:
  - `codex_settings`
  - `codex_approval`
  - `translation_preview`
- Result: some settings pages can miss expected local tabs/title context.

### 6) Documentation Drift
- Undocumented or under-documented features now in production behavior:
  - Fine-Grained Security Scopes + Global Scope Override
  - OMEMO trust management and per-direction encryption toggles
  - Business Plan Inbox under Settings Modules
- Potentially misleading documentation:
  - Security wording implies trusted-key enforcement that is not implemented.

## Reorganization Principles
1. One capability registry, reused by:
   - Security Permissions UI
   - command/task/gateway dispatch
   - documentation generation
2. One settings-shell contract for every `/settings/*` page:
   - title
   - category tabs
   - breadcrumb
3. Explicit layered model:
   - Layer A: transport encryption/security
   - Layer B: capability permissions (scope policy)
   - Layer C: feature configuration (tasks/commands/providers)
4. No hardcoded duplicated scope lists in multiple files.

## Target Information Architecture

### Security
- `Encryption`: OMEMO transport controls + trust management.
- `Permissions`: Fine-Grained Security Scopes (capability policy only).
- `2FA`: account factor settings.

### Modules
- `Commands`: command profiles, bindings, variant policies.
- `Tasks`: extraction/defaults/overrides/provider pipelines.
- `Translation`: translation bridge settings.
- `Availability`: adapter availability controls.
- `Business Plans`: inbox/editor for generated artifacts.

### General
- `Notifications`
- `System`
- `Accessibility`

### AI
- `Models`
- `Traces`

## Phased Execution Plan

## Phase 1: Canonical Capability Registry
1. Add a central capability registry module (single source of truth):
   - key
   - label
   - description
   - group (`gateway`, `tasks`, `commands`, `agentic`, etc.)
   - owning feature page URL
2. Migrate SecurityPage scope rendering to this registry.
3. Migrate gateway/command/task dispatchers to reference registry keys.
4. Add automated integrity test:
   - every enforced scope key must exist in registry
   - every registry key marked user-configurable must appear in Permissions UI

## Phase 2: Trusted Key Enforcement Correction
1. Define authoritative trust policy behavior:
   - `require_trusted_fingerprint` must validate against `UserXmppOmemoTrustedKey`.
2. Preserve backwards compatibility via migration path:
   - existing latest-key behavior can be temporarily represented as an optional fallback mode.
3. Update labels/help to match exact behavior.
4. Add tests:
   - trusted key allows
   - untrusted key denies
   - unknown key denies

## Phase 3: Commands/Tasks Control Plane Alignment
1. Unify command surface definitions:
   - Command Routing create/edit options include all supported command slugs (`bp`, `codex`, `claude`).
2. Add explicit cross-links:
   - Tasks settings references Command Routing and Permissions scopes directly.
   - Command Routing references Permissions scopes affecting each profile.
3. Introduce capability-impact preview panel:
   - for each command/task action, show effective allow/deny by scope and channel.

## Phase 4: Settings Shell Normalization
1. Replace route-name allowlists in `settings_hierarchy_nav` with category mapping table.
2. Ensure all `/settings/*` pages declare category + tab metadata.
3. Include missing routes (`codex_settings`, `codex_approval`, `translation_preview`) in shell.
4. Add test to fail when a `/settings/*` route lacks shell metadata.

## Phase 5: Documentation Synchronization
1. Add a settings matrix doc generated (or validated) from the capability registry:
   - capability key
   - UI location
   - enforced by code path
2. Update `README.md` and `INSTALL.md` security/modules sections.
3. Add "policy semantics" section clarifying:
   - encryption-required vs per-scope OMEMO requirements
   - trusted key behavior
   - global override precedence

## Acceptance Criteria
- Every enforced scope is user-visible/configurable (or intentionally internal and documented).
- “Require Trusted Fingerprint” enforcement uses trust records, not only latest observed key.
- Command Routing and runtime-supported command slugs are aligned.
- All `/settings/*` pages show consistent settings shell navigation.
- Security/tasks/commands docs reflect real behavior and pass integrity checks.

## Risks and Mitigations
- Risk: policy behavior change blocks existing workflows.
  - Mitigation: add compatibility flag and staged rollout.
- Risk: registry migration introduces missing scope mappings.
  - Mitigation: integrity test that compares runtime-enforced keys vs registry.
- Risk: UI complexity increase.
  - Mitigation: keep layered model with concise, context-aware summaries.

## Implementation Notes
- Keep migration incremental; avoid big-bang rewrite.
- Prioritize Phase 1 + Phase 2 first, because they are correctness and security semantics issues.
- Do not add new transport-specific branches; keep service-agnostic evaluation path in policy engine.
