Effective Schema Export
Audience: tool authors handing resolved note-type contracts to agents and other tools.
Authoritative for:
- the
typedmark:effective-schemaexport document for one concrete note type - field provenance across Core, local, ancestor, and property-set layers
See also:
- Note Type Schemas: how the effective schema is built
- Schema Reuse and Property Sets: the layers a field can come from
- Extensions and Capabilities: contract identity and versions
This is an optional interchange contract. Agents and editors need "what fields does a meeting have, and where do they come from?" without reimplementing inheritance and composition. A tool that supports it exports one read-only document per concrete type; collections never store or declare these documents, and validation never reads them.
Export Document#
The document is plain JSON. Every value is the effective one, after Core defaults, inheritance, property sets, and local definitions, and each field records the layer that last defined it:
{
"contract": "typedmark:effective-schema",
"version": "0.1.0",
"specification_version": "0.1.0",
"note_type": "meeting",
"label": "Meeting",
"description": "A dated meeting note.",
"ancestors": ["event"],
"fields": {
"title": {"definition": {"type": "text", "nullable": true}, "origin": {"kind": "core"}},
"meeting_date": {"definition": {"type": "date"}, "origin": {"kind": "ancestor", "source": "event"}},
"attendees": {"definition": {"type": "list", "items": {"type": "text"}}, "origin": {"kind": "property_set", "source": "people"}},
"status": {"definition": {"type": "text", "allowed_values": ["draft", "final"]}, "origin": {"kind": "local"}}
},
"storage": {"folder_pattern": "Meetings", "note_name_pattern": "{meeting_date} - {title}"},
"headings": {"required_h2": ["Agenda", "Notes"], "optional_h2": [], "allow_other_h2": true, "require_order": false, "require_h1_title": false},
"relationships": {
"belongs_to": {"allowed_note_types": {}},
"related_to": {"allowed_note_types": {}},
"contains": {"allowed_note_types": {}},
"depends_on": {"allowed_note_types": {}}
},
"mandatory_tags": ["meeting"],
"unknown_field": "error"
}
Rules:
- ES-1 An effective-schema document MUST describe one concrete note type of one collection snapshot and satisfy
schema/json-schema/effective-schema.schema.json. - ES-2 A document MUST contain
contractequal totypedmark:effective-schema,version,specification_version,note_type,label,description,fields,storage,headings,relationships,mandatory_tags, andunknown_field. - ES-3 Every top-level value MUST be the type's effective value under
NTS-20, and an optional key with no effective value MUST be absent. - ES-4
ancestorsMUST list the abstract ancestor chain from the nearest parent to the farthest, and MUST be absent for a type withoutextends. - ES-5
fieldsMUST contain every effective field and every Core-defined field, each with its effectivedefinitionand anorigin. - ES-6
origin.kindMUST becore,local,ancestor, orproperty_set, naming the last layer that declared the field;ancestorandproperty_setorigins MUST name that layer's slug insource. - ES-7
mandatory_tagsMUST be the effective mandatory tags ofCM-231, in that order. - ES-8
unknown_fieldMUST be the effective severity for the type's managed-note frontmatter. - ES-9 Producers MUST NOT store a document under
<metadata_directory>, and validation MUST NOT read one, asNTS-22requires. - ES-10 Two producers given the same collection snapshot and type MUST produce documents equal under JSON value equality.