Status: SCOPING DRAFT—NOT YET ACTIVE. Source list not yet handed over; this doc defines the structure + enforcement boundary. Pierce-owned; engagement with B2C content lead + content team lead pending. Visibility: NON-PUBLIC. This file lives in csa-content-standards (private repo, CF Access gated). Do not publish, link from public surfaces, or surface in stakeholder presentations. Names ≠ accusations; the list exists because Legal said so and is treated as a legal-compliance artifact.
There is a known list (~7 pages, surfaced 2026-05-12 by both National and B2C content leads independently) of individuals McClatchy outlets are not allowed to write about. The list is legal/risk-driven (defamation history, settlement terms, litigation exposure). Two examples cited in the surfacing conversation: Oprah Winfrey, Tom Cruise. The remaining ~7 pages are unknown to me at the time of writing.
Today the list lives only in a small group’s heads—described as “literally like seven pages long” and “no one has that list except for like five people on purpose.” That means:
docs/insights-agent-endpoint-audit-2026-05-14.md) is a new ingestion vector that will need to honor the list.The B2C content lead and the National content team lead both said, on 2026-05-12: “we should probably put that in the CSA.”
This doc establishes the home + the enforcement mechanism. The actual list-content lands in a separate non-committed surface (see §3).
Applies to:
Does NOT apply to:
Two-stage gate. Both stages must pass before CSA produces any variant for a piece.
Run at the boundary where a content unit enters CSA, before any variant generation.
aliases field (see §3 schema)."Subject [REDACTED] is on the restricted-individuals list. Content cannot be generated. Contact Legal.". No variant generation. No partial output.csa_restricted_individuals_audit in MCC_PRESENTATION.CONTENT_SCALING_AGENT—schema TBD with data team). Fields: timestamp, operator_id, restricted_id (the list-entry primary key, NOT the name), match_method, source_url_or_id, action_taken=blocked. Names of restricted individuals do NOT appear in the audit table—only opaque IDs.Run again at the post-generation / pre-publish boundary, against the GENERATED variants. This catches the edge case where the source-text doesn’t mention a restricted name but CSA’s training data introduces one (e.g., LLM mentions Oprah in an unrelated comparison).
action_taken=variant_blocked.No operator override path. No “publish anyway” button. This is the only governance rule in csa-content-standards that does not allow editorial override. Reason: the list exists because Legal said so, and editorial discretion is not the relevant authority for whether legal-risk content publishes. If an operator believes a hard-block is in error (false-positive match), the path is to escalate to Legal + the list-owner group, not to override at the tool level.
The list itself is NOT committed to this repo or any other. It lives in a separate location with separate access controls.
- id: ri-001 # opaque primary key; reference target for all audit logs + rule lookups
added_date: 2024-03-15 # for retention / review-cycle audits
added_by: legal # who put it on the list (role bucket only—no names)
match_strings:
- "Oprah Winfrey"
- "Oprah" # short-form match
aliases: [] # additional spellings, nicknames, common misspellings
category: legal-defamation-history # or: legal-settlement-terms, legal-litigation-active, etc.
review_date: 2026-03-15 # when this entry is re-evaluated by Legal
notes_field_pointer: null # if context notes exist, point to off-repo doc location—do NOT inline
- id: ri-002
...
Three candidates:
MCC_PRESENTATION.CONTENT_SCALING_AGENT (or a stricter access-controlled schema) with SELECT restricted to the CSA backend service account + a small admin group. Pros: queryable from CSA at intake, no file to leak. Cons: data-team admin grants required; provisioning timeline.csa-restricted-list) with stricter access controls than csa-content-standards itself. Encrypted-at-rest via age or sops; decrypted by CSA backend at boot. Pros: file-based, version-controlled, smaller blast radius if access controls fail. Cons: file leak risk if any operator clones the repo.Recommendation: Option 1 (DB table) once data-team provisioning lands. Option 2 as interim. Option 3 is over-engineered for ~7 pages of strings.
This rule integrates with the existing csa-content-standards stack:
| Existing rule | Interaction |
|---|---|
| §11 Layered Enforcement contract | Restricted-individuals scrub runs at the constitution layer (Layer 0, system-wide, inviolable)—before any voice/format/style layer is consulted. Hard-block precedes all other validation. |
docs/ai-content-vetting.md v1.9.11 |
Gate 3 (plagiarism + AI-content detection) runs alongside this scrub at intake. The two are independent gates; either failing blocks the same piece. |
docs/bridge-content-rules.md |
Bridge variants from non-restricted source pieces remain in scope; bridge-variant generation gets the same intake + pre-publish scrub. |
docs/insights-agent-endpoint-audit-2026-05-14.md |
Pre-activation requirement #8 in that audit (“Restricted-individuals scrub”) points here. This doc establishes the home; the audit doc points the endpoint at it. |
Before this rule activates, the following need answers from the source-of-truth group (Legal + the ~5 people who hold the current list):
review_date field anticipates this—but we need to know if entries get hard-removed or soft-tombstoned for audit history.When the list-owner group hands over the source content:
docs/insights-agent-endpoint-audit-2026-05-14.md pre-activation requirement #8 to point at this doc + mark it satisfied.Surfaced: 2026-05-12 (Insights Agent demo, captured 2026-05-14 intake). Owner: Pierce (scoping) + content team leads + Legal (source). Status: Scoping complete. Awaiting Pierce + content team conversation re. who currently holds the source list + handover path.