Schema type
Compiler-known type declarations in modules — t or PascalCase — get schema field metadata, default wire shape, validation hooks, and generated boundary tooling when their shape supports it. No derives Schema.
Metadata entries (visibility, Wire, default, ensure, …) attach to product-type fields inside #{ ... } blocks as name = value; entries. Product types may also declare standalone type-level #{ ensure = fn(form) { ... }; }; blocks for cross-field checks. Same rules for every module type.
Behavior synthesis and its opt-outs are specified by the executable Behavior Synthesis chapter.
See docs/01-syntax.md (Field Schema Blocks) and primary-type.md.
Ship uses type for shapes and file/nested module for grouping functions and other items.