@@ -53,6 +53,30 @@ library-vs-pipeline divergences (see the `_comment` block in each port's
5353are tracked as known-gaps rather than silently patched — the runner treats listed
5454fixtures as passing, but a future port-level reconciliation pass would close them.
5555
56+ ### Split coverage: where a feature is gated, and where it deliberately is not
57+
58+ The matrix is corpus-shaped, so a feature whose coverage splits — across several
59+ corpora, or between its * vocabulary* and its * behaviour* — never gets a row of its
60+ own, and its boundary ends up discoverable only from the feature doc. The split ones
61+ are recorded here instead.
62+
63+ ** Capability requirements** ([ features/requirements.md] ( features/requirements.md ) ):
64+
65+ - * Vocabulary — gated in all five ports.* The types, their attributes and their closed
66+ enums travel in ` registry-conformance ` 's byte-matched manifest, which every port
67+ reproduces exactly, and accept/reject behaviour is pinned by ` requirement-* ` fixtures
68+ in ` fixtures/conformance/ ` . A port that drifts on what it will load fails.
69+ - * Checks — TypeScript only, by decision.* The ` meta verify ` diagnostics over
70+ requirements ship in the TypeScript CLI; the other ports load and validate and stop
71+ there. Same call as [ ADR-0015] ( ../spec/decisions/ADR-0015-single-shared-migrate-engine.md ) :
72+ one implementation of a build-time gate rather than five, where the gate is not a
73+ per-port runtime concern. ` verify-conformance ` therefore holds no requirement cases,
74+ and that absence is deliberate rather than a gap.
75+
76+ Stated as mechanisms rather than as a list of attribute names on purpose — the
77+ requirement vocabulary has a breaking change scheduled (FR-038), which moves what the
78+ manifest contains without moving the boundary between the two halves.
79+
5680Per-port runners + commands:
5781
5882| Port | Metamodel + YAML + render + verify | Persistence | API contract |
@@ -91,6 +115,7 @@ unit-test runners (`bun test`, `dotnet test`, `pytest`, `mvn test`) pull Docker.
91115| ` template-* ` , ` error-template-* ` | [ features/templates-and-payloads.md] ( features/templates-and-payloads.md ) |
92116| ` origin-* ` , ` error-origin-* ` | [ features/templates-and-payloads.md] ( features/templates-and-payloads.md ) (payload origins) |
93117| ` projection-* ` , ` error-projection-* ` , ` field-readonly-on-view-projection ` | [ features/source-kinds.md] ( features/source-kinds.md ) (projections + the object taxonomy, ADR-0028) |
118+ | ` requirement-* ` , ` error-unknown-attr-requirement ` | [ features/requirements.md] ( features/requirements.md ) (vocabulary only — the ` meta verify ` checks are TS-owned; see "Split coverage" above) |
94119| ` smoke-empty-metadata ` | [ features/entities.md] ( features/entities.md ) |
95120
96121### ` fixtures/yaml-conformance/ ` (15)
0 commit comments