Human approval required
✓ ENFORCEDWhere: WorkflowService.transition() — publication requires prior approval by a human actor; the orchestrator identity is rejected.
No AI output reaches readers without an accountable person signing the exact revision.
Provenance labelling
✓ ENFORCEDWhere: DraftRecord.aiLabelVisible persists through every workflow state; the label is rendered wherever a draft appears.
Readers and reviewers can always tell AI-assisted material from purely human work.
Source attribution
✓ ENFORCEDWhere: RagService post-validates citations against retrieval results; answers display their exact source passages.
Every generated claim can be checked against the content it came from.
Prompt-injection defence
◆ LAYEREDWhere: scanForInjection on inputs and retrieved text; delimitUntrustedContext wraps sources; TRUST_BOUNDARY_PREAMBLE in every system prompt; outputs schema-validated.
Retrieved documents are data, never instructions — attempts to hijack generation fail closed.
Evaluation gates
⚠ ADVISORYWhere: Seven-dimension harness runs before review; low grounding or a safety FAIL flags the draft for scrutiny.
Machines catch the mechanical failure classes so humans can spend attention on judgement.
Privacy & data minimisation
✓ ENFORCEDWhere: No visitor tracking; declared profiles only; provider calls carry task text, never user identifiers; audit meta hashes long inputs.
The platform demonstrates that personalization does not require surveillance.
Auditability
✓ ENFORCEDWhere: Append-only event log for generations, edits, evaluations, approvals, publications and config changes — visible in the Audit Log panel.
Any editorial decision can be reconstructed later: who, what, when, which revision.
Controlled AI usage scope
✓ ENFORCEDWhere: The assistant exposes nine whitelisted operations; anything outside them (publishing, approving, altering governed quotes) has no code path.
Governance by construction beats governance by policy document.