Message shape
One-based locations at the offending declaration — invalid arguments fail at compile time when detectable.
Error at 3:5: Duplicate state 'visits' (first at 2:5)
Catalog groups
A summary — the authoritative frozen strings live in the repository catalog.
| Group | Covers |
|---|---|
| Parse and structure | Empty files, root placement, properties outside components, names, single root, tabs, unterminated comments/strings, bad keys and values, imperative operations |
| Component validation | Duplicate properties and ids, id/visible/disabled/label types, unknown properties on registered components |
| Blocks | Duplicate layout/style/state/events/transitions/theme blocks, non-entry contents, duplicate entries |
| State | Literal-only initials, duplicates, scalar values, declared-type agreement, unknown keys, numeric range |
| Bindings | Undeclared references, resolved locked-property types, resolved id uniqueness |
| Events, navigation, runtime | Unknown targets, undeclared events, non-handler values, navigating back from root, scoping work to unmounted components |
| Themes | Theme name types and mode vocabulary (system, light, dark) |
| Seam and files | .lucu extension enforcement, unreadable files |
| Testing harness | Lookups by id reuse the unknown-target shape at the resolved root |