cliOnlyJustifications top-level constant

Map<SharedSetting, String> const cliOnlyJustifications

User-readable justifications for the cliOnlySettings exemptions.

The app renders these in its "CLI-only settings" section (issue #288 AC4): where the app would naturally list a related setting, the CLI-only entry shows the marker + reason — never a silent absence. E3 discipline: the reason names the missing capability, not "didn't get to it".

Implementation

const cliOnlyJustifications = <SharedSetting, String>{
  SharedSetting.mcpServers:
      'MCP servers spawn external processes on the host; the app cannot '
      'start them from its sandbox. Configure them in the CLI.',
  SharedSetting.ttsrRules:
      'Time-traveling stream rules watch every raw streaming delta to abort '
      'mid-turn; the app chat surface has no per-delta hook for them.',
  SharedSetting.cubeSandbox:
      'fa_cube sandbox profiles need host-process sandboxing and a host '
      'shell; the app runs WASI/memory-confined (or in a browser with no '
      'shell at all).',
  SharedSetting.promptOverrides:
      'The app ships its prompt templates compiled in; runtime prompt '
      'overrides are a CLI config-file feature.',
  SharedSetting.redactionPolicy:
      'The redaction pipeline runs inside the CLI host process with its '
      'registered secrets in memory; the app reads the section but has no '
      'pipeline to re-toggle live. Configure it in the CLI (issue #391).',
  SharedSetting.imageRegistry:
      'The image registry is process-wide state inside the CLI host agent '
      'loop (the request-build rewrite reads a global published at boot); '
      'the app composes its own requests and consumes the section '
      'read-only. Configure it in the CLI (issue #395).',
  SharedSetting.sleepPrevention:
      'The sleep-prevention assertion lifecycle (run-start/settle and '
      'session-open/close hooks) runs inside the CLI host process; the '
      'app\'s power_guard reads the section but has no controller to '
      're-arm live. Configure it in the CLI (issue #397).',
  SharedSetting.contextWindowCap:
      'The context cap feeds the CLI agent loop and compaction math '
      'running in the CLI host process; the app has no agent loop to '
      're-cap live. Configure it in the CLI (issue #394).',
  SharedSetting.loadMode:
      'The load preset curates the CLI agent loop\'s tool schema live '
      '(the availability gate + discover_tools, issue #680); the app '
      'composes its own per-surface tool sets and has no gate to re-apply '
      'a preset to. Configure it in the CLI (issue #680).',
  SharedSetting.agentMode:
      'Agent modes are CLI REPL prompt presets; the app composes its own '
      'prompts per surface and has no mode presets to switch.',
  SharedSetting.memoryStores:
      'Memory store locations are host filesystem paths; the app sandbox '
      'resolves them read-only and cannot re-point the CLI at new paths.',
  SharedSetting.tuiTheme:
      'The TUI palette colors a terminal emulator; the app themes through '
      'its own Flutter theming stack (separate system by design).',
  SharedSetting.resiliencePolicy:
      'The watchdog timeouts and retry policy govern the CLI host '
      'process\'s provider connections; the app has no process-wide '
      'override or roles resolver to re-arm. Configure them in the CLI '
      '(issue #393).',
  SharedSetting.spillHooks:
      'Spill hooks run inside the CLI host process\'s agent loop (result '
      '→ redact → size check → spill → preview, issue #678); the app has '
      'no hook chain to attach to. Configure the section in the file.',
  SharedSetting.harnessMode:
      'The harness benchmark mode presets the CLI REPL boot (the 4-tool '
      'surface and bare prompt of `fa --pi`, issue #679); the app has no '
      'fa benchmark runner. Configure it in the CLI.',
};