Manifest-selected Decision
- Canonical id
- 0011-artifact-node-metadata-in-frontmatter
- Status
- accepted
- Catalog order
- 5
Catalog revision
35263c4c415da742953d0462804fb14424e2244dae4c63efd27e468988de70ab
0011: Artifact-form node metadata lives in frontmatter
Status: accepted Date: 2026-07-20
Context
The hook hoist (interchange contract v1, D3 — atlas #20) gave every node the
four-field header Kind:/Path:/Status:/Hook:. Artifact-form example
nodes are real runnable SKILL.md files shipped in place; the first migration
pass put the bold header fields into the skill body, which pollutes exactly
the prose an agent loads when the skill is installed. Avery's review of
scratchpad PR #38: corpus metadata does not belong in the skill body.
Decision
Artifact-form nodes carry the same four fields as lowercase
kind: / path: / status: / hook: keys in their existing YAML
frontmatter — the artifact's metadata block — never as body lines. Other
frontmatter keys (name, description, …) remain the artifact's own,
off-contract. Values may be double-quoted (the breadcrumb's bold final
segment would otherwise read as a YAML alias). A **Field:** body line in
an artifact is an audit --contract refusal (H2).
Amended into interchange contract v1 pre-adoption (the corpus pin does not
exist yet — atlas #22), with the conforming fixture and an
h2-artifact-body-field mutation updated in the atlas repo; cross-reference:
atlas PR #26 / interchange/CONTRACT.md §2.
Consequences
- Installed skills stay byte-honest: the runnable body is exactly what the corpus teaches with, per §3's "ship the true, installable thing".
- The checker reads frontmatter for
SKILL.mdnodes and body fields for everything else; authors edit hooks in one place either way andcorpus.py sync-hooksderives the README tail identically.