Codifies the SOV R8 Track H learning — internal taxonomy IDs (EVD-003, CMP-001, PER-005, CS-001, CLM-008, etc.) leaked into public-facing copy on multiple integration pages. They are internal-only.
Atom ID Exposure
Verdigris uses a canonical taxonomy of internal atom IDs to manage claims and proof points:
| Prefix | Atom type | Example | Path |
|---|---|---|---|
EVD- |
Evidence | EVD-003 |
canonical/atoms/evidence/EVD-003.yaml |
CLM- |
Claim | CLM-008 |
canonical/atoms/claims/CLM-008.yaml |
CMP- |
Competitor | CMP-001 |
canonical/atoms/competitors/CMP-001.yaml |
PER- |
Persona | PER-005 |
canonical/atoms/personas/PER-005.yaml |
CS- |
Case study | CS-001 |
canonical/case_studies/CS-001.yaml |
CAP-, OBJ-, ENT-, PTR-, ECO-, TOP-, FAQ-, SPC-, CPL-, CUS- |
Other atoms | various | canonical/atoms/*/ |
These IDs are the internal cross-reference system. They are never customer-facing. They never appear in rendered HTML/Markdown body copy, alt text, captions, image filenames in public paths, OG metadata, MDX frontmatter that renders to UI text, or any external comms (Slack, Linear, email, social).
Rule
Invariant
The character pattern \b(?:EVD|CLM|CMP|PER|CS|CAP|OBJ|ENT|PTR|ECO|TOP|FAQ|SPC|CPL|CUS)-\d{3,}\b must not appear in any rendered surface visible to a customer.
Where IDs are permitted
| Location | Permitted? | Why |
|---|---|---|
canonical/** YAML source files |
Yes | The source of truth |
MDX frontmatter canonicalRefs: array |
Yes | Machine-only metadata, never rendered to UI |
MDX frontmatter comments (# ...) |
Yes | Stripped from render |
MDX body — inside an HTML comment <!-- EVD-003 --> |
Yes | Stripped from render |
| MDX body — visible to reader | No | Rule violation |
| Figure caption body (rendered) | No | Rule violation — use (see <case study link>) instead, attach atom ID in source comment |
| OG card text, SEO description, sitemap | No | External-facing |
| Alt text, ARIA labels | No | External-facing (screen readers) |
Image filenames at /og/* or any public asset path |
No | URL leaks to logs |
| Commit messages, PR titles, branch names | Yes | Internal git history |
| Linear issue titles, descriptions, comments | Yes | Internal CRM |
| Slack messages | Yes (internal channels), No (customer-shared messages) | Audience-dependent |
Substitution patterns
When you need to reference an internal atom in customer-facing copy, substitute by describing the evidence in prose and linking to the published surface:
| Don’t write | Do write |
|---|---|
... in the T-Mobile deployment (EVD-003). |
... in the [T-Mobile Albuquerque deployment](/case-studies/t-mobile). |
caption: "Three-phase load currents (EVD-003)" |
caption: "Three-phase load currents from the T-Mobile Albuquerque pilot" |
Competitive context (CMP-001) |
Competitive context: Packet Power positions on... |
For DC ops engineers (PER-001), this means... |
For data-center operators on the floor, this means... |
Per CLM-008, Verdigris provides... |
Verdigris provides... (assert directly; no citation needed in body) |
Why
-
Atom IDs are internal taxonomy, not editorial. They tell internal authors where the evidence lives so it can be updated in one place. They tell customers nothing —
EVD-003is opaque without the YAML it references. -
Atom IDs date the page. A page that exposes
EVD-003reads as a machine-rendered artifact. Real editorial surfaces don’t show their CMS field IDs. -
Atom IDs leak the org chart. Five-digit padded IDs reveal whether we have 5 or 500 evidence atoms, hint at our internal velocity, and broadcast our content-engineering machinery in a way that feels like watching the kitchen from the dining room.
-
Atom IDs trip the brand-coherence evaluator’s “AI-generated artifact” detector. Pages with visible internal IDs score lower on perception evaluation because the IDs read as machine output, not authored prose.
Compliant
<!-- canonicalRefs lives in frontmatter; never visible to reader -->
---
canonicalRefs:
- EVD-003
- CS-001
- CLM-008
---
# How Verdigris detects degrading rectifiers
In the [T-Mobile Albuquerque deployment](/case-studies/t-mobile), Verdigris flagged a degrading rectifier 21 days before its first equipment alarm. 800+ rectifiers, 4% hidden degradation, zero standard alarms triggered.
<figure>
<WaveformTrace ... />
<figcaption>
Fig. 3 — Three-phase load currents at 8 kHz during a 60-second segment from the T-Mobile Albuquerque deployment.
<!-- evidence: EVD-003; case study: CS-001 -->
</figcaption>
</figure>
Non-compliant
{/* IDs in body */}
In the T-Mobile deployment (EVD-003), Verdigris flagged a degrading rectifier...
{/* IDs in caption */}
<figcaption>Three-phase load currents (EVD-003)</figcaption>
{/* IDs in alt text */}
<img src="..." alt="EV2 dashboard EVD-003" />
{/* IDs in OG description (frontmatter that renders to head metadata) */}
seo:
description: "Real customer outcome — 21 days early warning at T-Mobile (EVD-003)"
Where this applies
| Surface | Scope |
|---|---|
All /content/**/*.mdx body |
Required (invariant) |
All /content/**/*.mdx frontmatter fields that render to UI text (title, description, seo.title, seo.description, eyebrow, etc.) |
Required |
All /content/**/*.mdx frontmatter fields that are machine-only (canonicalRefs, internal comments) |
Permitted |
All public assets (paths under /og/, /assets/, etc.) |
Required |
| All external comms (Slack to customers, Linear issues shared with partners, email, social posts) | Required |
| Whitepaper PDF body | Required |
Enforcement
This rule is enforced at three layers:
rules/visual-rules.yml>composition.atom_id_exposure— machine-enforceable regex pattern (severity: error,maturity: invariant). Runs against rendered MDX, OG cards, sitemaps, llms.txt.- www brand-positioning evaluator — adds
BANNED_ATOM_ID_EXPOSEDissue code to the existing banned-phrase pipeline. Pre-commit and CI gate. - Hookify rule at
~/.claude/projects/-Users-chungty-Projects-verdigriswww/.claude/hookify.atom-id-exposure.local.md— warns at MDX file save when an atom-ID pattern appears in body, frontmatter UI fields, or alt text.
Sources
- SOV R8 Track H commit log — six per-page commits stripping atom IDs from
/integrations/*body copy (e.g.ebaf45d0 fix(integrations): ABB Track H final cleanup — orphan PNGs + strip atom ID,c297802c fix(integrations): Vertiv Track H final cleanup ... strip atom ID). Each commit is evidence the rule was needed and not previously codified. - Verdigris brand-coherence evaluator (v7.0.0+) — perception scoring flags “machine-rendered artifact” patterns; visible internal IDs trip this. See
pipelines/website/evaluators/brand-positioning.ts. - Convention from editorial publishing — New York Times, The Economist, Nature, Science — none expose internal CMS IDs (
nyt:art:12345,econ:b2c:abc) to readers. The Verdigris atom system is structurally equivalent; the convention is the same.
See also
rules/visual-rules.yml>composition.atom_id_exposurepipelines/website/evaluators/brand-positioning.ts(in the www repo) — runtime enforcementAGENTS.md(verdigris repo) > “Audience-Aware Vocabulary Guide” — what is customer-facing vocabulary