<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Specification on Mergeway</title><link>https://mergewayhq.github.io/docs/reference/specification/</link><description>Recent content in Specification on Mergeway</description><generator>Hugo</generator><language>en</language><atom:link href="https://mergewayhq.github.io/docs/reference/specification/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://mergewayhq.github.io/docs/reference/specification/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/overview/</guid><description>&lt;h1 id="overview"&gt;Overview&lt;a class="anchor" href="#overview"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative unless marked otherwise.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Mergeway version 1 defines a file-based database. A &lt;a href="../terminology/"&gt;repository&lt;/a&gt; combines configuration documents, entity definitions, and record sources. Configuration gives independently stored YAML, JSON, Markdown, and OKF files one logical data model.&lt;/p&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Version 1 specifies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;recursive configuration loading and entity composition;&lt;/li&gt;
&lt;li&gt;native and JSON-Schema-derived field definitions;&lt;/li&gt;
&lt;li&gt;inline, single-record, multi-record, selector, and OKF data sources;&lt;/li&gt;
&lt;li&gt;field and path identifiers, references, and inheritance;&lt;/li&gt;
&lt;li&gt;format, schema, and reference validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It does not require a directory convention, Git, a particular editor, or a public service. Write-command behavior and tool-specific interfaces belong to their component references.&lt;/p&gt;</description></item><item><title>Terminology</title><link>https://mergewayhq.github.io/docs/reference/specification/terminology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/terminology/</guid><description>&lt;h1 id="terminology"&gt;Terminology&lt;a class="anchor" href="#terminology"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; These definitions apply to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and are normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="core-terms"&gt;Core terms&lt;a class="anchor" href="#core-terms"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Repository&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;The root used to resolve entity data-source paths and to express normalized record paths. A repository is also called a workspace in older CLI output.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Entry configuration&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;The configuration document passed to the implementation, normally &lt;code&gt;mergeway.yaml&lt;/code&gt; beneath the repository root.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Configuration document&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;A YAML file with a required &lt;code&gt;mergeway.version&lt;/code&gt; block and optional configuration includes or entity definitions.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Entity&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;A named logical type with an identifier definition, a field schema, and zero or more records. Entity names begin with an uppercase ASCII letter.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Record&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;One map of field names to values associated with exactly one entity. Older internal help may call a record an “object”; JSON object retains its format-specific meaning.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Data source&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Inline &lt;code&gt;data&lt;/code&gt;, a file matched by an entity &lt;code&gt;include&lt;/code&gt;, an &lt;code&gt;items&lt;/code&gt; array, or values selected from a document.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;A named value in a record governed by a field definition. A property is a nested field inside an &lt;code&gt;object&lt;/code&gt; field.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Identifier&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;The non-empty string representation that uniquely addresses a record within its entity and assignable inheritance hierarchy.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;A scalar identifier value, or repeated array of identifier values, whose field type names one or more target entities.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Assignable hierarchy&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;An entity together with all descendants that extend it. Parent-typed queries and references include descendants.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="path-terms"&gt;Path terms&lt;a class="anchor" href="#path-terms"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Configuration-relative path&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;A path resolved from the directory containing the configuration document. Top-level configuration &lt;code&gt;include&lt;/code&gt; entries and &lt;code&gt;json_schema&lt;/code&gt; use this base.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Repository-relative path&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;A slash-normalized path relative to the repository root. Entity data &lt;code&gt;include&lt;/code&gt; entries use the repository root as their base, including when the entity was declared in an included configuration document.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Normative pages use these terms consistently. Advice and conceptual background remain in &lt;a href="../../../explanation/repository-model/"&gt;the repository-model explanation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Conformance and requirement language</title><link>https://mergewayhq.github.io/docs/reference/specification/conformance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/conformance/</guid><description>&lt;h1 id="conformance-and-requirement-language"&gt;Conformance and requirement language&lt;a class="anchor" href="#conformance-and-requirement-language"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="requirement-keywords"&gt;Requirement keywords&lt;a class="anchor" href="#requirement-keywords"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The keywords &lt;strong&gt;MUST&lt;/strong&gt;, &lt;strong&gt;MUST NOT&lt;/strong&gt;, &lt;strong&gt;SHOULD&lt;/strong&gt;, &lt;strong&gt;SHOULD NOT&lt;/strong&gt;, and &lt;strong&gt;MAY&lt;/strong&gt; express requirement strength as described by RFC 2119 and RFC 8174 when, and only when, shown in capitals.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MUST&lt;/strong&gt; and &lt;strong&gt;MUST NOT&lt;/strong&gt; identify unconditional requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SHOULD&lt;/strong&gt; and &lt;strong&gt;SHOULD NOT&lt;/strong&gt; permit a departure only when its consequences are understood.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MAY&lt;/strong&gt; identifies optional behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Descriptive present-tense statements on normative pages are requirements of the version 1 data model even when a keyword would add no clarity. Examples are normative for structure and behavior but their names and values are non-normative.&lt;/p&gt;</description></item><item><title>Repository and configuration</title><link>https://mergewayhq.github.io/docs/reference/specification/repository-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/repository-configuration/</guid><description>&lt;h1 id="repository-and-configuration"&gt;Repository and configuration&lt;a class="anchor" href="#repository-and-configuration"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="entry-and-version"&gt;Entry and version&lt;a class="anchor" href="#entry-and-version"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An implementation loads one YAML entry configuration. The conventional path is &lt;code&gt;mergeway.yaml&lt;/code&gt;, but callers MAY select another path. The repository root is supplied separately and is the base for entity data paths.&lt;/p&gt;
&lt;p&gt;Every configuration document MUST contain:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;mergeway&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Version &lt;code&gt;1&lt;/code&gt; is the only version defined here. A missing &lt;code&gt;mergeway&lt;/code&gt; block, missing version, or other version is a configuration error.&lt;/p&gt;</description></item><item><title>Entity definitions</title><link>https://mergewayhq.github.io/docs/reference/specification/entities/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/entities/</guid><description>&lt;h1 id="entity-definitions"&gt;Entity definitions&lt;a class="anchor" href="#entity-definitions"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="names-and-members"&gt;Names and members&lt;a class="anchor" href="#names-and-members"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An entity name MUST begin with an uppercase ASCII letter. Remaining characters MAY be ASCII letters, digits, hyphens, or underscores.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Member&lt;/th&gt;
 &lt;th&gt;Requirement and meaning&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional human-readable string.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;identifier&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Required on a root entity; inherited by descendants.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;extends&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional name of one parent entity.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;include&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional array of &lt;a href="../records/"&gt;record sources&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;fields&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Native field map; mutually exclusive with &lt;code&gt;json_schema&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;json_schema&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration-relative JSON Schema path; mutually exclusive with &lt;code&gt;fields&lt;/code&gt; and inheritance.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional array of inline record maps.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;An entity MUST define native &lt;code&gt;fields&lt;/code&gt; or &lt;code&gt;json_schema&lt;/code&gt;. A descendant using native fields MAY inherit all its fields and add none. A concrete entity with no descendants MUST provide at least one &lt;code&gt;include&lt;/code&gt; or inline record. A schema-only entity MAY omit both only when another entity extends it.&lt;/p&gt;</description></item><item><title>Field definitions and types</title><link>https://mergewayhq.github.io/docs/reference/specification/fields/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/fields/</guid><description>&lt;h1 id="field-definitions-and-types"&gt;Field definitions and types&lt;a class="anchor" href="#field-definitions-and-types"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="names-and-forms"&gt;Names and forms&lt;a class="anchor" href="#names-and-forms"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A field or property name MUST be non-empty and contain only ASCII letters, digits, hyphens, or underscores. A scalar string is shorthand for an optional, non-repeated field with that &lt;code&gt;type&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;fields&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;title&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The expanded mapping accepts:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Member&lt;/th&gt;
 &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Required primitive, &lt;code&gt;object&lt;/code&gt;, entity reference, or reference union.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;required&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;When true, a value or non-null default MUST exist. Defaults to false.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;repeated&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;When true, the record value MUST be an array and each item is validated. Defaults to false.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;format&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;String annotation; &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;uri&lt;/code&gt;, and &lt;code&gt;url&lt;/code&gt; are enforced case-insensitively.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;enum&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Array of allowed strings for &lt;code&gt;type: enum&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Value used during validation when the record field is absent.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;properties&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Nested field map required by &lt;code&gt;type: object&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;unique&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;When true, present values MUST be unique within the entity.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pattern&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Go regular expression enforced on &lt;code&gt;string&lt;/code&gt; and &lt;code&gt;enum&lt;/code&gt; values.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional human-readable string.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One &lt;a href="../path-derived-data/"&gt;path-derived selector&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;default&lt;/code&gt; satisfies validation but does not mutate the record or promise that every read/export surface materializes the value. Unrecognized &lt;code&gt;format&lt;/code&gt; strings are retained as annotations and are not validated in version 1. Extra record fields are not rejected by schema validation.&lt;/p&gt;</description></item><item><title>Records and data sources</title><link>https://mergewayhq.github.io/docs/reference/specification/records/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/records/</guid><description>&lt;h1 id="records-and-data-sources"&gt;Records and data sources&lt;a class="anchor" href="#records-and-data-sources"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="entity-includes"&gt;Entity includes&lt;a class="anchor" href="#entity-includes"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An entity &lt;code&gt;include&lt;/code&gt; is an array. Each entry is either a non-empty glob string or a mapping with non-empty &lt;code&gt;path&lt;/code&gt; and optional &lt;code&gt;selector&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;include&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;data/users/*.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;path&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;data/catalog.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;selector&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;$.items[*]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Paths are resolved from the &lt;a href="../repository-configuration/#path-bases"&gt;repository root&lt;/a&gt;, not the configuration document. Matches are sorted. Duplicate entries with the same path and selector are collapsed. A data glob MAY match no files.&lt;/p&gt;</description></item><item><title>Identifiers and references</title><link>https://mergewayhq.github.io/docs/reference/specification/identifiers-references/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/identifiers-references/</guid><description>&lt;h1 id="identifiers-and-references"&gt;Identifiers and references&lt;a class="anchor" href="#identifiers-and-references"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="identifier-definitions"&gt;Identifier definitions&lt;a class="anchor" href="#identifier-definitions"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A root entity MUST define &lt;code&gt;identifier&lt;/code&gt; as one of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a field name string, such as &lt;code&gt;identifier: id&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;the reserved string &lt;code&gt;identifier: $path&lt;/code&gt;; or&lt;/li&gt;
