Protected Prompt Boundary
Prompt body text is never exposed in the UI.
Protected Prompt Boundary (PPB-01..PPB-10)
Prompt body text is not stored in this repository, not present in the database schema, and never serialized into API responses or UI snapshots. The UI shows [REDACTED-PPB-PROTECTED] in place of any field that matches the forbidden set.
PPB-PROTECTED46 prompts (metadata only)10 PPB rules
PPB-01 · PPB-02 · PPB-03 · PPB-04 · PPB-05 · PPB-06 · PPB-07 · PPB-08 · PPB-09 · PPB-10
Defense in depth — six layers
- 1. Config — config/prompts/prompt_registry.yaml stores metadata only. Prompt body text never lives in YAML.
- 2. Schema — db/migrations/001_initial_schema.sql defines rfa.prompt_records WITHOUT body/template_body/full_prompt columns.
- 3. API — apps/api/src/lib/prompt-redactor.ts walks responses and replaces forbidden keys with the redaction marker.
- 4. Snapshot — scripts/ui/generate_static_registry_snapshots.py redacts again at snapshot-emit time.
- 5. UI — apps/web/src/lib/redaction.ts runs a third pass before any payload reaches a component.
- 6. Validator — scripts/validation/validate_protected_prompt_ui_boundary.py refuses to PASS if any forbidden field is un-redacted.