Glossary
| Term | Definition | Aliases |
|---|---|---|
| block | A labelled, brace-delimited record instance written in document data, e.g. service "web" { … }. Its schema is a type decorated with @block("kind"). | block instance |
| kind | The string name that identifies a block's schema, declared in @block("kind") and written bare at the instance site. Kinds are namespace-scoped and can be disambiguated with a ns::kind qualifier. | block kind |
| document | The root schema of a WCL file, a type marked @document whose fields gather the top-level blocks. Several @document schemas in one namespace merge — a tag is legal if any of them declares it. | document root, root schema |
| decorator | Schema metadata written @name or @name(args) attached to a declaration or field, such as @block, @child, @default, or @min. WCL field decorators are prefix. | |
| heredoc | A multi-line string literal <<TAG … TAG whose body runs until a line matching the closing tag. A single-quoted tag (<<'TAG') makes it raw — no escapes or interpolation. | raw heredoc |
| symbol | An identifier-like value written :name (no space after the colon), used for tags and enum-like choices. A symbol_set declares a closed vocabulary of allowed symbols. | |
| interface | A structural contract — a set of fields a type must have to satisfy it. Satisfaction is automatic and structural: any type with the right fields qualifies, with no explicit implements. | |
| union | A tagged set of variants — a value that is exactly one of several alternatives, each carrying its own payload (record, typeref, or none). Pattern matching dispatches on the tag. | tagged union, variant |
| reference | A field typed &T that accepts any value structurally satisfying interface T, letting a schema stay open-ended without being untyped. | ref field |
| namespace | A dotted scope for a file's declarations, set by a top-of-file namespace path statement, so independently-authored libraries can share a document without name collisions. | |
| optional | A value that may be present or absent. A ? type suffix (utf8?) makes a type optional; the literal none represents absence and ?? supplies a default. | optional type |
| projection | Rendering one model into a target output. wdoc projects the same WCL data into multiple targets (a book and a skill) using template repeaters, so nothing is hand-duplicated. | project |
| identifier | A bare name used as a block label or id, of type identifier. With @ref("kind"), an identifier field is checked to name an existing block of that kind. | |
| schema | The set of type, @block, and @document declarations that define a document's legal structure, which wcl check validates the data against. |