Rule 3.8
Chapter 3, Textual structure and names Test
A shader module that host code imports is named *.shade.ts, and a host import of a .ts file that begins with the directive under any other name must be refused with the rename.
The rule text and the parts under it are the compiler's own English, as the design document writes them.
Rationale
the bundler and the host program’s tsconfig decide what an import is before they read a statement of the file: the Vite plugin picks the modules it compiles by the name, and the host view name.shade.typeshade.ts that tsc reads in place of the source (surface §64) is named after it, as is the exclude that keeps the source out of the host program. A shader under another name would reach the host as its source, which a host program cannot type-check and a bundle would run as JavaScript.
The name decides how a host imports the file; the directive still decides what a shader is, for the compiler and the language service (Rule 3.1).
Derives from
change 0009 in changes/ (“The shader module is picked by its name”); docs/roadmap.md item 16.
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 Vite plugin in src/vite.ts, which refuses a project .ts that begins with the directive and is not named *.shade.ts (… begins with "use typeshade", so it is a shader module, and a host imports a shader module by the name *.shade.ts (Rule 3.8). Rename it to terrain.shade.ts and import it by that name.), and tshc sync, which writes a view for a *.shade.ts only; pinned by src/vite.test.ts.
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 3.7 Review
- Rule 3.9 Test
- Rule 3.1
- Design rules
- Error codes
Source
The rule at commit 26de7be8:
docs/language-design.md:180(the design document)reqs/rules/RULE-0308.md(its traceability item)