Field Definition Reference
Audience: collection authors.
Authoritative for:
- frontmatter property types
- every field-definition property: human-facing metadata, constraints, generation, uniqueness, immutability, relationship contribution, and vocabulary references
- directional compatibility and conversion between field definitions
See also:
- Foundations: the shared expression language, parsing baselines, and string comparison
- Managed Notes and Properties: the managed note contract, field names, core-defined fields, materialization, and optionality
- Note Links: the link forms and resolution used by
format: note_linkfields - Collection Model: property sets and vocabularies
Frontmatter Property Types#
Every field definition is a YAML mapping with type and any applicable field-definition properties, such as label, description, icon, format, generated, computed, unique, deprecated, immutable, optional, nullable, default_value, validate_exists, not_empty, not_blank, regex, min, max, and allowed_values.
Property applicability at a glance:
| Property | Applies to | Default or key restriction |
|---|---|---|
type |
every field definition | physically required |
items |
list |
required for lists; absent elsewhere |
fields |
object |
required for objects; absent elsewhere |
label, description, icon |
any declared field | optional human-facing metadata |
generated |
declared fields | false; strategies are unavailable on anonymous items |
computed |
top-level text fields |
sibling-field derivation only |
unique |
top-level scalar fields | false; per-note-type or collection scope |
deprecated |
declared fields | false |
immutable |
top-level and nested object fields | false; unavailable on anonymous items |
optional |
declared fields | false; changes value requirements, not storage shape |
nullable |
declared fields except anonymous items |
derived from optional when omitted |
default_value |
declared fields except anonymous items |
unavailable with generation strategies or computed |
relationship_kind |
top-level note-link fields | belongs_to or related_to |
format |
text, link, and time where supported |
required for link and time |
validate_exists, targets |
note-link definitions | existence and target-type checks |
not_empty |
text, link, list, tags, object | false |
not_blank, regex |
text and link | false / absent |
min, max |
scalar, temporal, list, and tags types listed below | absent |
allowed_values, allowed_values_from |
supported scalar/list types; vocabularies additionally support tags | mutually exclusive |
const_value, value_from_schema |
declared fields | mutually exclusive with each other and with computed or a generation strategy |
Field Definition Property Reference#
Rules:
- FDR-1 Field-definition properties apply to top-level fields, to
list.items, and recursively to nested fields insideobject.fieldsunless a type-specific rule says otherwise. - FDR-2 Human-facing field metadata MUST NOT change field identity, storage keys, type validation, optionality semantics, relationship semantics, or materialization behavior.
- FDR-3 Constraint properties other than
nullableandoptionalare evaluated only when the stored value is non-null. - FDR-4 A non-null
default_valueMUST satisfy all declared field constraints.
Field Value Equality#
Several field features compare values. These rules define one type-aware equality model so uniqueness, constants, and allowed values cannot disagree.
Rules:
- FDR-239 Every field-value comparison that this page defines as exact equality MUST compare parsed values under the declared field definition.
- FDR-240
textandlinkstrings are equal when their NFC-normalized code points are equal with case preserved. - FDR-241
integerandnumbervalues are equal when their numeric values are equal, andcheckboxvalues are equal when their boolean values are equal. - FDR-242
dateandtimevalues are equal when they denote the same calendar date or wall-clock time, anddatetimevalues are equal when they denote the same instant regardless of offset notation. - FDR-243
listandtagsvalues are equal when they have the same length and their entries are pairwise equal in sequence order under the applicable item definition. - FDR-244
objectvalues are equal when they have the same keys and their field values are equal recursively;anyvalues use the same scalar, sequence, and mapping equality rules recursively after YAML parsing.
Field Compatibility and Conversion#
Field compatibility matters when a consumer treats values governed by different field definitions as one logical value. Examples include a multi-type dataset, a relationship rollup, an import mapping, or a field retype migration. Compatibility is directional: converting a source field to a target field does not imply that an edited target value can be converted back.
The conversion class describes the source and target property types. Actual compatibility additionally depends on nullability and the target definition's constraints. An identity conversion from one text field to another is therefore exact at the type level, but a source value can still be incompatible with a narrower target regex or allowed_values constraint.
Supported conversions:
| Source | Target | Class | Non-null condition and result |
|---|---|---|---|
| any field type | the same field type | exact | preserve the parsed value unchanged |
integer |
number |
lossless | preserve the numeric value |
date, time, datetime, or link |
text |
lossless | preserve the parsed string unchanged |
tags |
list whose items.type is text |
lossless | preserve the sequence and every string unchanged |
any property type other than any |
any |
lossless | preserve the parsed value unchanged |
number |
integer |
conditional | the numeric value has no fractional component; preserve its numeric value |
text |
link, date, time, or datetime |
conditional | the string satisfies the complete target definition; preserve the string unchanged |
list whose items.type is text |
tags |
conditional | the complete sequence satisfies the target tags definition; preserve it unchanged |
any |
any property type other than any |
conditional | the parsed value satisfies the complete target definition; preserve it unchanged |
For example, an integer estimate can feed a number column losslessly. The number 3 can convert back to an integer, while 3.5 cannot. A date cannot become a datetime under this contract because choosing a time and offset would invent information.
A multi-type action view illustrates why the distinctions matter. Goals, plans, projects, and tasks may all expose urgency, while formula results such as priority_score contribute read-only numeric columns used for sorting and averages. Resolving every source property and formula result to a field definition makes those combinations testable. A matching property name does not prove compatible constraints or meaning, and estimates expressed in minutes and days do not become interchangeable without a separate unit conversion contract.
Rules:
- FDR-249 Every field conversion MUST identify one complete field definition as its source and one complete field definition as its target.
- FDR-250 Field conversion MUST be evaluated in the source-to-target direction.
- FDR-251 A source-target property-type pair MUST be classified as exact, lossless, conditional, or incompatible.
- FDR-252 Two field definitions with the same declared
typeMUST use the exact conversion in the Supported conversions table. - FDR-253 Non-exact source-target conversions MUST be limited to the pairs in the Supported conversions table.
- FDR-254 A supported conversion MUST produce the result stated in the Supported conversions table.
- FDR-255 A conditional conversion MUST be applicable only when its stated condition holds.
- FDR-256 Every source-target property-type pair not covered by the Supported conversions table MUST be incompatible.
- FDR-257 A non-null source value is compatible with a target definition only when its conversion is supported, its conditional requirement when present holds, and its output satisfies the target type and all applicable target value constraints.
- FDR-258 A null source value is compatible with a target definition only when the target permits null.
- FDR-259 A compatible null source value MUST convert to null.
- FDR-260 An absent or undeclared source field is not a field value and MUST NOT be converted by these rules.
- FDR-261 The consumer of field conversion MUST define how an absent or undeclared source field affects that consumer's result.
- FDR-262 A conversion MUST NOT modify the stored source value.
- FDR-263 A conversion MUST NOT substitute a default value for an incompatible source value.
- FDR-264 A conversion MUST NOT substitute null for an incompatible source value.
- FDR-265 A conversion MUST NOT round or truncate a numeric source value.
- FDR-266 A conversion MUST NOT infer a time, timezone, offset, link format, list-item conversion, object-field conversion, unit conversion, or semantic value mapping that the Supported conversions table does not define.
- FDR-267 An incompatible type pair or incompatible source value MUST be reported to the invoking consumer instead of being coerced.
- FDR-268 Equality, ordering, grouping, and constraint evaluation after conversion MUST use the target field definition.
- FDR-269 A source field definition is unconditionally compatible with a target definition only when every value permitted by the complete source definition, including null when permitted, is compatible with the target definition.
- FDR-270 A source field definition is conditionally compatible with a target definition when their type pair is supported but at least one value permitted by the source definition can be incompatible with the target definition.
- FDR-271 A source field definition is incompatible with a target definition when their source-target property-type pair is incompatible.
- FDR-272 A finite set of current source values is compatible with a target definition only when every present value in the set is compatible with the target definition.
- FDR-273 A tool claiming compatibility for a finite set of current values MUST evaluate every present value in that set.
- FDR-274 Matching field names, labels, descriptions, icons, or stored YAML shapes MUST NOT establish field compatibility by themselves.
- FDR-275 Conversion compatibility does not assert that two fields have the same domain meaning.
- FDR-276 A consumer combining differently governed fields MUST declare which source field maps to which target field or result column.
- FDR-277 A successful source-to-target conversion MUST NOT imply that target-to-source conversion is supported.
- FDR-278 A consumer MAY write an edited target value back to a source field only when that edited value is compatible in the target-to-source direction and the consumer defines an unambiguous write operation.
- FDR-279 A converted result MUST remain read-only when the write-back requirement in
FDR-278is not satisfied. - FDR-280 Conversion MUST NOT override
computed,generated,immutable, uniqueness, relationship, or other write and collection-context semantics of either field definition.
type#
Rules:
- FDR-5
typeis REQUIRED on every field definition. - FDR-6 Supported
typevalues aretext,integer,number,checkbox,date,time,datetime,link,list,tags,object, andany. - FDR-7 Field definitions MUST NOT use unknown property types.
- FDR-8
textvalues MUST be YAML strings. - FDR-9
integervalues MUST be YAML numbers with no fractional component. - FDR-10 Markdown syntax inside property values has no special meaning.
- FDR-11
numbervalues MUST be YAML numbers. - FDR-12
checkboxvalues MUST be eithertrueorfalse. - FDR-13
dateMUST use RFC 3339 full-date formatYYYY-MM-DD. - FDR-14
timevalues MUST be YAML strings and MUST match the declared timeformat. - FDR-15
datetimeMUST use RFC 3339 date-time format with seconds and an explicit timezone designator such asZor+02:00. - FDR-16
dateandtimevalues are floating: they carry no timezone and denote a calendar date or wall-clock time as written; when a rule needs to place them in time, they are interpreted in the collection timezone defined in Collection Model. - FDR-17
datetimevalues denote exact instants: twodatetimevalues are equal when they denote the same instant regardless of offset notation, and temporal ordering compares instants. - FDR-18 Because stored
datetimevalues carry explicit offsets anddateandtimevalues are floating, no daylight-saving disambiguation is required; the only conversions this specification defines are instant-to-collection-timezone conversions, which are always well defined. - FDR-19
linkvalues MUST be YAML strings and MUST follow the declared linkformat. - FDR-20 Stored
listvalues MUST be YAML sequences. - FDR-21
tagsvalues MUST be YAML sequences of tag strings. - FDR-22
tagsentries MUST be non-empty strings. - FDR-23 A
tagsentry is one or more segments joined by single/separators; each segment MUST consist of Unicode letters, digits, underscores, and hyphens, and MUST NOT start with a hyphen. In the ECMA-262 dialect with theuflag:^[\p{L}\p{N}_][\p{L}\p{N}_-]*(?:\/[\p{L}\p{N}_][\p{L}\p{N}_-]*)*$. - FDR-24
tagsentries MUST NOT include a leading#; the#prefix belongs to inline body syntax, which carries no structural meaning. - FDR-25 The
/separator expresses hierarchy:project/alphais a descendant ofproject. This specification assigns the separator that meaning but does not define controlled vocabularies or validate entries against a taxonomy. - FDR-26 Entries within one stored
tagsvalue MUST be unique under the string comparison rules defined in Foundations; a duplicate entry is aninvalid_field_valuefailure. - FDR-27 A
tagsentry that violates this grammar is aninvalid_field_valuefailure. - FDR-28 Stored
objectvalues MUST be YAML mappings. - FDR-29
anyvalues MAY be any non-null YAML value, and MAY benullonly whennullable: true. - FDR-30 YAML scalar, sequence, and mapping values are all supported when they satisfy the declared property type.
- FDR-31 A core-defined managed-note field name MAY still use a dedicated structured value only when this specification explicitly defines that field's contract.
items#
Rules:
- FDR-32
itemsMAY appear only whentype: list. - FDR-33 A field definition with
type: listMUST declareitems. - FDR-34
itemsMUST be a valid field definition. - FDR-35
itemsMUST NOT declaredefault_valuebecause anonymous list elements are not materialized independently. - FDR-36
itemsMUST NOT declarenullablebecause list elements are not materialized independently. - FDR-37
itemsMUST NOT declareimmutablebecause anonymous list elements are not tracked individually. - FDR-38
itemsMAY use any supported property type. - FDR-39 Fields with
type: tagsMUST NOT declareitems. - FDR-40 Fields with
type: objectMUST NOT declareitems.
fields#
Rules:
- FDR-41
fieldsMAY appear only whentype: object. - FDR-42 A field definition with
type: objectMUST declarefields. - FDR-43
fieldsMUST be a mapping, even when it is empty. - FDR-44 Nested field definitions inside
object.fieldsfollow the same type, materialization, and value-requirement rules as top-level field definitions unless a type-specific rule says otherwise. - FDR-45 Nested list and object properties are supported.
label#
Rules:
- FDR-46
labelMAY be omitted. - FDR-47
labelis the human-facing name of the field and MUST NOT change the stored field key. - FDR-48 If present,
labelMUST be a non-empty string.
description#
Rules:
- FDR-49
descriptionMAY be omitted. - FDR-50
descriptionis human-facing explanatory metadata for generated references, forms, and authoring interfaces. - FDR-51 If present,
descriptionMUST be a non-empty string.
icon#
Rules:
- FDR-52
iconMAY be omitted. - FDR-53
iconis human-facing field metadata for generated references and applications. - FDR-54 If present,
iconMUST be a non-empty string. - FDR-55 The core specification treats
iconas opaque and does not standardize icon libraries or rendering behavior.
generated#
Rules:
- FDR-56
generatedMAY be omitted. - FDR-57
generatedMUST befalse,true, or a generation strategy. - FDR-58 If omitted,
generateddefaults tofalse. - FDR-59 A field is generated when
generatedistrueor declares a generation strategy. - FDR-60
generated: truemarks a field whose values are produced by tool-defined means this specification does not standardize, such as AI-written summaries. - FDR-61 A generation strategy makes value production portable: every conforming tool MUST produce values as the strategy defines.
- FDR-62
generateddoes not make a field virtual. Generated fields still follow the same type validation, optionality, stored-frontmatter, and canonical materialization rules as other declared fields. - FDR-63 A generation strategy does not constrain stored values; validation of stored values uses only the field's declared type and constraints.
- FDR-64 A field declaring a generation strategy MUST NOT declare
default_value,const_value, orvalue_from_schema; the strategy is the field's defaulting behavior. - FDR-65 A generated value MUST satisfy the field's declared type and constraints; a schema MUST NOT combine a strategy with constraints the strategy's values cannot satisfy.
- FDR-66
itemsMUST NOT declare a generation strategy, because anonymous list elements are not materialized independently;generatedonitemsMUST be a boolean. - FDR-67 Deriving a value from other fields is not a generation strategy on
generated; sibling-field derivation usescomputed, defined below.
Supported generation strategies:
- FDR-68
nowis valid fordate,time, anddatetimefields. - FDR-245 When a tool creates a note or first materializes a
nowfield without a concrete value, it MUST use the current instant in the collection timezone defined in Collection Model. - FDR-246 A tool MUST render a
nowvalue according to the field's declared type andformat. - FDR-247 A generated
datetimevalue SHOULD carry the collection timezone's offset at the generated instant. - FDR-248 A tool MUST NOT overwrite an existing concrete non-null value of a
nowfield. - FDR-69
now_on_writeis valid fordate,time, anddatetimefields. Every tool that writes changes to the managed note MUST set the field to the current instant in the collection timezone as part of that write; the refresh itself does not count as a further change. A field withnow_on_writeMUST NOT declareimmutable: true. - FDR-70
uuidis valid fortextfields. The tool MUST generate an RFC 4122 version 4 UUID in lowercase form, once; it MUST NOT overwrite an existing concrete non-null value. Lowercase UUIDs satisfyformat: slug, souuidMAY be used for the core-definedidfield. - FDR-71
ulidis valid fortextfields. The tool MUST generate a ULID written in lowercase, so the value satisfiesformat: slug, once; it MUST NOT overwrite an existing concrete non-null value. - FDR-72
{ random: n }is valid fortextfields.randomMUST be a positive integer. The tool MUST generatencharacters drawn uniformly from the lowercase lettersathroughzand the digits0through9, once; it MUST NOT overwrite an existing concrete non-null value. - FDR-73
{ sequence: { start, scope } }is valid forintegerfields.startMAY be omitted and defaults to1;scopeMAY be omitted, MUST benote_typeorcollectionwhen present, and defaults tonote_type. The generated value is one greater than the highest stored value of this field across the managed notes in scope, orstartwhen no stored value exists;note_typescope spans managed notes of the same note type andcollectionscope spans all managed notes. The value is produced once: a tool MUST NOT overwrite an existing concrete non-null value.
Generation behavior rules:
- FDR-74 Tools that create, scaffold, or import managed notes MUST apply every declared generation strategy before writing the note.
- FDR-75 Generation alone guarantees no uniqueness: random values MAY collide and hard deletion MAY free sequence values. When the field also declares
unique, the tool MUST verify the generated value against the field's uniqueness scope and regenerate on collision. - FDR-76 A note authored without a tool MAY lack generated values; the field's normal optionality and nullability rules decide whether the note conforms, and a tool that later normalizes the note MUST generate the missing values of once-produced strategies.
- FDR-77 The once-produced strategies pair naturally with
immutable: truewhen manual edits should be prevented as well.
computed#
computed defines a stored text field whose value is derived from sibling frontmatter fields instead of being authored directly. Unlike generated, it is not about value origination from time, randomness, identity, or tool-specific automation; it is the single schema-defined mechanism for sibling-field derivation in this specification version. It uses the shared text-template expression context defined in Foundations.
Example:
first_name:
type: text
nullable: false
last_name:
type: text
nullable: false
full_name:
type: text
computed: '${capitalize(first_name)} ${capitalize(last_name)}'
nullable: false
Rules:
- FDR-218
computedMAY be omitted. - FDR-219 If present,
computedMUST be a non-empty string in the shared text-template expression context defined in Foundations. - FDR-220
computedMAY be declared only on top-level frontmatter fields. - FDR-221
computedis the single schema-defined mechanism for deriving a field value from sibling fields of the same managed note. - FDR-222
generatedandcomputedare distinct:generatedcovers value origination without sibling-field inputs;computedcovers sibling-field derivation. - FDR-223 A field declaring
computedMUST declaretype: text. - FDR-224 A field declaring
computedMUST NOT declaregenerated,default_value,const_value, orvalue_from_schema; the computed expression is the field's materialization behavior. - FDR-225 A field declaring
computedMUST NOT declareimmutable: true, because its stored value is recomputed from its dependencies. - FDR-226
computeddoes not make a field virtual. Computed fields still follow the same type validation, optionality, stored-frontmatter, and canonical materialization rules as other declared fields. - FDR-227 For
computed, the shared expression-language scope is the managed note's sibling top-level fields in the effectivefrontmatter. - FDR-228 Every reference name used by a
computedexpression MUST resolve to a sibling top-level field declared in the same effectivefrontmatter, and MUST NOT resolve to the declaring field itself or to a field that itself declarescomputed. - FDR-229 Every field referenced by a
computedexpression MUST declaretype: text. - FDR-230
computeduses the shared expression-language syntax and shared transform semantics defined in Foundations; it defines no local syntax extensions. - FDR-231 A
computedexpression is evaluated against the managed note's materialized sibling-field values after non-computed defaults, schema-derived values, and generation strategies have been applied. - FDR-232 Every referenced field MUST hold a concrete non-null string when the
computedexpression is evaluated; otherwise the computed field has no conforming value and MUST be reported asinvalid_field_value. - FDR-233 Tools that create, scaffold, import, normalize, or otherwise write managed-note frontmatter MUST evaluate every
computedexpression and store the resulting value before writing the note. - FDR-234 A stored computed value MUST equal the result of its
computedexpression; a mismatch is aninvalid_field_valuefailure. - FDR-235 The computed result MUST satisfy the field's declared constraints; a schema MUST NOT combine
computedwith constraints its expression cannot satisfy. - FDR-236
computedMUST NOT depend on the note body, resolved note links, query results, collection-global state, or any data outside the sibling-field scope defined above. - FDR-237 A
computedfield whose stored value disagrees with its evaluated expression is a note-levelinvalid_field_valuefailure, not a schema-shape failure. - FDR-238 A syntactically invalid shared expression, an unresolved sibling-field reference, a type-incompatible reference, or an unknown transform name makes the declaring artifact invalid.
unique#
Rules:
- FDR-78
uniqueMAY be omitted. - FDR-79
uniqueMUST be a boolean or the stringcollection. - FDR-80 If omitted,
uniquedefaults tofalse. - FDR-81
uniqueMAY be declared only on top-level frontmatter fields. - FDR-82
unique: trueandunique: collectionare valid only for scalar field types:text,integer,number,checkbox,date,time,datetime, andlink. - FDR-83
unique: truemeans every non-null stored value for that field MUST be distinct across all managed notes of the same note type. - FDR-84
unique: collectionmeans every non-null stored value for that field MUST be distinct across all managed notes in the collection, regardless of note type, comparing fields that share this field name. - FDR-85 Uniqueness is evaluated using the type-aware Field Value Equality rules on this page, not by note-link resolution.
- FDR-86 Multiple
nullvalues do not violate uniqueness. - FDR-87 A repeated non-null value for a field with
unique: trueis aduplicate_unique_valuevalidation failure, as defined in Collection Model. - FDR-88 If a unique value may be assigned later, the RECOMMENDED pattern is
nullable: truewithdefault_value: null.
deprecated#
Rules:
- FDR-89
deprecatedMAY be omitted. - FDR-90
deprecatedMUST be a boolean. - FDR-91 If omitted,
deprecateddefaults tofalse. - FDR-92
deprecated: truemarks a field as discouraged for new use. - FDR-93 A deprecated field remains valid and governed by the same type validation, optionality, defaulting, stored-frontmatter, and canonical materialization rules as any other declared field.
- FDR-94 This specification version does not define replacement mappings, migration behavior, or automatic validator severities for deprecated fields.
immutable#
Rules:
- FDR-95
immutableMAY be omitted. - FDR-96
immutableMUST be a boolean. - FDR-97 If omitted,
immutabledefaults tofalse. - FDR-98
immutable: truemeans that once the field holds a concrete non-null stored value, that value MUST NOT change. - FDR-99 Immutability is an obligation on tools and operations that modify managed notes; because conformance evaluation is stateless, a validator MAY verify immutability only when it has access to historical state.
- FDR-100 A
rename_fieldmigration moves an immutable value unchanged; achange_fieldmigration MAY change a field'simmutabledeclaration. - FDR-101
const_valueandvalue_from_schemaare stronger guarantees thanimmutable; a field declaring either need not also declareimmutable. - FDR-102 The core-defined
idfield is immutable whether or not its definition declares it. - FDR-103
immutableMAY be declared on top-level fields and on nested fields insideobject.fields; it MUST NOT be declared onitems.
optional#
Rules:
- FDR-104
optionalMAY be omitted. - FDR-105
optionalMUST be a boolean. - FDR-106 If omitted,
optionaldefaults tofalse. - FDR-107
optionaldefines value requirements, not sparse-storage behavior. - FDR-108 A field with
optional: trueMUST be nullable in the effective schema. - FDR-109 A schema MUST NOT yield a field definition with
optional: trueandnullable: false. - FDR-110 Fields with
optional: trueare semantically OPTIONAL, not sparse. - FDR-111 Fields with
optional: trueMAY remainnullindefinitely when materialized.
nullable#
Rules:
- FDR-112
nullableMAY be omitted. - FDR-113
nullableMUST be a boolean. - FDR-114 If
optional: falseandnullableis omitted,nullabledefaults tofalse. - FDR-115 If
optional: trueandnullableis omitted,nullabledefaults totrue. - FDR-116 A field with
nullable: trueMAY explicitly use the valuenull. - FDR-117 If a field is not nullable and no explicit value or
default_valueis available, the field still MUST be present and the note MUST be treated as non-conforming until a conforming concrete value is supplied.
default_value#
Rules:
- FDR-118
default_valueMAY be used on any field definition that does not declare a generation strategy, as defined undergenerated. - FDR-119
default_valueMUST conform to the declared field type, or MAY benullonly whennullable: true. - FDR-120
default_valueapplies during field materialization when the field has no explicit concrete value. - FDR-121 An explicit
nullvalue is distinct from an absent field and MUST NOT be replaced bydefault_value. - FDR-122
default_valuedoes not waive the physical presence requirement for declared fields. - FDR-123 If
nullable: trueand no explicitdefault_valueis provided, the implicit materialization default isnull. - FDR-124 The RECOMMENDED pattern for a field that MUST always be present but MAY have no concrete value is
nullable: truewithdefault_value: null.
relationship_kind#
Rules:
- FDR-125
relationship_kindMAY be omitted. - FDR-126 If present,
relationship_kindMUST be eitherbelongs_toorrelated_to. - FDR-127
relationship_kindMAY be declared only on top-level frontmatter fields. - FDR-128 A field with
relationship_kindMUST havetype: linkandformat: note_link, ortype: listwhoseitems.typeislinkanditems.formatisnote_link. - FDR-129 A field without
relationship_kindMAY still useformat: note_link, but it does not contribute to typed relationship conformance. - FDR-130 The semantics of
relationship_kindare defined in Relationships, Headings, and Templates.
format#
Rules:
- FDR-131
formatMAY be omitted. - FDR-132 Supported
formatvalues areslug,note_link,uri,hh:mm,hh:mm:ss, andhh:mm:ss.sss. - FDR-133
type: linkMUST declareformat. - FDR-134
type: timeMUST declareformat. - FDR-135
format: slugis valid only fortype: textorlist.items.type: text. - FDR-136
format: note_linkis valid only fortype: linkorlist.items.type: link. - FDR-137
format: uriis valid only fortype: linkorlist.items.type: link. - FDR-138
format: hh:mm,format: hh:mm:ss, andformat: hh:mm:ss.sssare valid only fortype: timeorlist.items.type: time. - FDR-139 Values with
format: slugMUST match^[a-z0-9]+(?:-[a-z0-9]+)*$. - FDR-140 Values with
format: uriMUST be absolute URIs with a non-empty scheme and valid syntax according to RFC 3986. Relative references MUST NOT be used. - FDR-141 Values with
format: note_linkMAY be the empty string as an explicit placeholder when no concrete link is known. - FDR-142 Non-empty values with
format: note_linkMUST use the note-link syntax and resolution rules defined in Note Links. - FDR-143 An empty-string value with
format: note_linkdoes not resolve to a managed note and does not contribute to relationship conformance. - FDR-144 Values with
format: hh:mmontype: timeorlist.items.type: timeMUST use a 24-hour clock and match^(?:[01]\d|2[0-3]):[0-5]\d$. - FDR-145 Values with
format: hh:mm:ssontype: timeorlist.items.type: timeMUST use a 24-hour clock and match^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$. - FDR-146 Values with
format: hh:mm:ss.sssontype: timeorlist.items.type: timeMUST use a 24-hour clock and match^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d\.\d{3}$.
validate_exists#
Rules:
- FDR-147
validate_existsMAY be omitted. - FDR-148
validate_existsMUST be a boolean. - FDR-149 If omitted,
validate_existsdefaults tofalse. - FDR-150
validate_existsis valid only on field definitions that declareformat: note_link, includinglist.items. - FDR-151
validate_exists: truemeans every non-empty stored note-link value MUST resolve to exactly one existing collection note under the note-link resolution rules defined in Note Links. - FDR-152 An empty-string placeholder value does not violate
validate_exists; combine it withnot_empty: trueto forbid placeholders entirely. - FDR-153 A non-empty value that does not resolve violates
validate_existsand is reported asinvalid_note_link. - FDR-154
validate_existsdoes not change relationship counting; unresolved placeholders already fail minimum-cardinality requirements.
targets#
Rules:
- FDR-155
targetsMAY be omitted. - FDR-156 If present,
targetsMUST be a non-empty list of unique note-type identifiers. - FDR-157
targetsis valid only on field definitions that declareformat: note_link, includinglist.items. - FDR-158 Each identifier in
targetsMUST resolve to a note type defined in the collection; it MAY name an abstract note type. - FDR-159 An abstract note type in
targetsmeans any concrete note type that extends it directly or transitively. - FDR-160 A non-empty stored value that resolves to a managed note MUST resolve to a note whose concrete note type satisfies
targets; a value resolving to an untyped note violatestargets. - FDR-161 A
targetsviolation is aninvalid_field_valuefailure. - FDR-162 An unresolved value does not violate
targets; existence is governed byvalidate_exists. - FDR-163 For values stored in a field declaring
targets, the id, name, and alias passes of name-based resolution consider only managed notes whose concrete note type satisfiestargets; path-formed targets resolve normally and are then validated againsttargets. - FDR-164 A relationship-bearing field MAY declare
targets; its declared targets SHOULD be consistent with the type-level relationship declarations, and a resolved typed relationship instance is validated against both.
not_empty#
Rules:
- FDR-165
not_emptyMAY be omitted. - FDR-166
not_emptyMUST be a boolean. - FDR-167 If omitted,
not_emptydefaults tofalse. - FDR-168
not_empty: trueis valid only fortype: text,type: link,type: list,type: tags, ortype: object. - FDR-169 For
type: textandtype: link,not_empty: truemeans the stored string MUST NOT be"". - FDR-170 For
type: listandtype: tags,not_empty: truemeans the stored sequence MUST contain at least one item. - FDR-171 For
type: object,not_empty: truemeans the stored mapping MUST contain at least one key.
not_blank#
Rules:
- FDR-172
not_blankMAY be omitted. - FDR-173
not_blankMUST be a boolean. - FDR-174 If omitted,
not_blankdefaults tofalse. - FDR-175
not_blank: trueis valid only fortype: textortype: link. - FDR-176
not_blank: truemeans the stored string MUST contain at least one non-whitespace character. - FDR-177
not_blank: trueis stronger thannot_empty: true.
regex#
Rules:
- FDR-178
regexMAY be omitted. - FDR-179
regexMUST be a non-empty string. - FDR-180
regexis valid only fortype: textortype: link. - FDR-181
regexis matched against the entire stored string value. - FDR-182
regexpatterns use the ECMA-262 regular expression dialect defined in Foundations.
min#
Rules:
- FDR-183
minMAY be omitted. - FDR-184
minis valid only fortype: text,type: link,type: integer,type: number,type: date,type: time,type: datetime,type: list, ortype: tags. - FDR-185 For
type: textandtype: link,minconstrains string length in Unicode code points and MUST be a non-negative integer. - FDR-186 For
type: listandtype: tags,minconstrains item count and MUST be a non-negative integer. - FDR-187 For
type: integer,type: number,type: date,type: time, andtype: datetime,minconstrains the stored value itself and MUST conform to the declared field type andformatwhen applicable. - FDR-188 For
type: date,type: time, andtype: datetime,mincomparison uses temporal ordering, not raw string comparison.
max#
Rules:
- FDR-189
maxMAY be omitted. - FDR-190
maxis valid only fortype: text,type: link,type: integer,type: number,type: date,type: time,type: datetime,type: list, ortype: tags. - FDR-191 For
type: textandtype: link,maxconstrains string length in Unicode code points and MUST be a non-negative integer. - FDR-192 For
type: listandtype: tags,maxconstrains item count and MUST be a non-negative integer. - FDR-193 For
type: integer,type: number,type: date,type: time, andtype: datetime,maxconstrains the stored value itself and MUST conform to the declared field type andformatwhen applicable. - FDR-194 For
type: date,type: time, andtype: datetime,maxcomparison uses temporal ordering, not raw string comparison. - FDR-195 If both
minandmaxare present,minMUST be less than or equal tomax.
allowed_values#
Rules:
- FDR-196
allowed_valuesMAY be omitted. - FDR-197
allowed_valuesMUST be a non-empty list of unique scalar values. - FDR-198 For scalar field types,
allowed_valuesentries MUST be compatible with the declared propertytype. - FDR-199 For
type: list,allowed_valuesis valid only whenitems.typeis one oftext,integer,number,checkbox,date,time,datetime, orlink, and eachallowed_valuesentry MUST be compatible with that item type. - FDR-200 For
type: list, every stored item value MUST be one of the declaredallowed_values. - FDR-201
allowed_valuesMUST NOT be used withtype: tags,type: object, ortype: any. - FDR-202 Text and link
allowed_valuescomparisons use the Field Value Equality rules on this page. - FDR-203 Non-text scalar
allowed_valuescomparisons use the Field Value Equality rules after normal YAML parsing and type validation.
allowed_values_from#
Rules:
- FDR-204
allowed_values_fromMAY be omitted. - FDR-205 If present,
allowed_values_fromMUST be a non-empty slug naming a vocabulary defined intypedmark.mdvocabularies, as defined in Collection Model; a reference that does not resolve makes the declaring artifact invalid. - FDR-206
allowed_values_fromandallowed_valuesMUST NOT both be present on the same field definition. - FDR-207
allowed_values_fromis valid whereverallowed_valuesis valid, and additionally ontype: tags. - FDR-208 For every type except
tags,allowed_values_fromhas the same semantics as declaringallowed_valueswith the referenced vocabulary's values. - FDR-209 For
type: tags, every stored entry MUST equal a vocabulary value or be a descendant of one under the tag hierarchy rules; an entry outside the vocabulary is aninvalid_field_valuefailure.
const_value#
Rules:
- FDR-210
const_valueMAY be omitted. - FDR-211
const_valueMUST conform to the declared property type. - FDR-212
const_valueandvalue_from_schemaMUST NOT both be present on the same field definition. - FDR-213 If
const_valueis present, the stored value MUST equal it under the Field Value Equality rules on this page.
value_from_schema#
Rules:
- FDR-214
value_from_schemaMAY be omitted. - FDR-215 The only supported
value_from_schemavalue in this specification version isnote_type. - FDR-216
value_from_schema: note_typemeans the constant value is taken from the note type identifier of the schema currently being evaluated. - FDR-217 If
value_from_schemais present, the stored value MUST equal the derived schema value exactly.