Rule 11.2
Chapter 11, Targets and the oracle Test
A divergence between targets, or between a target and the oracle, must be measured on Tint and on a WebGL2 driver before it is kept, and recorded where the emit is decided: a comment on the INTRINSICS row with the measured text, and a row of the determinism report (surface §38) where the results may differ.
The rule text and the parts under it are the compiler's own English, as the design document writes them.
Rationale
the specification text says what a compiler may do; the compiler says what it does, and the emitted text has to satisfy the compiler.
Derives from
#162 (“measure before you keep a design”); surface §31 (a ternary on a struct, where the ES 3.00 text and the driver disagreed); Floating Point Accuracy.
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:
the compile gate for the emitted text; src/core/passes/determinism.test.ts, which requires every emitted operation to be placed in one column of the accuracy table.
The files that verify it at commit 26de7be8, each at the first line that names the rule:
Explained in
The sections of the surface document that explain this rule, at commit 26de7be8:
See also
- Rule 11.1 Test
- Rule 11.3 Test
- Design rules
- Error codes
Source
The rule at commit 26de7be8:
docs/language-design.md:1132(the design document)reqs/rules/RULE-1102.md(its traceability item)