&lt;li&gt;a mapping with required &lt;code&gt;field&lt;/code&gt; plus optional &lt;code&gt;generated&lt;/code&gt; Boolean and &lt;code&gt;pattern&lt;/code&gt; string.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Identifier field names use the field-name character set. The field&amp;rsquo;s record value MUST be a non-empty string or numeric scalar. Its canonical identifier is the scalar&amp;rsquo;s string representation. The identifier field does not become required merely because it names a field; a usable value is nevertheless required for every record.&lt;/p&gt;</description></item><item><title>Validation and error model</title><link>https://mergewayhq.github.io/docs/reference/specification/validation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/validation/</guid><description>&lt;h1 id="validation-and-error-model"&gt;Validation and error model&lt;a class="anchor" href="#validation-and-error-model"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="configuration-loading"&gt;Configuration loading&lt;a class="anchor" href="#configuration-loading"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Configuration parsing, include resolution, normalization, inheritance construction, and JSON Schema conversion happen before repository validation. A failure in this stage is a configuration error and prevents validation. Examples include an unsupported version, duplicate entity definition, invalid field definition, unknown reference type, or inheritance cycle.&lt;/p&gt;
&lt;h2 id="validation-phases"&gt;Validation phases&lt;a class="anchor" href="#validation-phases"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Repository validation proceeds in dependency order:&lt;/p&gt;</description></item><item><title>JSON Schema interoperability</title><link>https://mergewayhq.github.io/docs/reference/specification/json-schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/json-schema/</guid><description>&lt;h1 id="json-schema-interoperability"&gt;JSON Schema interoperability&lt;a class="anchor" href="#json-schema-interoperability"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="import"&gt;Import&lt;a class="anchor" href="#import"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An entity MAY replace native &lt;code&gt;fields&lt;/code&gt; with &lt;code&gt;json_schema&lt;/code&gt;, whose path is resolved relative to the declaring configuration document. The file MUST contain a JSON object schema with &lt;code&gt;properties&lt;/code&gt;. &lt;code&gt;fields&lt;/code&gt; and &lt;code&gt;json_schema&lt;/code&gt; are mutually exclusive, and a JSON-Schema-backed entity cannot participate in inheritance.&lt;/p&gt;
&lt;p&gt;Version 1 supports this conversion subset:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;JSON Schema construct&lt;/th&gt;
 &lt;th&gt;Mergeway field result&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type: string&lt;/code&gt;, &lt;code&gt;integer&lt;/code&gt;, &lt;code&gt;number&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corresponding primitive field.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type: object&lt;/code&gt; plus &lt;code&gt;properties&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Nested &lt;code&gt;object&lt;/code&gt; and properties.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type: array&lt;/code&gt; plus one &lt;code&gt;items&lt;/code&gt; schema&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;repeated: true&lt;/code&gt; element field.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;required&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Required fields at that object level.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;string &lt;code&gt;enum&lt;/code&gt;, string &lt;code&gt;const&lt;/code&gt;, or &lt;code&gt;oneOf&lt;/code&gt; string constants&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;enum&lt;/code&gt; field.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;description&lt;/code&gt;, &lt;code&gt;format&lt;/code&gt;, &lt;code&gt;pattern&lt;/code&gt;, &lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corresponding field metadata.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;x-reference-type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One entity reference.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;in-document &lt;code&gt;$ref&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resolved JSON Pointer.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A &lt;code&gt;type&lt;/code&gt; array MAY contain &lt;code&gt;null&lt;/code&gt; plus one supported non-null type. Multiple non-null types are unsupported. External &lt;code&gt;$ref&lt;/code&gt; values, reference unions in &lt;code&gt;x-reference-type&lt;/code&gt;, non-string enum values, and unsupported JSON Schema types are configuration errors. A &lt;code&gt;$schema&lt;/code&gt; declaration MAY identify draft 2020-12, but version 1 implements the subset above; it does not perform arbitrary draft 2020-12 keyword validation.&lt;/p&gt;</description></item><item><title>Path-derived data</title><link>https://mergewayhq.github.io/docs/reference/specification/path-derived-data/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/path-derived-data/</guid><description>&lt;h1 id="path-derived-data"&gt;Path-derived data&lt;a class="anchor" href="#path-derived-data"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="normalized-path"&gt;Normalized path&lt;a class="anchor" href="#normalized-path"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Path-derived behavior starts with the record source path relative to the repository root. Implementations clean the platform path and expose it with &lt;code&gt;/&lt;/code&gt; separators. A source outside the root therefore retains leading &lt;code&gt;..&lt;/code&gt; segments.&lt;/p&gt;
