# llms-understanding.txt — MX as proposed for ratification
> **What MX is for.** Make anything you publish — a video, a podcast, a PDF, an image, a web page — readable by machines. The drafts in this bundle are the open-standard specifications that define how.
>
> **What kind of layer MX is.** MX is the DNA a file carries when it leaves any pool. A memory-pool architecture (an LLM-wiki, a vector store, a knowledge base, a CMS, a training corpus) organises knowledge inside one system; MX governs what survives extraction, so the next reader can interpret the file without inference. The two boundary notes at the end of this bundle (`MX is not GEO` and `MX is not a memory-pool architecture`) draw the boundary explicitly.
> A single-file, plain-markdown corpus of every public MX draft note offered to The Gathering for community review. Read this file end-to-end to acquire a complete working understanding of the Machine Experience vocabulary, its conformance levels, the carrier formats it travels in, the optional cogs/signing layers, the temporal-stance vocabulary for documents anchored to dated events, and the discoverability and accessibility standards it inherits from existing W3C, ISO, and IETF specifications.
## What this file is
`llms-understanding.txt` is a knowledge bundle for AI agents, search engines, and human reviewers who want the entire MX proposal in one place without crawling page-by-page. It contains every draft note from the public mx-shared-gathering repository (https://github.com/ddttom/mx-shared-gathering), in the recommended reading order, with each draft prefixed by its canonical URL.
The drafts are **not ratified standards**. They are proposals authored by Tom Cranstoun and offered to The Gathering (https://tg.community) community for review via Stream (https://stream.tg.community). Each draft is standalone and refers only to existing published external standards (RFC, ISO, W3C, NIST, Schema.org, Dublin Core, SPDX) for normative content. Where one draft excludes a topic owned by a sister draft, it names the sister draft for orientation; no draft depends on another for normative material — except that every sister note adheres to the field-definition discipline laid down in the primary `MX Field Definition Pattern note`.
## How to read this file
The recommended order is the order of sections below.
1. **MX Field Definition Pattern note** — the primary note. Defines the authoring discipline every sister note follows when specifying a frontmatter field. Read it first.
2. **MX Core Metadata note** — Zone 1 / Zone 2 document metadata and externally-aligned fields. The vocabulary floor that any text-bearing artefact can adopt. Reading this together with MX Provenance gives an author the full Level-2 floor.
3. **MX Cogs note** — the optional `.cog.md` file format as a layer on top of MX, for documents that need to be navigable, composable, and runnable by agents. Most MX-aware documents will not be cogs. Cogs are graded on a Tier A / B / C ladder distinct from the MX Core Level 1/2/3 ladder; a cog is graded by both at once.
4. **MX Extensions note** — namespace policy (standard / vendor-public / vendor-private prefixes) so vendors can extend MX without polluting the core vocabulary. The public extension namespace is operated by CogNovaMX during the seed phase; vendor sub-namespaces of the form `x-mx-{vendor}-*` are reserved for individual vendors.
5. **MX Provenance note** — attribution, trust, maintenance, and decision-record references. The metadata that makes a document's origin and stewardship verifiable. Part of the Level-2 floor for documents that need verifiable origin.
6. **MX Temporal Stance note** — temporal vocabulary for documents whose prose depends on dated anchors. Regulatory analyses, contracts, SLAs, compliance reports, pricing pages — anything that has to read correctly today and again later when the anchors move. Time-neutral documents can skip this note.
7. **MX Carrier Formats note** — how MX metadata is carried in each supported file format (markdown, HTML, JSDoc, CSS, shell, XMP, sidecar, SQL), plus a small code-specific provenance vocabulary. Behaviour-level code metadata defers to JSDoc, docstrings, OpenAPI. Carries the binding HTML mapping for the four MUST-at-Level-2 web fields.
8. **MX Workflow Contracts note** — optional top-level fields for cogs that declare an executable approval, review, or procedural workflow.
9. **MX Agent Directory Discovery note** — three-layer discoverability standard for `llms.txt` and any agent-directory file: HTML transport, sitemap inclusion, in-page ``.
10. **MX Document Accessibility note** — three-layer accessibility standard for non-HTML document carriers: tagged structure, declared conformance, independent verification. PDF normative; DOCX and EPUB informative. Defers to ISO 14289 PDF/UA, ISO 32000, WCAG 2.1, BCP 47, Schema.org accessibility properties, Directive (EU) 2019/882 (EAA).
11. **MX Contract Fingerprinting and Signing note** — the contract a cog satisfies *when it elects to be signed*. Signing is optional. The fingerprint format is open. The contract surface is derivable from a `schema:` annotation; the explicit `contractFields` array is the override.
12. **MX scope note: machine-readable documents beyond web optimisation** *(boundary note)* — the boundary between MX governance and Generative Engine Optimisation (GEO/AEO). MX builds coverage across an unknowable landscape of machines and formats; GEO targets one pathway and accepts failure on the others. Read when you need to explain what MX is *not* doing in a GEO conversation.
13. **MX scope note: file-borne provenance beyond memory-pool architectures** *(boundary note)* — the boundary between MX governance and memory-pool architectures (LLM-wikis, Karpathy-style compiled knowledge bases, Obsidian vaults, vector stores). A memory pool governs how knowledge is organised inside one system; MX governs the DNA a file carries when it leaves any system. The two are complementary, not competitors. Read when MX is being conflated with an in-system retrieval design.
## Provenance of this bundle
**Generated:** 2026-07-03
**Source repository:** https://github.com/ddttom/mx-shared-gathering
**Canonical home for each draft:** https://github.com/ddttom/mx-shared-gathering/blob/main/
**Licence:** MIT. The MX vocabulary is free, open, and vendor-neutral.
**Format convention:** llms-full.txt — popularised by Fern and Mintlify; compatible with the llms-ctx-full.txt pattern at llmstxt.org.
---
## MX Field Definition Pattern note (primary)
**URL:** https://github.com/ddttom/mx-shared-gathering/blob/main/draft-field-pattern.md
**File:** `draft-field-pattern.md`
# MX Field Definition Pattern note
**Version:** 1.0
**Status:** Draft by Tom Cranstoun, offered to The Gathering for review — **primary note of the MX draft set**
**Date:** 27 April 2026
**Author:** Tom Cranstoun
**License:** MIT
---
## 1. Abstract
This is the **primary note** of the MX draft set. Every other note in the set defines one or more frontmatter fields, and every one of those fields is described under the pattern this note specifies. Readers new to the suite should read this note first; sister notes assume its rules and do not restate them.
Without a shared pattern, each note would express the same structural choices in slightly different prose: a heading, a property table, a definition, an example, and (sometimes) extra rules. Even minor variations make automated extraction harder than it needs to be, and they make a reviewer ask "is this field defined the same way as the last one?" every time.
This note specifies a single, vetted **pattern** for defining a frontmatter field inside any MX draft. Drafts add new fields by following the template — author once, machine-read everywhere.
**Why field discipline matters.** Machine consumers — agents, validators, registries, signers, graph builders — cannot infer intent from prose. They need fields that are explicit, tightly typed, and constrained to a small set of legal values. The MX vocabulary is therefore expected to **grow, not shrink**: new fields are how machines come to understand what a document means. Field growth without authoring discipline produces drift, and drift compounds: every loose definition multiplies the work of every downstream consumer that has to reconcile it. The pattern in this note exists to absorb growth without producing drift, and to keep every new field tightly constrained from the moment it is defined.
This note specifies the pattern itself. **No new frontmatter fields are introduced in this note.** It governs *how* a field is defined; *which* fields exist is the work of the sister notes that define them.
---
## 2. Conformance
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119).
This note's pattern is **normative for the entire MX draft set**. Every MX note that defines one or more frontmatter fields MUST define each field using the structure in §4, the property-table rows in §5 (for standard fields), or the inventory-table form in §4.4 (for pass-through fields). Sister notes MUST NOT introduce alternative shapes, additional property-table rows, or supplementary section types beyond those defined here.
A note that defines no fields makes no claim against this pattern and is unaffected by it.
### 2.1 Draft status
This note is a draft authored by Tom Cranstoun and offered to The Gathering for review. It is not a ratified standard. Until The Gathering accepts it, the structural rules below are working drafts — stable enough to author against, expected to evolve through review.
---
## 3. Scope
### 3.1 In scope
- The structural template for a **standard field** definition inside an MX draft.
- The structural template for **pass-through fields** — fields whose value semantics are owned by an external vocabulary (Dublin Core, Schema.org, BCP 47, SPDX, FOAF, ...).
- The required and optional rows of the property table.
- Naming and ordering conventions for field-definition headings and sub-sections.
- One worked example showing the pattern applied.
### 3.2 Out of scope
- **Specific field semantics.** What `title`, `provenanceAuthor`, `x-mx-thresholds`, or any other field *means* belongs in the relevant note. This note does not define any field.
- **Profile catalogues.** Which fields apply to which document type (`core`, `cog`, `report`, ...) is governed by the notes that own those profiles.
- **Schema languages.** JSON Schema, YAML schema, Schema.org, and similar machine-readable shape languages are unrelated; this note specifies authored-prose shape only.
- **Carrier-format mappings.** How a field is expressed in HTML, JSDoc, CSS, etc. is governed by the MX Carrier Formats note.
- **Conformance-level definitions.** What "Level 1 / 2 / 3" mean within a particular note is the host note's choice; this pattern only requires that one of those levels be cited.
### 3.3 Relationship to existing standards
This note follows the [IETF RFC format](https://www.rfc-editor.org/rfc/rfc7322) for standards-document authoring and uses the [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) keyword vocabulary. The pattern itself is a stylistic convention layered on top of those, not a redefinition of either.
### 3.4 Recommended reading order across the draft set
Each sister note is self-contained and may be read in any order. For a newcomer to the draft set, the following sequence orients the vocabulary from the floor upwards before reaching the optional layers:
1. **MX Field Definition Pattern note** *(this note)* — the authoring pattern every other note follows when defining a frontmatter field. Read first.
2. **MX Core Metadata note** — the floor. Document-identity and operational fields every MX-aware artefact declares (`title`, `author`, `created`, `description`, `status`, `contentType`, ...) plus the pass-through inventory.
3. **MX Provenance note** — extends the floor with attribution, trust, maintenance, and decision-record references — the metadata that makes a document's origin and stewardship verifiable.
4. **MX Extensions note** — namespace policy: how vendors extend the vocabulary (`x-mx-`, `x-mx-p-`) without polluting the core, plus context-specific naming across syntactic carriers.
5. **MX Carrier Formats note** — how MX metadata is carried across markdown, HTML, JSDoc, CSS, shell, EXIF/XMP, sidecar, and SQL carriers, plus a small code-specific provenance vocabulary.
6. **MX Cogs note** — the optional `.cog.md` layer for documents that want to be navigable, composable, and runnable by agents.
7. **MX Workflow Contracts note** — top-level fields for cogs that declare an executable approval, review, or procedural workflow.
8. **MX Contract Fingerprinting and Signing note** — the signing format a cog uses *when it elects to be signed*. Signing is optional.
The order moves from authoring discipline (this note) to the universal floor, then enriches the floor (provenance, extensions), maps it onto carriers (carrier formats), and finally reaches the optional cog layer and its three specialisations. A reader interested only in a specific topic — say, signing a contract cog — can jump directly to the relevant note; the listed prerequisites are recommendations, not normative dependencies.
---
## 4. The field-definition pattern
A field definition is a contiguous unit inside a host note. It has four required pieces, in order, plus optional supplementary material.
### 4.1 Required pieces
1. **Heading.** A section heading at the level appropriate to the host note's structure (typically `### N.M`), with the field name in backticks. Example: `### 5.3` `` `author` ``. Headings MUST contain only the bare field name; no prose, no qualifiers, no parenthetical types.
2. **Property table.** A two-column markdown table with the rows specified in §5, in the order given.
3. **Definition prose.** One or more paragraphs of plain prose that name what the field is, what it carries, and any constraint not expressible in the property table. Definition prose MUST come immediately after the property table. Definition prose MUST NOT restate values already given in the table.
4. **Example.** A fenced YAML code block showing the field in use, in the carrier the host note targets (typically `mx:` block or top-level frontmatter). Examples MUST be syntactically valid YAML and MUST illustrate the field's actual shape. A definition with multiple legal shapes (e.g. `string-or-object`) MAY include multiple example blocks.
### 4.2 Optional supplementary material
After the required pieces, a definition MAY include any of:
- **Bulleted constraints** — additional rules expressible as short bullets (e.g. "the value MUST be quoted in YAML to prevent numeric coercion").
- **Cross-reference** — a one-line pointer to a related field elsewhere in the same note (e.g. "Distinct from `maintainer` (§6.6)"). Cross-references to *other notes* MUST be by note name only, never by file path or URL, per the standalone-ness rule of the draft set.
- **Sub-table** — a further markdown table when the field's value is an object with named sub-keys (e.g. `cogHeader` with `version`, `spec`, `runtime`, `runtimeDoc`).
A definition MUST NOT include a "Normative notes" preamble whose body merely paraphrases the property table or the definition prose. If a putative note adds no new constraint, it is removed.
### 4.3 Group rules
When two or more fields share the same shape and conformance, a note MAY collapse them into a single section that lists the fields together, presents one shared property table, and explains the differences in a small differentiation table. The host note SHOULD use this form whenever the result is shorter than separate sections without loss of normative content.
A group section follows the same Required-pieces order as a single field, with the heading naming the group (e.g. "Decision record references: `adr`, `ndr`, `bdr`") instead of a single field.
### 4.4 Pass-through field pattern
A **pass-through field** is a YAML key whose value semantics belong to an established external vocabulary (Dublin Core, Schema.org, BCP 47, SPDX, FOAF, and similar). MX names the key so that authors do not have to switch syntax mid-frontmatter; the external standard owns the meaning.
Pass-through fields use a different shape from §4.1, because the host note is not the owner of the value. Instead of one full section per field, a host note groups pass-through fields into a single **inventory table** with these columns, in this order:
| Column | Required | Value |
|--------|:--------:|-------|
| **Field** | yes | The YAML key MX provides, in backticks. |
| **Aligns with** | yes | The external standard's canonical name plus the specific term, e.g. `Dublin Core dc:date, Schema.org Date`. The standard MUST be cited precisely (URL plus the specific field/property name) at least once in the note. |
| **Value** | yes | One sentence summarising what the value carries. |
| **Conformance** | yes | Always `MAY` for pass-through fields — they are optional surface for an external vocabulary. |
A pass-through inventory table appears in a dedicated pass-through section of the host note. The section MUST also state, in prose:
- That the listed fields are pass-through (definition above).
- That MX does not redefine or contradict the cited external standard.
- The rule for adding a new pass-through field: an established external vocabulary cleanly covers the value, the alignment is declared via canon's `alignsWith:`, and MX names the YAML key without governing its semantics. If the external standard does not cleanly cover the value, the field is **not** a pass-through and MUST be defined under the standard pattern in §4.1.
Pass-through fields MUST NOT use the property table in §5; the inventory table replaces it. A field definition that mixes the two forms is a conformance failure.
The MX Core Metadata note's pass-through inventory is the reference precedent. Sister notes that introduce additional pass-through fields (e.g. linguistic, rights, dataset metadata) MUST follow this same inventory-table form.
---
## 5. The property table
The property table is the standard-field shape. It immediately follows the heading and uses two columns — `Property` and `Value` — containing the rows below in this exact order. Rows that do not apply MUST be omitted entirely; rows that do apply MUST appear in the order given. Pass-through fields use the inventory-table form in §4.4 and do not use this property table.
| Row | When | Value |
|-----|------|-------|
| **Type** | always | One of: `string`, `boolean`, `number`, `array`, `object`, `array of `, `string-or-object`, `string-or-array`, `string-or-boolean`. New compound types MUST be hyphenated and in lowercase. |
| **Zone** | always for fields that live in YAML frontmatter | `1 (top-level)` or `2 (mx:)`. Fields that have no zone (e.g. parameters of a sub-key) omit this row. |
| **Profile** | when the field is profile-restricted | A comma-separated list of profile names (`core`, `cog`, `report`, `migration`, `x-mx-public`, ...). Omitted when the field is universal. |
| **Conformance** | always | An [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) keyword (`MUST`, `SHOULD`, `MAY`) plus the host note's level in parentheses. Example: `MUST (Level 1)`. Multiple conformance entries MAY appear when the level depends on context, separated by semicolons. |
| **Valid values** | when the value is enumerated | A comma-separated list of permitted values, in lowercase, exactly as they appear in YAML. |
| **Default** | when omitting the field has a defined behaviour | The default value, or `*(none)*` when there is no default. Use `*(none — explicit declaration required)*` for MUST-level fields. |
The table MUST NOT contain rows beyond these. New rows MAY be proposed only by amending this note, not by individual field definitions.
---
## 6. Worked example
The following is a complete, conforming definition of a hypothetical field `riskLevel`. It is not a real field; it exists only to illustrate the pattern.
> ### 7.4 `riskLevel`
>
> | Property | Value |
> |----------|-------|
> | **Type** | string |
> | **Zone** | 2 (mx:) |
> | **Conformance** | MAY (Level 3) |
> | **Valid values** | low, medium, high, critical |
> | **Default** | *(none)* |
>
> Self-declared risk classification of the document's subject matter. Helps agents and maintainers prioritise review attention when a queue is large.
>
> ```yaml
> mx:
> riskLevel: medium
> ```
>
> - `critical` SHOULD be reserved for content whose factual error could cause material harm; lighter classifications cover everyday content.
> - Distinct from `confidential`, which controls publication, not review urgency.
The example shows: a heading containing only the bare field name; the four required property rows in order; the two optional rows (`Valid values`, `Default`) where they apply; one paragraph of definition prose that does not restate the table; one YAML example block; and two bulleted constraints — one introducing a new rule, one cross-referencing a sibling field. No "Normative notes" preamble is used.
---
## 7. Authoring rules
These rules are normative for any field defined under this pattern.
### 7.1 Naming
Field names use camelCase in YAML contexts (matching the [Schema.org Style Guide](https://schema.org/docs/styleguide.html)). Vendor-extension fields use kebab-case after their prefix (`x-mx-deploy-target`, not `x-mx-deployTarget`). Field names MUST NOT use snake_case or PascalCase in YAML contexts.
### 7.2 Conformance keywords
Each definition cites exactly one of `MUST`, `SHOULD`, or `MAY` as its primary conformance keyword. When the level is conditional ("MUST when X applies, MAY otherwise"), the conditions MUST be explicit in the Conformance row, semicolon-separated.
### 7.3 Length
A typical single-field definition is 8–25 lines. Definitions that exceed roughly 40 lines SHOULD be reviewed for unnecessary prose, restated rules, or material that belongs in a sibling note.
### 7.4 What not to include
A field definition MUST NOT contain:
- Marketing language or assertions of importance ("this critical field", "the most useful").
- Implementation detail (which library reads it, which database column it maps to).
- Forward-looking statements ("we plan to extend this to ...").
- Examples that duplicate a previous example without adding new shape.
- Cross-references to draft files by path or URL.
### 7.5 Worked-example status
The example in §6 is illustrative, not normative. Implementations MUST NOT treat `riskLevel` as a registered field on the basis of this note alone.
---
## 8. Security and privacy considerations
This note specifies authoring style only and introduces no new fields, no carriers, and no signing surface. It carries no direct security or privacy implications.
A second-order consideration: a uniform field-definition pattern makes automated extraction tractable, which means tooling can mechanically enumerate every field a draft defines. Authors SHOULD assume that anything written inside a property table or YAML example will be parsed by tools that treat the draft as canonical, and SHOULD NOT include sensitive sample values in examples.
---
## 9. References
### 9.1 Normative references
- [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) — Key words for use in RFCs to indicate requirement levels
### 9.2 Informative references
- [RFC 7322](https://www.rfc-editor.org/rfc/rfc7322) — RFC Style Guide (style precedent for standards-document authoring)
- [Schema.org Style Guide](https://schema.org/docs/styleguide.html) — Vocabulary naming conventions
---
*End of MX Field Definition Pattern note draft.*
---
## MX Core Metadata note
**URL:** https://github.com/ddttom/mx-shared-gathering/blob/main/draft-core-metadata.md
**File:** `draft-core-metadata.md`
# MX Core Metadata note
**Version:** 1.0
**Status:** Draft by Tom Cranstoun, offered to The Gathering for review
**Date:** 27 April 2026
**Author:** Tom Cranstoun
**License:** MIT
---
## 1. Abstract
This note defines the core machine-readable document-metadata vocabulary for the Machine Experience (MX) framework. It specifies the foundational fields that every MX-aware document — whether a markdown file, an HTML page, a YAML sidecar, or any other text-bearing artefact — must, should, or may declare.
The core vocabulary is organised into three zones and one supplementary group. **Zone 1a identity fields** (top-level document identity: title, description, author, dates, version) are required on every MX document. **Zone 1b OKF-reserved surface fields** (top-level: type, tags, and resource when applicable) are required on every MX document. MX is an OKF implementation; Zone 1b fields are present unconditionally so that any OKF-compliant tool reads an MX document without adaptation. **Zone 2 operational fields** (governance, classification, and distribution metadata under the `mx:` namespace) carry everything OKF does not define; an OKF consumer preserves the entire `mx:` block as one unknown key. **Externally-aligned fields** are YAML keys whose semantics are owned by, or modelled after, established external vocabularies — Dublin Core, Schema.org, BCP 47, SPDX, RFC 3986. The relationship between MX and each external standard is recorded explicitly per field; see §7.
The cog file format is **not** described here. Cogs are an optional layer on top of MX, covered by the MX Cogs note in the same draft set. A document can carry MX metadata without ever being a cog.
**Accessibility (Normative).** An MX-compliant document MUST itself be accessible. For HTML, EPUB, and other web-style carriers, the artefact MUST conform to [WCAG 2.1](https://www.w3.org/TR/WCAG21/) Level AA. For PDF, the artefact MUST be tagged for accessibility with at least the conformance level cited in the MX Document Accessibility note. For markdown and other plain-text carriers, the structural conventions covered by the MX Document Accessibility note (heading hierarchy, alt text on images, descriptive link text, plain-language summaries) apply. MX adds machine-readable governance on top of standards-conformant content; it does not replace or relax the underlying accessibility requirement.
**Provenance.** Authorship, stewardship, derivation, and review history are governed by the **MX Provenance note**. That note extends this floor with the attribution and trust fields that make a document's origin verifiable. It is part of the recommended reading order for any author writing for an MX-aware audience.
---
## 2. Conformance
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119).
Field definitions in this note conform to the **MX Field Definition Pattern note** (the primary note of this draft set). That pattern governs the structural template for every field — heading, property table, definition prose, example — and the inventory-table form used for the externally-aligned fields in §7. This note adopts the pattern's authoring rules and does not restate them.
### 2.1 Conformance levels
| Level | Name | Requirement | Description |
|-------|------|-------------|-------------|
| Level 1 | **MX Core** | All MUST fields present and valid | Minimum viable MX metadata. A document at Level 1 is machine-identifiable and attributable. |
| Level 2 | **MX Standard** | All MUST and SHOULD fields present | Recommended for production use. A document at Level 2 is fully classified and lifecycle-managed. |
| Level 3 | **MX Complete** | All MUST, SHOULD, and applicable MAY fields present | Full metadata coverage. |
A document claiming conformance at a given level MUST satisfy all requirements at that level and all lower levels.
### 2.2 Draft status
This note is a draft authored by Tom Cranstoun and offered to The Gathering for review. It is not a ratified standard. Until The Gathering accepts it, the field definitions, conformance requirements, and normative rules in this note are working drafts — stable enough to build against, expected to evolve through review.
---
## 3. Scope
### 3.1 In scope
- **Zone 1a identity fields** — top-level document identity (title, description, author, dates, version)
- **Zone 1b OKF-reserved surface fields** — top-level fields present on every MX document. MX is an OKF implementation; these fields are required unconditionally so any OKF-compliant tool reads MX files without adaptation: `type` (MUST, carries MX content-type vocabulary), `tags` (MUST, for discovery), `resource` (MUST when the document describes a specific external asset; absent for abstract concepts)
- **Zone 2 core operational fields** — classification, governance, and distribution metadata
- **Externally-aligned fields** — fields where MX provides a YAML key whose value semantics are owned by, or modelled after, an established external vocabulary (§7)
- **The conformance level framework** — Level 1/2/3 definitions
### 3.2 Out of scope
- The cog file format (an optional layer over MX). A separate note covers cogs.
- Any signing or fingerprint contract a document might choose to carry.
- Carrier-format mappings (how the same field is expressed in HTML meta tags, JSDoc, CSS comments, etc.).
### 3.3 Relationship to existing standards
All field names in this note use camelCase, follow spelling-neutral forms (e.g. `license`, not `licence`, when an SPDX-aligned identifier is required), and use ISO 8601 date format (YYYY-MM-DD) for all date fields:
- **ISO 8601** — date and time format
- **SPDX License List** — licence identifiers follow the SPDX standard
- **Schema.org Style Guide** — vocabulary naming conventions (camelCase, lowercase first character)
- **Dublin Core DCMI Namespace** — namespace governance model
---
## 4. The three-zone frontmatter model
MX metadata in YAML frontmatter is organised into three zones.
**Zone 1a** (top-level) carries document identity fields: `title`, `description`, `author`, `created`, `modified`, `version`. These are required on every MX document.
**Zone 1b** (top-level) carries the OKF-reserved surface: `type` (required), `tags` (required), and `resource` (required when the document describes a specific external asset; absent for abstract concepts). MX is an OKF implementation. These fields are present unconditionally so that any external tooling built to read OKF files reads an MX document without adaptation. `type` carries the content-type vocabulary. `tags` carries discovery keywords. `resource` carries the singular URI of the external asset the document describes — distinct from `mx.refersToExternal` (plural citations). An OKF consumer reading an MX file treats the entire `mx:` block as one unknown preserved key, which is OKF-conformant. One field, one zone, no duplicate. The OKF `timestamp` field is satisfied by `modified` and derived at export time; it is never stored in source frontmatter.
**Zone 2** (under the `mx:` object) carries everything OKF does not define: lifecycle fields (`status`, `stability`), governance fields (`canonicalUri`, `license`, `audience`), the typed relation graph (`buildsOn`, `refersTo`, `relatedTo`, `refersToExternal`), and all MX extensions. An OKF consumer preserves the entire `mx:` object as one unknown key; it neither reads nor rejects it.
**Externally-aligned fields** are YAML keys whose value semantics are owned by, or modelled after, an established external vocabulary; the inventory and the alignment relationships are in §7, and the fields otherwise behave as Zone 1a, Zone 1b, or Zone 2 depending on which zone the field declaration places them in.
**Three-zone example:**
```yaml
---
# Zone 1a — identity
title: "Document Title"
description: "Brief summary for search engines and machines"
author: "Author Name"
created: 2026-04-02
modified: 2026-04-16
version: "1.0"
# Zone 1b — OKF reserved surface
type: guide
tags: [metadata, example]
# Zone 2 — MX operational
mx:
status: active
audience: [humans]
canonicalUri: https://example.com/docs/title
---
```
**Dual-conformance:** the same frontmatter block is simultaneously valid OKF (because `type`, `title`, `description`, `tags` are at the top level where OKF looks for them) and full MX (because the `mx:` block carries everything OKF does not define, and OKF preserves it as one unknown key).
Implementations MUST NOT place Zone 1a or Zone 1b fields inside the `mx:` object. Implementations MUST NOT place Zone 2 fields at the top level. No fact may be carried under two field names.
**OKF field alignment reference:** Open Knowledge Format v0.1, [GoogleCloudPlatform/knowledge-catalog](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md). The load-bearing rule: `Producers MAY include any additional keys. Consumers SHOULD preserve unknown keys when round-tripping and SHOULD NOT reject documents with unrecognized fields.`
---
## 5. Zone 1a identity fields
### 5.1 `title`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MUST (Level 1) |
Human-readable document title. The canonical identity field for all documents.
```yaml
title: "MX Core Metadata note"
```
If both `title` in frontmatter and an H1 heading exist in the document body, authors SHOULD avoid duplication by omitting `title` from frontmatter and relying on the H1 heading, or vice versa.
---
### 5.2 `description`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MUST (Level 1) |
One-line summary. Used by search engines, machines of every class, and registry listings. The value SHOULD NOT exceed 160 characters and MUST be a single sentence or phrase summarising the document's purpose.
```yaml
description: "Single source of truth for every YAML frontmatter field."
```
---
### 5.3 `originator`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MUST (Level 1) |
Creator of the document. Person name or collaborative attribution. Identity, not stewardship — names who first wrote the document, not who currently looks after it.
```yaml
originator: "Tom Cranstoun"
```
- The `originator` field is immutable after creation. Implementations MUST NOT change this value after the document is first committed.
- For collaborative work, all contributors SHOULD be listed.
- `originator` is distinct from the `stewardship` object (§6.6). The originator is the original creator (immutable, Zone 1); stewardship covers ongoing maintenance, contact, and ownership (mutable, Zone 2).
**Alias.** Documents written before this rename used the field name `author`. Implementations MUST treat a top-level `author` field as an alias of `originator` and SHOULD copy the value across when migrating. The `author` alias is supported for one major version after this note ratifies, then retires per the field-deprecation lifecycle in the MX Extensions note §10.4.
---
### 5.4 `created`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MUST (Level 1) |
Creation date in ISO 8601 format (YYYY-MM-DD). This field is immutable — once set, it MUST NOT be changed.
```yaml
created: 2026-04-02
```
---
### 5.5 `modified`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MUST (Level 1) |
Last modification date in ISO 8601 format (YYYY-MM-DD). Implementations MUST update this field every time the document's content changes.
```yaml
modified: 2026-04-16
```
---
### 5.6 `version`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | SHOULD (Level 2) |
Semantic version string. The value MUST be quoted in YAML to prevent numeric coercion (e.g., `"1.0"` not `1.0`). Version numbers live in frontmatter, never in filenames.
```yaml
version: "2.0"
```
---
### 5.7 `schema`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MAY (Level 3) |
Schema reference identifier — pointer to the schema document that defines and validates this document's contract. May be a Schema.org type URL, a JSON Schema `$id`, a relative path to a YAML/JSON schema file, or a database schema name.
```yaml
schema: ./schemas/invoice-approval.v1.yaml
```
- When present, validators SHOULD attempt to resolve the reference and apply the referenced schema before checking field-level conformance.
- The reference MAY be a relative path, an absolute path, a URL, or a registry-resolvable name.
- Implementations SHOULD treat unresolved references as a warning, not a failure, since the schema may live in an external system.
---
### 5.8 `validatesAgainst`
| Property | Value |
|----------|-------|
| **Type** | array of string |
| **Zone** | 1 (top-level) |
| **Conformance** | MAY (Level 3) |
Named validators (dotted notation) this document claims conformance to. A document MAY declare conformance to multiple validators (typically one meta-validator plus one or more domain validators).
```yaml
validatesAgainst:
- cog.meta.v1
- invoice-approval.v1
```
- Each entry SHOULD be a dotted name resolvable via the cog registry or via a `schema` pointer.
- Validators MUST treat the array as additive — a document conforming to `cog.meta.v1` AND `invoice-approval.v1` must satisfy both.
- Implementations SHOULD warn when a referenced validator name cannot be resolved; they MUST NOT silently skip validation.
---
## 5b. Zone 1b OKF-reserved surface fields
The three fields in this section sit at the top level of the YAML frontmatter block (Zone 1b). They are defined by the Open Knowledge Format (OKF) as the six reserved fields OKF consumers read first. MX adopts five of them directly and satisfies the sixth (`timestamp`) by derivation from `modified` at export time. The adopt-don't-reinvent rule applies: these are OKF fields MX carries, not MX synonyms. No equivalent field exists under the `mx:` namespace; placing them there is a conformance failure.
### 5b.1 `type`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1b (top-level, OKF-reserved) |
| **Conformance** | MUST (Level 1) |
| **OKF field** | `type` (required in OKF) |
| **Replaces** | `mx.contentType` (retiring synonym; see note) |
The kind of concept this document represents. Carries the MX content-type vocabulary at the top level so OKF consumers can route, filter, and present the document without reading the `mx:` block. Common values: `info-doc`, `action-doc`, `blog-post`, `specification`, `guide`, `report`, `field-dictionary`, `contact`, `direct-message`, `folder-metadata`.
```yaml
type: info-doc
```
**Retiring synonym:** `mx.contentType` is the pre-OKF location for this field. It is accepted during a migration window but MUST be promoted to top-level `type` for OKF conformance. After migration, `mx.contentType` is absent from conformant documents.
---
### 5b.2 `tags`
| Property | Value |
|----------|-------|
| **Type** | array of strings |
| **Zone** | 1b (top-level, OKF-reserved) |
| **Conformance** | MUST (Level 1) |
| **OKF field** | `tags` (optional in OKF) |
| **Replaces** | `mx.tags` (retiring synonym) |
Discovery keywords. Array of lowercase strings for search, filtering, and agent matching. Aligns with Schema.org `keywords`.
```yaml
tags: [metadata, yaml, frontmatter]
```
**Retiring synonym:** `mx.tags` is the pre-OKF location. Promote to top-level `tags` for conformance.
---
### 5b.3 `resource`
| Property | Value |
|----------|-------|
| **Type** | string (URI) |
| **Zone** | 1b (top-level, OKF-reserved) |
| **Conformance** | MUST when the document describes a specific external asset; absent for abstract concepts |
| **OKF field** | `resource` (optional in OKF) |
A URI that uniquely identifies the underlying external asset this document describes. Present only when the document describes a specific external object (a table, a dataset, an API endpoint). Absent for abstract concepts (playbooks, runbooks, policies). **Semantically distinct from `mx.refersToExternal`**: `resource` names the one thing this document is *about*; `refersToExternal` is the set of external sources the document *cites*.
```yaml
resource: https://bigquery.googleapis.com/v2/projects/bigquery-public-data/datasets/ga4_obfuscated
```
---
### 5b.4 `timestamp` (derived on export; not stored in source)
| Property | Value |
|----------|-------|
| **OKF field** | `timestamp` (optional in OKF) |
| **MX equivalent** | `modified` (Zone 1a) |
| **Storage rule** | MUST NOT be stored in source frontmatter |
OKF's optional `timestamp` field (ISO 8601 datetime of last meaningful change) is satisfied by `modified`. MX keeps the two-date model (`created` + `modified`) which is richer; `timestamp` is derived from `modified` at the export boundary when a pure-OKF view is needed. Storing both `modified` and a `timestamp` with the same value in source frontmatter violates the no-duplicates rule.
---
## 6. Zone 2 core operational fields
### 6.1 `status`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | SHOULD (Level 2) |
| **Valid values** | draft, active, published, deprecated, archived, unknown, proposed, accepted, rejected, superseded, pending, review, approved, planning, open, closed, sent, canonical |
Lifecycle state. The valid values span three lifecycles — document, decision-record, and workflow — and the value's meaning depends on the document's `type` (Zone 1b, §5b.1) or, during the migration window, `mx.contentType` (§6.8 retiring synonym). The matrix in §6.1.1 governs which values are valid for which content types; an out-of-matrix value is a conformance failure.
```yaml
mx:
status: active
```
#### 6.1.1 Valid `status` by `type` (Normative)
A document MUST declare a `status` value drawn from the row matching its `type` (or `mx.contentType` during the migration window). The matrix below is normative; a `status` value that does not appear in the row for the document's declared type is a conformance failure.
| `type` | Valid `status` values |
|--------------------------|----------------------------------------------------------------------|
| `info-doc`, `manuscript`, `guide`, `reference`, `report`, `field-dictionary`, `standards-alignment` | draft, active, published, archived, canonical, unknown |
| `specification`, `cog`, `cogs` | draft, active, canonical, deprecated, archived, unknown |
| `decision-record`, `adr` | proposed, accepted, rejected, superseded |
| `workflow`, `task`, `ticket` | pending, review, approved, planning, open, closed, sent |
| `identity` | active, archived, unknown |
Notes on the matrix:
- A document whose `type` does not appear in the matrix MAY use any value in the document lifecycle row (`draft`, `active`, `published`, `archived`, `canonical`, `unknown`) as a default; sister notes adding new content types SHOULD extend the matrix in lockstep.
- `unknown` is a conformance-safe placeholder for documents whose lifecycle is genuinely undetermined; tools SHOULD warn when it persists past initial authorship.
- `canonical` denotes an authoritative reference document — the present-tense source of truth for its subject. Distinct from `published` (a release point) and `active` (currently maintained).
- A document that legitimately spans lifecycles (rare — for example, a decision-record blog post) MUST pick a single `type` value and draw its `status` from that lifecycle's row.
---
### 6.2 `tags`
| Property | Value |
|----------|-------|
| **Type** | array |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Discovery keywords. Array of strings for search, filtering, and agent matching. Values SHOULD be lowercase strings.
```yaml
mx:
tags: [metadata, yaml, frontmatter, reference]
```
---
### 6.3 `audience`
| Property | Value |
|----------|-------|
| **Type** | string-or-array |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
| **Valid values** | tech, business, humans, machines, agents, both |
Intended readership.
```yaml
mx:
audience: [humans, machines]
```
---
### 6.4 `purpose`
| Property | Value |
|----------|-------|
| **Type** | string-or-object |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Why this document exists. Distinct from `type` (§5b.1), which classifies what a document is, not why it exists. The field accepts two shapes:
- **String form** — a single value drawn from the controlled high-level vocabulary below. Sufficient for most documents.
- **Object form** — `{ kind: , subPurpose: "" }` — for documents whose purpose has a recognisable major axis but a specific genre that the controlled vocabulary does not name (a position paper, a press release, a regulatory filing, a contract, a case study).
The controlled high-level vocabulary (used as the bare string value or as the `kind` sub-key in the object form):
| Value | Definition |
|-------|-----------|
| `specification` | Defines a contract, schema, or normative rule that other artefacts implement. |
| `reference` | A lookup resource: catalogue, dictionary, registry, atlas. Read by index, not cover-to-cover. |
| `guide` | Walks a reader through an unfamiliar process or domain. Pedagogical. |
| `operational` | Operational instructions for an actor (human or machine) to execute. Includes runbooks, SOPs, manuals. |
| `narrative` | Argument-bearing prose. Includes position papers, blog posts, essays, manifestos, press releases, opinion pieces. |
| `record` | Captures a state, event, or decision for the historical record. Includes minutes, decision records, audit logs, reports. |
A document declaring `purpose` SHOULD pick the value whose definition fits best; when the genre is recognisable but specific, the object form names it via `subPurpose`.
**Examples:**
```yaml
# String form — most documents
mx:
purpose: reference
```
```yaml
# Object form — narrative, named genre
mx:
purpose:
kind: narrative
subPurpose: "position paper"
```
```yaml
# Object form — record, named genre
mx:
purpose:
kind: record
subPurpose: "regulatory filing"
```
- The legacy values `operational manual`, `dispatcher`, and `configuration` (from earlier drafts of this note) are no longer in the controlled vocabulary. Implementations MUST treat `operational manual` as an alias of `operational`; `dispatcher` and `configuration` SHOULD be migrated to the closest fit (typically `operational` with a `subPurpose`) and the alias supported for one major version.
- `subPurpose` is free-form and lower-case-with-spaces. Tools SHOULD index `subPurpose` values for discoverability but MUST NOT treat them as a controlled vocabulary.
---
### 6.5 `license`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
SPDX licence identifier. Values MUST use SPDX licence identifiers as defined in the [SPDX Licence List](https://spdx.org/licenses/). Common values: `proprietary`, `MIT`, `Apache-2.0`, `CC-BY-4.0`. The field name uses the spelling-neutral form `license` (SPDX standard spelling) so that the YAML key matches the SPDX identifier exactly across regional spellings.
```yaml
mx:
license: MIT
```
---
### 6.6 `stewardship`
| Property | Value |
|----------|-------|
| **Type** | object |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Mutable stewardship details. A single object that captures ongoing responsibility for the document — who maintains it, who answers questions about it, which legal entity owns it, what brand it is published under. Distinct from `originator` (§5.3), which is the immutable original creator and lives at the top level.
**Sub-keys** (all optional; declare the ones the document needs):
| Sub-key | Type | Definition |
|---------|------|-----------|
| `steward` | string | Person or team currently responsible for ongoing updates and corrections. May change as stewardship transfers. |
| `accountableContact` | string | Mailto, URL, or organisation reference that an outside reader uses when something is wrong with the document. The single point of contact for follow-up. |
| `legalEntity` | string | The legal owner of the document and its underlying rights. Typically a registered company or trading entity. |
| `brand` | string | Public-facing trading name or imprint under which the document is published. May differ from `legalEntity`. |
```yaml
mx:
stewardship:
steward: "Maxine + Tom"
accountableContact: "info@cognovamx.com"
legalEntity: "Digital Domain Technologies Ltd"
brand: "CogNovaMX"
```
- A document SHOULD declare at least one sub-key when `stewardship` is present; an empty object is permitted but unusual.
- When `steward` is omitted, the `originator` is assumed to also be the steward.
- Implementations that publish metadata publicly SHOULD consider whether `accountableContact` values are appropriate for public exposure.
**Aliases.** Documents written before this consolidation used `maintainer` (string) and `ownership` (string-or-object). Implementations MUST treat them as aliases:
| Legacy field | Maps to |
|--------------|---------|
| `mx.maintainer: ""` | `mx.stewardship.steward: ""` |
| `mx.ownership: ""` (string form) | `mx.stewardship.legalEntity: ""` |
| `mx.ownership.owner` | `mx.stewardship.legalEntity` |
| `mx.ownership.delegate` | `mx.stewardship.steward` |
| `mx.ownership.contact` | `mx.stewardship.accountableContact` |
The legacy fields are supported for one major version after this note ratifies, then retire per the field-deprecation lifecycle in the MX Extensions note §10.4. The polymorphic string-or-object shape of `ownership` is retired entirely; the explicit object on `stewardship` replaces it.
---
### 6.7 `domain`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Business domain or subject area. Values are context-specific and not constrained to an enumeration. In folder metadata, `domain` is an identity field and MUST NOT be inherited by child folders.
```yaml
mx:
domain: "machine-experience"
```
---
### 6.8 `contentType` *(retiring synonym — use top-level `type`)*
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) — retiring; canonical home is Zone 1b top-level `type` |
| **Conformance** | Accepted during migration window; promote to `type` for OKF conformance |
Machine-readable content type classification. This field is the pre-OKF location for content-type information. **New documents SHOULD declare `type:` at the top level (Zone 1b, §5b.1) instead.** The vocabulary and valid values are the same.
```yaml
# Pre-OKF (retiring synonym — still accepted during migration window):
mx:
contentType: field-dictionary
# OKF-conformant (canonical):
type: field-dictionary
```
During the adoption window, implementations SHOULD accept `mx.contentType` and report it as a retiring synonym. After migration, `mx.contentType` is absent from conformant documents and the conformance gate rejects it.
---
### 6.9 `segment`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
| **Valid values** | developer, author, agent, business, morning, afternoon, evening |
Segment classifier. Used in two contexts: audience segment (developer, author, agent, business) and time segment for session reports (morning, afternoon, evening).
```yaml
mx:
segment: developer
```
---
### 6.10 `cacheability`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
| **Valid values** | ephemeral, short-lived, medium, long-lived, permanent |
| **Default** | medium |
How long an agent or resolver may cache this document's content before re-fetching.
- `ephemeral` — MUST NOT be cached; content changes on every request.
- `short-lived` — cache for up to 1 hour.
- `medium` — cache for up to 1 day.
- `long-lived` — cache for up to 1 week.
- `permanent` — cache indefinitely until the document changes.
A custom duration string (e.g., `4h`, `30d`) is also accepted. Format: number + unit (`s`, `m`, `h`, `d`, `w`). Distinct from `stability` (content reliability) and `lifecycle` (development phase).
```yaml
mx:
cacheability: long-lived
```
---
### 6.11 `readingLevel`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
| **Valid values** | beginner, intermediate, advanced, expert |
Content reading level. Helps agents recommend content based on user expertise.
```yaml
mx:
readingLevel: intermediate
```
---
### 6.12 `runbook`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | SHOULD (Level 2) |
Operational instructions for agents. Describes how to interpret and act on this document. The runbook SHOULD be written in imperative voice and SHOULD be specific enough that an agent can act on it without reading the full document body. Particularly valuable for machine-facing documents where the document structure is not self-evident.
```yaml
mx:
runbook: "Parse the fields array. Each entry has name, type, definition, status, and profile."
```
---
### 6.13 `confidential`
| Property | Value |
|----------|-------|
| **Type** | boolean |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
| **Default** | false |
Whether this record must be excluded from public outputs. Authors SHOULD only declare this field when marking content as confidential.
```yaml
mx:
confidential: true
```
---
### 6.14 `inherits`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Path to the file this document extends. The inheriting file adds MX metadata on top of the target's content. The target can be any file type (`.md`, `.html`, `.json`, `.yaml`, etc.). The inheriting file extends the target; it does not replace it. The path MAY be relative or absolute. For folder-level field inheritance, an `inheritable` field on the parent folder's metadata (out of scope for this note) is the preferred mechanism.
```yaml
mx:
inherits: "README.md"
```
---
### 6.15 `ld`
| Property | Value |
|----------|-------|
| **Type** | object |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Inline JSON-LD (Schema.org) expressed in YAML frontmatter. Enables structured data without a separate `