XML Namespace
Specification
The TRACE XML namespace extends RSS 2.0, Atom, and other XML-based feed formats with structured content accountability data. It follows the same extension pattern as established namespaces like podcast: (Podcasting 2.0) and itunes:, and is readable by any namespace-aware feed parser.
URI and Prefix
The canonical namespace URI is the identifier for the TRACE XML vocabulary. The recommended prefix is trace. Declare it in the root element of your feed alongside any other namespaces you use.
<rss version="2.0" xmlns:trace="https://tracestandard.org/ns/trace/1.0" xmlns:podcast="https://podcastindex.org/namespace/1.0">
trace is recommended but not required. Any valid XML prefix works. Consumers of the namespace use the URI to identify elements, not the prefix. If you use an alternative prefix, your feed remains conformant.
TRACE XML Elements
All elements are in the https://tracestandard.org/ns/trace/1.0 namespace. Nesting structure is shown by indentation. Elements marked required must be present when a trace:assessment block is used.
| Element | Parent | Status | Content / Purpose |
|---|---|---|---|
| trace:assessment | channel, item | required | Root container for all TRACE metadata. Carries a version attribute. |
| trace:content | assessment | optional | Content identification block. Attributes carry the title, URL, and type. May be omitted when the content is the feed item itself. |
| trace:producer | assessment | required | Text content: name of the producer. Optional url attribute for a homepage or profile. |
| trace:community | assessment | required | Text content: free-text description of the community represented or depicted. |
| trace:ai | assessment | optional | AI disclosure block. Attributes: generated (true/false), role (primary/partial/assisted/none). Contains zero or more trace:tool children. |
| trace:tool | ai | optional | Text content: name of one AI tool used. Add one element per tool. |
| trace:track | assessment | required | Text content: A or B. |
| trace:disqualified | assessment | required | Text content: true or false. Optional code attribute: DQ1 or DQ2 when triggered. |
| trace:scores | assessment | optional | Container for category-level scores. Omit when disqualified is true. Contains one trace:score per category. |
| trace:score | scores | optional | Self-closing. Attributes: category, value (integer), max (integer). See categories below. |
| trace:total | assessment | required | Self-closing. Attributes: score (integer), max (integer), pct (integer 0–100, optional). Omit when disqualified. |
| trace:verdict | assessment | required | Text content: verdict string. See Verdict Values. Omit when disqualified, or use Disqualified. |
| trace:assessmentDate | assessment | required | Text content: ISO 8601 date (YYYY-MM-DD). |
| trace:assessedBy | assessment | optional | Text content: self, third-party, or assessor name. |
| trace:nextReviewDate | assessment | optional | Text content: ISO 8601 date of planned reassessment. |
| trace:cardURL | assessment | optional | Text content: URL of the TRACE scorecard for this assessment. |
Category values for trace:score
The category attribute of trace:score must be one of the following strings:
| category value | Track A max | Track B max |
|---|---|---|
| transparency | 4 | 7 |
| sourceIntegrity | 3 | 4 |
| displacement | 2 | 5 |
| consentAttribution | 4 | 4 |
| benefitFlow | 5 | 6 |
| accountability | 2 | 4 |
| governanceDurability | — | 5 (Track B only) |
Assessing a Whole Feed or Series
Place trace:assessment directly inside <channel> to assert an assessment that applies to the entire feed or podcast series. This is appropriate when a single assessment covers the production practices of all episodes, and individual episode-level differences are not material enough to track separately.
<channel> <title>Cariboo Signals</title> <link>https://cariboosignals.ca</link> <description>Community journalism for the Cariboo</description> <!-- TRACE assessment for the entire series --> <trace:assessment version="1.0"> <trace:producer>Cariboo Signals</trace:producer> <trace:community>Rural Cariboo region, BC</trace:community> <trace:ai generated="true" role="partial"> <trace:tool>Claude</trace:tool> <trace:tool>ElevenLabs</trace:tool> </trace:ai> <trace:track>A</trace:track> <trace:disqualified>false</trace:disqualified> <trace:total score="15" max="20" pct="75"/> <trace:verdict>Sound</trace:verdict> <trace:assessmentDate>2026-05-15</trace:assessmentDate> </trace:assessment> <item>...</item> </channel>
Episode-Specific Assessments
Place trace:assessment inside an <item> to override or add to the channel-level assessment for that specific episode. An item-level assessment takes precedence over the channel-level one for that item. You can use both: channel-level as the default, item-level for episodes that deviate.
<item> <title>Ep 12: Water Rights on the Chilcotin</title> <link>https://cariboosignals.ca/episodes/12</link> <guid>cariboo-ep-12</guid> <trace:assessment version="1.0"> <trace:content title="Ep 12: Water Rights on the Chilcotin" url="https://cariboosignals.ca/episodes/12" type="podcast"/> <trace:producer>Cariboo Signals</trace:producer> <trace:community>Tsilhqot'in Nation; rural Cariboo</trace:community> <trace:ai generated="true" role="partial"> <trace:tool>Claude</trace:tool> </trace:ai> <trace:track>A</trace:track> <trace:disqualified>false</trace:disqualified> <trace:scores> <trace:score category="transparency" value="3" max="4"/> <trace:score category="sourceIntegrity" value="2" max="3"/> <trace:score category="displacement" value="2" max="2"/> <trace:score category="consentAttribution" value="3" max="4"/> <trace:score category="benefitFlow" value="3" max="5"/> <trace:score category="accountability" value="2" max="2"/> </trace:scores> <trace:total score="15" max="20" pct="75"/> <trace:verdict>Sound</trace:verdict> <trace:assessmentDate>2026-05-15</trace:assessmentDate> <trace:assessedBy>self</trace:assessedBy> <trace:cardURL>https://tracestandard.org/cards/cariboo-ep12</trace:cardURL> </trace:assessment> </item>
Complete RSS 2.0 Feed
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:trace="https://tracestandard.org/ns/trace/1.0" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"> <channel> <title>Cariboo Signals</title> <link>https://cariboosignals.ca</link> <description>Community journalism for the Cariboo</description> <language>en-ca</language> <!-- Series-level TRACE assessment --> <trace:assessment version="1.0"> <trace:producer url="https://cariboosignals.ca">Cariboo Signals</trace:producer> <trace:community>Rural Cariboo region, BC</trace:community> <trace:ai generated="true" role="partial"> <trace:tool>Claude</trace:tool> <trace:tool>ElevenLabs</trace:tool> </trace:ai> <trace:track>A</trace:track> <trace:disqualified>false</trace:disqualified> <trace:total score="15" max="20"/> <trace:verdict>Sound</trace:verdict> <trace:assessmentDate>2026-05-15</trace:assessmentDate> </trace:assessment> <item> <title>Ep 12: Water Rights on the Chilcotin</title> <link>https://cariboosignals.ca/episodes/12</link> <guid isPermaLink="false">cariboo-ep-12</guid> <pubDate>Wed, 15 May 2026 09:00:00 -0700</pubDate> <enclosure url="https://cdn.cariboosignals.ca/ep12.mp3" length="47832044" type="audio/mpeg"/> <!-- Episode-specific override: community differs from series default --> <trace:assessment version="1.0"> <trace:community>Tsilhqot'in Nation; rural Cariboo</trace:community> <trace:track>A</trace:track> <trace:disqualified>false</trace:disqualified> <trace:total score="15" max="20"/> <trace:verdict>Sound</trace:verdict> <trace:assessmentDate>2026-05-15</trace:assessmentDate> <trace:cardURL>https://tracestandard.org/cards/cariboo-ep12</trace:cardURL> </trace:assessment> </item> </channel> </rss>
Atom 1.0 Integration
The namespace declaration and element structure are identical in Atom feeds. Declare the namespace on the root <feed> element and use trace:assessment as a child of <feed> (series-level) or <entry> (item-level).
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:trace="https://tracestandard.org/ns/trace/1.0"> <title>Cariboo Signals</title> <trace:assessment version="1.0"> <trace:producer>Cariboo Signals</trace:producer> <trace:track>A</trace:track> <trace:disqualified>false</trace:disqualified> <trace:total score="15" max="20"/> <trace:verdict>Sound</trace:verdict> <trace:assessmentDate>2026-05-15</trace:assessmentDate> </trace:assessment> <entry> <title>Ep 12: Water Rights on the Chilcotin</title> <!-- entry-level trace:assessment goes here if needed --> </entry> </feed>
Checking Your Feed
| Tool | What it checks | URL |
|---|---|---|
| W3C Feed Validator | RSS and Atom well-formedness; namespace extension support | validator.w3.org/feed |
| Podcast Index Validator | Podcasting 2.0 namespace compliance; coexistence check | podcastindex.org/validate |
| TRACE Feed Validator | TRACE-specific element and attribute validation | tracestandard.org/validate/xml (forthcoming) |
trace: namespace will silently ignore all TRACE elements. The feed remains valid and fully functional for those consumers. TRACE metadata is purely additive.Version History
| Version | Date | Status | Notes |
|---|---|---|---|
| 1.0 | May 2026 | Draft | Initial draft. All elements defined. Awaiting community review and XSD schema publication. |