&lt;h2 id="path-identifiers"&gt;&lt;code&gt;$path&lt;/code&gt; identifiers&lt;a class="anchor" href="#path-identifiers"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;identifier: $path&lt;/code&gt; uses that normalized path as the record identifier. Each matched file MUST yield exactly one record. Inline data, top-level &lt;code&gt;items&lt;/code&gt; arrays, and selectors that return multiple records are invalid with &lt;code&gt;$path&lt;/code&gt;. The record does not need a literal &lt;code&gt;$path&lt;/code&gt; field.&lt;/p&gt;</description></item><item><title>Open Knowledge Format mapping</title><link>https://mergewayhq.github.io/docs/reference/specification/open-knowledge-format/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/open-knowledge-format/</guid><description>&lt;h1 id="open-knowledge-format-mapping"&gt;Open Knowledge Format mapping&lt;a class="anchor" href="#open-knowledge-format-mapping"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page applies to repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt; and is normative.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="recognized-sources"&gt;Recognized sources&lt;a class="anchor" href="#recognized-sources"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An entity include that matches a &lt;code&gt;.md&lt;/code&gt; or &lt;code&gt;.okf&lt;/code&gt; file reads it as an Open Knowledge Format concept document. The document MUST begin with a line containing exactly &lt;code&gt;---&lt;/code&gt; and MUST contain a later closing delimiter line. Content between the delimiters is decoded as a YAML map.&lt;/p&gt;
&lt;p&gt;Frontmatter MUST contain a non-empty &lt;code&gt;type&lt;/code&gt; whose value exactly equals the including entity. &lt;code&gt;type&lt;/code&gt; associates the source and is removed from record fields. Other frontmatter entries become fields. All content after the closing delimiter becomes the string field &lt;code&gt;body&lt;/code&gt;, preserving its Markdown text.&lt;/p&gt;</description></item><item><title>Changelog and migration notes</title><link>https://mergewayhq.github.io/docs/reference/specification/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/reference/specification/changelog/</guid><description>&lt;h1 id="changelog-and-migration-notes"&gt;Changelog and migration notes&lt;a class="anchor" href="#changelog-and-migration-notes"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Normative v1.&lt;/strong&gt; This page governs documentation of changes affecting repositories declaring &lt;code&gt;mergeway.version: 1&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="2026-10-19--version-1-baseline"&gt;2026-10-19 — Version 1 baseline&lt;a class="anchor" href="#2026-10-19--version-1-baseline"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Published the first consolidated normative specification, aligned with Mergeway release v0.10.0 and &lt;code&gt;mergeway.version: 1&lt;/code&gt;. It covers the native configuration model, inheritance, reference unions, JSONPath selectors, JSON Schema interoperability, path-derived data, &lt;code&gt;$path&lt;/code&gt; identifiers, OKF records, and phased validation.&lt;/p&gt;
&lt;p&gt;Existing conforming version 1 repositories require no migration for this documentation publication.&lt;/p&gt;</description></item></channel></rss>