Rule 11.15
Chapter 11, Targets and the oracle Test
A test must fail when a member of a source has no row, and when a row names a member that no source has. The sources are pinned by version, and a version bump re-bakes the table as a reviewed diff (Rule 11.4 applies: a re-bake is read, not rubber-stamped).
The rule text and the parts under it are the compiler's own English, as the design document writes them.
Rationale
a table nothing holds to its sources drifts the day a package updates; the API surface already works this way (src/__api__/surface.md, Rule 11.6).
Derives from
Rule 11.6; scripts/bake-wgsl-names.ts and surface-names.test.ts, which hold the WGSL names to the specification the same way.
How it is verified
Checked by a test. A test, a gate script or a CI workflow names this rule, and the traceability check fails when a file listed below stops naming it.
Where the rule says the compiler enforces it:
capability-coverage.test.ts, which reads the four sources at their pinned versions and the classification, and fails on an unclaimed member and on a stray row.
The files that verify it at commit 91c2fe31, each at the first line that names the rule:
-
src/core/spec-conformance/capability-coverage.test.ts:43(checked by the compiler's own test)
See also
Source
The rule at commit 91c2fe31:
docs/language-design.md:1369(the design document)reqs/rules/RULE-1115.md(its traceability item)