# llms-understanding.txt — MX as proposed for ratification
> 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, 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 pass-through fields. The vocabulary floor that any text-bearing artefact can adopt.
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.
4. **MX Extensions note** — namespace policy (standard / vendor-public / vendor-private prefixes) so vendors can extend MX without polluting the core vocabulary.
5. **MX Provenance note** — attribution, trust, maintenance, and decision-record references. The metadata that makes a document's origin and stewardship verifiable.
6. **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.
7. **MX Workflow Contracts note** — optional top-level fields for cogs that declare an executable approval, review, or procedural workflow.
8. **MX Agent Directory Discovery note** — three-layer discoverability standard for `llms.txt` and any agent-directory file: HTML transport, sitemap inclusion, in-page ``.
9. **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).
10. **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.
## Provenance of this bundle
**Generated:** 2026-04-28
**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 proposes one or more frontmatter fields, and every one of those fields is defined 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.
Every MX draft note proposes one or more frontmatter fields. Today each note repeats the same structural choices in slightly different prose: a heading, a property table, a definition, an example, and (sometimes) extra rules. The 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 proposes a single, vetted **pattern** for defining a frontmatter field inside any MX draft. Once the community ratifies the pattern, future 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 proposed.
The pattern itself is the proposal. **No new frontmatter fields are introduced in this note.** This note specifies *how* a field should be defined; *which* fields exist is the work of the sister notes that propose 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 proposes 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.
Existing field definitions that predate ratification of this pattern remain valid until the next revision of the host note; on that revision, all new and amended definitions MUST conform, and the host note SHOULD migrate any older definitions that are touched. 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 proposal; 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 proposes. 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 groups: **Zone 1 identity fields** (top-level document identity), **Zone 2 operational fields** (governance, classification, and distribution metadata under the `mx:` namespace), and **pass-through fields** (YAML keys whose semantics MX borrows from established external vocabularies — Dublin Core, Schema.org, BCP 47, SPDX — without redefinition).
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.
## 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 pass-through 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 1 identity fields** — top-level document identity (title, description, author, dates, version)
- **Zone 2 core operational fields** — classification, governance, and distribution metadata
- **Pass-through fields** — fields where MX provides a YAML key but defers the value semantics to a published external vocabulary
- **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 two-zone frontmatter model
MX metadata in YAML frontmatter is organised into two zones. **Zone 1** (top-level) carries document identity fields. **Zone 2** (under the `mx:` object) carries MX-operational fields. A **pass-through field** is a YAML key MX provides whose value semantics belong to an established external vocabulary; pass-through fields are listed in §6 and otherwise behave as Zone 1 or Zone 2 depending on the field.
**Zone 1 example:**
```yaml
title: "Document Title"
description: "Brief summary for search and AI agents"
author: "Author Name"
created: 2026-04-02
modified: 2026-04-16
version: "1.0"
```
**Zone 2 example:**
```yaml
title: "Document Title"
description: "Brief summary"
author: "Author Name"
created: 2026-04-02
modified: 2026-04-16
version: "1.0"
mx:
status: active
contentType: guide
tags: [metadata, example]
audience: [humans]
```
Implementations MUST NOT place Zone 1 fields inside the `mx:` object. Implementations MUST NOT place Zone 2 fields at the top level.
## 5. Zone 1 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, AI agents, 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 `author`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 1 (top-level) |
| **Conformance** | MUST (Level 1) |
Creator of the document. Person name or collaborative attribution.
```yaml
author: "Tom Cranstoun"
```
- The `author` 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.
- `author` is distinct from `maintainer` (§6.6). The author is the original creator; the maintainer handles ongoing updates.
### 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.
## 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. Different document contexts use different subsets of the valid values:
- **Standard lifecycle:** `draft`, `active`, `published`, `deprecated`, `archived`, `unknown`.
- **Decision records:** `proposed`, `accepted`, `rejected`, `superseded`.
- **Workflows:** `pending`, `review`, `approved`, `planning`, `open`, `closed`, `sent`.
- **Special:** `canonical` (an authoritative reference document).
```yaml
mx:
status: active
```
### 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 |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
| **Valid values** | specification, reference, guide, operational manual, dispatcher, configuration |
Why this document exists. Distinct from `contentType` (which classifies what a document is, not why it exists).
```yaml
mx:
purpose: reference
```
### 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 `maintainer`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Person or team responsible for maintaining this document. Distinct from `author` — the maintainer handles ongoing updates while the author is the immutable creator. This field is mutable and MAY change as stewardship transfers. When omitted, the `author` is assumed to also be the maintainer.
```yaml
mx:
maintainer: "Maxine"
```
### 6.7 `ownership`
| Property | Value |
|----------|-------|
| **Type** | string-or-object |
| **Zone** | 2 (mx:) |
| **Conformance** | MAY (Level 3) |
Ownership details. Can be a string (owner name) or an object with `owner`, `delegate`, and `contact` sub-fields.
```yaml
mx:
ownership: "Tom Cranstoun"
```
```yaml
mx:
ownership:
owner: "Tom Cranstoun"
delegate: "Maxine"
contact: "tom@example.com"
```
### 6.8 `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.9 `contentType`
| Property | Value |
|----------|-------|
| **Type** | string |
| **Zone** | 2 (mx:) |
| **Conformance** | SHOULD (Level 2) |
Machine-readable content type classification. Free-form (not constrained to an enumeration) to allow domain-specific content types. Common values: `specification`, `guide`, `reference`, `info-doc`, `identity`, `report`, `field-dictionary`, `standards-alignment`.
```yaml
mx:
contentType: field-dictionary
```
### 6.10 `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.11 `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.12 `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.13 `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.14 `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.15 `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`, `.cog.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.16 `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 `