Skip to content

Commit a00b4ad

Browse files
committed
docs(1.0): C4 metamodelVersion — capture agreed design (rolled-up, manifest-tagged)
One rolled-up spec-version string (a named freeze of the core provider set, tagging the existing expected-registry.json manifest) exposed per registry + conformance-asserted — NOT per-provider, NOT a per-file yaml/json stamp, core vocabulary only (downstream providers outside the promise). Distribution-version pattern (OTel/protobuf-editions). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GF9xLEQZaPus5Y6opk398n
1 parent 20dcbdb commit a00b4ad

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

docs/1.0-readiness.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,28 @@ Status legend: ✅ done · 🔶 in progress · ⬜ not started · ❓ **[RATIFY]
6363
program + the ADR-0039 own-accessor fix) and `0.14.0`/`7.6.0` (verify strict-default,
6464
jsonb parsed-value). `index.*` **reset the quiet-period clock** — the first
6565
no-breaking coordinated release must come *after* `0.15.1`/`7.7.1` (see G3).
66-
-**C4. Add the `metamodelVersion` marker** (A1 dependency). A machine-readable
67-
spec-version field the loader/registry exposes and every port emits, asserted by the
68-
conformance matrix — the artifact that lets packages version independently while all
69-
claiming "implements Metamodel 1.0." Pre-cut the vocabulary is "Metamodel 0.x"; the
70-
cut freezes it as `1.0`.
66+
-**C4. Add the `metamodelVersion` marker** (A1 dependency). A single **rolled-up**
67+
spec-version string the loader/**registry** exposes and every port emits, asserted by
68+
the conformance matrix — the artifact that lets packages version independently while
69+
all claiming "implements Metamodel 1.0." Pre-cut the vocabulary is "Metamodel 0.x";
70+
the cut freezes it as `1.0`. **Design (agreed 2026-07-02):**
71+
- **One rolled-up number, not per-provider.** `Metamodel 1.0` is a *named freeze* of
72+
the core provider set (distribution-version pattern, à la OTel spec releases /
73+
protobuf editions). It is a **version tag on the existing
74+
`fixtures/registry-conformance/expected-registry.json` manifest** — which is already
75+
the byte-exact bill of materials every port is gated against — not a new
76+
per-provider versioning system. Per-provider precision lives in that manifest,
77+
machine-checked, never human-tracked.
78+
- **Registry/runtime property, NOT a per-file stamp.** It does not go in the YAML/JSON
79+
metadata documents (validity is decided by the loader's registered providers, so
80+
there is no yaml/json duplication to manage). *(An optional per-file "targets
81+
Metamodel X.Y" is separable and YAGNI for 1.0.)*
82+
- **Core vocabulary only.** Downstream-added providers are outside the promise
83+
(ADR-0023) and do not change this number; an app may version its own providers if it
84+
cares — the library's concern is the core set.
85+
- Scope: pick the exposure API per port (e.g. `registry.metamodelVersion`), stamp the
86+
manifest, assert byte-equality of the string across all five ports in
87+
`registry-conformance`.
7188
-**C5. Adopt the minor-vs-patch cadence rule** (ADR-0035 §3, going forward). Trigger
7289
is *new public surface, not code size*: package **MINOR** only for newly-dependable
7390
surface (codegen output, CLI flag, a newly-supported vocab member); package **PATCH**

0 commit comments

Comments
 (0)