Appearance
Diagnostics — ROZ code reference
Every compile-time diagnostic Rozie emits carries a stable ROZxxx code. When the compiler reports a problem, the code appears alongside the message and a source-located code frame — for example ROZ204: …. This page is the lookup table: search for the code you hit in your terminal and land on its severity and cause.
The codes are public API — a code string never renumbers across versions. (The internal member name shown in muted text next to each code may be renamed for clarity, but the ROZxxx string is the contract.)
How to read this page
This entire reference is generated at docs-build time by scanning the compiler's own diagnostic registry (packages/core/src/diagnostics/codes.ts). It can never drift from the compiler — every code the compiler knows about appears below, grouped into the same clusters the source file uses.
- Code — the stable
ROZxxxstring, with the internal member name in muted text. - Severity —
errorhalts compilation;warningis advisory;-means the registry comment doesn't state a severity explicitly (many parse-level codes only describe the cause). - Cause — a one-line summary drawn directly from the registry comment. Where a comment is absent, this is
-. Nothing here is invented; the page surfaces only what the source documents.
For the human-readable narrative behind many of these — $model write rules, r-match error boundaries, $classSelector validation, listener-element rules — see Features & design choices.
SFC envelope (Plan 02) — ROZ001..ROZ009
| Code | Severity | Cause |
|---|---|---|
ROZ001 MISSING_ROZIE_ENVELOPE | - | - |
ROZ002 MULTIPLE_ROZIE_ENVELOPES | - | - |
ROZ003 UNKNOWN_TOP_LEVEL_BLOCK | - | - |
ROZ004 DUPLICATE_BLOCK | - | - |
ROZ005 PREMATURE_BLOCK_CLOSE | error | literal `</script>` (or other block close sequence) inside the block's own body ended the block early; escape it as `<\/script>` |
Block parse — declarative <props>/<data>/<listeners> (Plan 03) — ROZ010..ROZ029
| Code | Severity | Cause |
|---|---|---|
ROZ010 INVALID_DECLARATIVE_EXPRESSION | - | - |
ROZ011 NOT_OBJECT_LITERAL | - | - |
ROZ012 LISTENER_KEY_NOT_STRING | - | - |
ROZ013 LISTENER_VALUE_NOT_OBJECT | - | - |
ROZ014 REQUIRED_PROP_HAS_DEFAULT | warning | A `<props>` entry declared `required: true` also carries a `default:` — the default can never fire (a required prop is always passed), so Rozie drops the default. |
ROZ015 LISTENER_ELEMENT_NO_EVENT | error | Phase 19 (D-06): a `<listener>` element carries zero `@event` attributes — it wires nothing. |
ROZ016 LISTENERS_UNEXPECTED_ELEMENT | - | Phase 19 (code-review WR-01): distinct codes for the two OTHER element-walk failure modes, split out of ROZ015 so consumers (IDE suppressors, lint-as-code) can target each precisely. |
ROZ017 LISTENER_ELEMENT_UNTERMINATED | error | Phase 19 (code-review WR-01): a `<listener>` element is left unterminated — no self-closing `/>` and no closing tag. |
ROZ018 INVALID_PROP_DOCS_SHAPE | warning | a <props> `docs:` key is malformed (non-object, wrong-typed description/deprecated/example, or unknown sub-key); the bad docs/sub-key is dropped and no JSDoc is emitted. |
Script parse (Plan 03) — ROZ030..ROZ049
| Code | Severity | Cause |
|---|---|---|
ROZ030 SCRIPT_PARSE_ERROR | - | - |
ROZ031 SCRIPT_UNRECOVERABLE | - | - |
ROZ032 SCRIPT_UNRECOGNIZED_LANG | - | Phase 9 (WR-03): `<script lang="...">` carries an unrecognized value (e.g. |
Template parse (Plan 03) — ROZ050..ROZ069
| Code | Severity | Cause |
|---|---|---|
ROZ050 TEMPLATE_UNCLOSED_ELEMENT | - | - |
ROZ051 TEMPLATE_MALFORMED_MUSTACHE | - | - |
Modifier grammar (Plan 04) — ROZ070..ROZ079
| Code | Severity | Cause |
|---|---|---|
ROZ070 MODIFIER_GRAMMAR_ERROR | - | - |
Style parse (Plan 03) — ROZ080..ROZ089
| Code | Severity | Cause |
|---|---|---|
ROZ080 STYLE_PARSE_ERROR | - | - |
ROZ081 STYLE_MIXED_ROOT_SELECTOR | - | - |
ROZ082 STYLE_PORTAL_INVALID_NESTING | - | @portal nested inside @media (or any non-@portal at-rule) — invalid per Spike 004 locked decision #2 |
ROZ083 STYLE_IMPORTANT_DROPPED_IN_STYLE_OBJECT | warning | Spike 004 (string-form `:style` lowering, quick-task 260520-8iu): a string-literal `:style` carries `!important` AND the target's object-form lowering (React/Solid) silently drops it — per Spike 004 locked decision #7 this is a WARN. |
ROZ084 STYLE_PORTAL_SELECTOR_PARSE_ERROR | - | @portal block has empty/malformed prelude or unparseable inner content |
ROZ085 STYLE_MISSING_SASS | error | Phase 10: `<style lang="scss">` was used but the optional `sass` (dart-sass) peer dependency is not installed. |
ROZ086 STYLE_SCSS_COMPILE_ERROR | - | Phase 10: dart-sass threw on invalid SCSS during `sass.compileString`. |
ROZ087 STYLE_UNRECOGNIZED_LANG | error | Phase 10 (D-02): a `<style lang>` value that is neither `scss` nor `css` (nor absent). |
ROZ088 STYLE_SCOPED_RULE_TARGETS_PORTAL_CONTENT | warning | Phase 38 (D-01..D-05): a plain SCOPED <style> rule whose subject class/tag is used EXCLUSIVELY inside portal-slot fill content (a `<template #body>` / `#node` / `<slot portal>` fill, incl. |
Semantic-binding errors (Phase 2 Plan 02) — ROZ100..ROZ199
| Code | Severity | Cause |
|---|---|---|
ROZ100 UNKNOWN_PROPS_REF | - | SEM-01: $props.foo where foo not declared |
ROZ101 UNKNOWN_DATA_REF | - | SEM-01: $data.foo where foo not declared |
ROZ102 UNKNOWN_REFS_REF | - | SEM-01: $refs.foo where no template ref="foo" |
ROZ103 UNKNOWN_SLOTS_REF | - | SEM-01: $slots.foo where no <slot name="foo"> |
ROZ104 LIFECYCLE_OUTSIDE_SCRIPT | - | $onMount/$onUnmount/$onUpdate called outside <script> block / Program top level |
ROZ105 ASYNC_ONMOUNT_RETURN | - | D-19 edge case: $onMount(async () => …) Promise return cannot be cleanup |
ROZ106 COMPUTED_MAGIC_ACCESS | - | $props['foo'] — magic accessors require static keys |
ROZ107 CONDITIONAL_CLEANUP_RETURN | - | $onMount(() => { return condition ? cleanA : cleanB }) — conditional cleanup shape |
ROZ108 NON_FUNCTION_CLEANUP_RETURN | - | $onMount(() => { return nonFnValue }) — return value is not a function |
ROZ109 WATCH_INVALID_ARGS | - | $watch requires (getterFn, callbackFn); skipping malformed call. |
ROZ110 UNKNOWN_MODIFIER | - | .escspe (typo) — name not registered in ModifierRegistry |
ROZ111 MODIFIER_ARITY_MISMATCH | - | .debounce() (missing required ms arg) |
ROZ112 MODIFIER_ARG_SHAPE | - | .outside('not-a-ref') — refExpr expected, got literal |
ROZ113 UNKNOWN_MODEL_REF | - | $model.bogus — 'bogus' is not a declared prop |
ROZ114 UNSUPPORTED_LISTENER_TARGET | error | Phase 19 (D-04/D-06): a `<listener :target="...">` whose target is neither `window` nor `document` (nor omitted → `$el`). |
ROZ115 EXPOSE_ARG_NOT_OBJECT | - | $expose(x) — argument is not an object literal |
ROZ116 EXPOSE_SPREAD_PROPERTY | - | $expose({ ...o }) — a property is a spread |
ROZ117 EXPOSE_COMPUTED_KEY | - | $expose({ [k]: v }) — a property has a computed key |
ROZ118 EXPOSE_VALUE_NOT_FUNCTION | - | $expose({ a: 1 }) / { a: notInScope } / { a: someComputed } — value is not an in-scope <script> function nor an inline arrow/function |
ROZ119 EXPOSE_DUPLICATE_CALL | - | two top-level $expose(...) calls — only one is allowed |
ROZ120 EXPOSE_NOT_TOP_LEVEL | - | $expose(...) called inside a nested function (not <script> Program top level) |
ROZ121 EXPOSE_EVENT_NAME_COLLISION | - | $expose({ open }) where 'open' is an emitted event, or (on class-based targets) a same-named declared prop — field/method name clash |
ROZ122 EMIT_EMPTY_EVENT_NAME | - | $emit('') / $emit(' ') — empty/whitespace-only string-literal event name |
ROZ123 REFS_READ_BEFORE_MOUNT | - | $refs.x read in a $computed body / $watch getter / template binding|interpolation|r-if|r-show|r-for-iterable — evaluated before mount |
ROZ124 EXPOSE_CVA_NAME_COLLISION | - | $expose({ writeValue }) (or registerOnChange/registerOnTouched/setDisabledState) on a single-model CVA-receiving Angular component — collides with the auto-emitted ControlValueAccessor method |
ROZ125 CVA_MULTI_MODEL_NO_ACCESSOR | - | ≥2 model:true props — no single-control ControlValueAccessor auto-emitted on the Angular target |
ROZ126 CVA_NO_DISABLED_PROP | - | single-model CVA component with no `disabled` prop — setDisabledState is a no-op on the Angular target |
ROZ127 SLOT_PROP_NAME_COLLISION | error | <slot name="X"> where X equals a declared <props> key; Svelte 5 collapses snippets+props into one namespace, so the names cannot coexist |
ROZ128 STYLE_GLOBAL_PSEUDO_FORBIDDEN | error | :global(...) used in <style>; works only on Vue/Svelte, silently dead on React/Solid/Lit. |
ROZ129 INVALID_PROVIDE_KEY | error | $provide(key, …) key is not a string literal. |
ROZ130 INVALID_INJECT_KEY | error | $inject(key, …) key is not a string literal. |
ROZ131 PROVIDE_NOT_STATEMENT | error | $provide(...) used in expression position (must be a top-level statement). |
ROZ132 INJECT_UNBOUND | error | $inject(...) not bound to a `const x = $inject(...)`. |
ROZ133 PROVIDE_MISSING_VALUE | error | $provide(key) called with no value (or a non-expression second argument); $provide(key, value) requires a value. |
ROZ134 INJECT_MIXED_DECLARATION | error | $inject(...) shares a `const` declaration with other declarators; it must be the sole declarator (const x = $inject('k')). |
ROZ135 STRUCTURED_CLONE_REACTIVE | warning | structuredClone($props/$data/$model.x) throws on Vue reactive()/Svelte $state proxies; use $clone(x). |
ROZ136 CLONE_BAD_ARITY | error | $clone(value) requires exactly one non-spread argument; the per-target lowering cannot interpret any other arity. |
ROZ137 EXPOSE_RESERVED_MEMBER | warning | an $expose verb shadows an inherited Object.prototype member (Angular+Lit) or HTMLElement/Element/Node member (Lit); suffix-rename it (e.g. |
ROZ138 REACT_STALE_READ | warning | read of $data/$model/$props.x dominated by an earlier write to the same key in one function body; React setState is async so the read binds the pre-write value. |
ROZ139 PARTIAL_INLINE_COLLISION | error | an inlined .rzts/.rzjs declaration name collides with a host binding or an already-inlined partial name; rename one. |
ROZ140 PARTIAL_INLINE_CYCLE | error | a .rzts/.rzjs script partial (transitively) imports itself; the cycle is broken and reported instead of overflowing the stack. |
ROZ141 PARTIAL_UNSUPPORTED_IMPORT_FORM | error | a .rzts/.rzjs partial imported via a default or namespace import; only named imports have an inlinable surface. |
ROZ142 PUBLIC_CONTRACT_NAME_COLLISION | error | a public-contract identifier (prop/slot/emit/$expose verb/provide-inject key) collides with a per-target reserved name; it cannot be auto-renamed. |
Compile-time correctness errors (Phase 2 Plan 02) — ROZ200..ROZ299
| Code | Severity | Cause |
|---|---|---|
ROZ200 WRITE_TO_NON_MODEL_PROP | - | SEM-02: $props.foo = … where foo lacks model: true (Phase 2 success criterion 2) |
ROZ201 WRITE_TO_REF | - | $refs.foo = … (refs are read-only DOM-element wrappers) |
ROZ202 RESERVED_IDENTIFIER_COLLISION | - | <data> field or r-for loop var named $el / $props / $data / $refs / $slots / $emit / $event / $attrs / $listeners / $restoreFocus / $model / $expose / $provide / $inject / $clone. |
ROZ203 UPDATE_EXPRESSION_VALUE_CONSUMED | error | expression-context ++/-- on reactive state isn't lowerable |
ROZ204 WRITE_TO_MODEL_PROP_VIA_PROPS | error | $props.<modelProp> = … ; use $model.<x> |
ROZ205 MODEL_ACCESS_NON_MODEL_PROP | error | $model.<nonModelProp> |
ROZ206 LISTENER_ELEMENT_MISPLACED | error | Phase 19 (D-08): a `<listener>` element placed inside `<template>` instead of the `<listeners>` block. |
Warnings (Phase 2 Plan 02) — ROZ300..ROZ399
| Code | Severity | Cause |
|---|---|---|
ROZ300 RFOR_MISSING_KEY | - | SEM-03: r-for without :key |
ROZ301 RFOR_KEY_IS_LOOP_VARIABLE | - | SEM-03: :key="index" / :key="item" (loop var) |
ROZ302 RFOR_KEY_IS_NON_PRIMITIVE | - | :key="someObj" (Pitfall 6 secondary case) |
ROZ303 RIF_ACCESSIBILITY_PLACEHOLDER | - | RESERVED — not emitted in Phase 2 (deferred per A7) |
ROZ304 TEMPLATE_FOR_EMPTY_BODY | warning | `<template r-for>` with no children (empty loop body; produces no output, and broke React/Solid emit before the guard) |
@rozie/unplugin configuration errors (Phase 3 D-52) — ROZ400..ROZ419
| Code | Severity | Cause |
|---|---|---|
ROZ400 UNPLUGIN_TARGET_REQUIRED | - | D-49: target option missing |
ROZ401 UNPLUGIN_TARGET_UNKNOWN | - | target value not in 'vue'|'react'|'svelte'|'angular' |
ROZ402 UNPLUGIN_TARGET_NOT_YET_SUPPORTED | - | Phase 3 only ships 'vue'; react/svelte/angular ROZ402 until later phases |
ROZ403 UNPLUGIN_PEER_DEP_MISSING | - | @rozie/runtime-vue or @vitejs/plugin-vue not resolvable (Pitfall 8) |
ROZ404 UNPLUGIN_PLUGIN_CHAIN_MISORDER | - | detected vite-plugin-vue lacking; D-25 chain broken |
ROZ405 UNPLUGIN_ANGULAR_OPTIONS_INVALID | - | Phase 23 — malformed `angular` config shape (e.g. |
@rozie/target-vue lowering errors (Phase 3 D-52) — ROZ420..ROZ449
| Code | Severity | Cause |
|---|---|---|
ROZ420 TARGET_VUE_RESERVED | - | RESERVED placeholder; emitter throws this only on internal-invariant violation |
ROZ421 TARGET_VUE_RHTML_WITH_CHILDREN | - | r-html via v-html cannot coexist with children; mirrors ROZ620/721 |
@rozie/unplugin Solid-branch + @rozie/target-solid errors (Phase 06.3 — D-140 amended) — ROZ810..ROZ812
| Code | Severity | Cause |
|---|---|---|
ROZ810 UNPLUGIN_SOLID_PEER_DEP_MISSING | - | vite-plugin-solid not resolvable from cwd (D-139) |
ROZ811 UNPLUGIN_SOLID_DEP_MISSING | - | solid-js (^1.8) not resolvable from cwd (D-139) |
@rozie/runtime-solid warnings (Phase 06.3) — ROZ812
| Code | Severity | Cause |
|---|---|---|
ROZ812 RUNTIME_SOLID_CONTROLLABLE_MODE_FLIP | - | D-135 — createControllableSignal detected parent flipping controlled/uncontrolled mid-lifecycle |
@rozie/target-solid lowering errors (Phase 07.1) — ROZ813..ROZ819
| Code | Severity | Cause |
|---|---|---|
ROZ813 TARGET_SOLID_RESERVED | - | internal-invariant placeholder; mirrors TARGET_SVELTE_RESERVED/TARGET_ANGULAR_RESERVED. |
@rozie/unplugin React-branch configuration errors (Phase 4 D-63) — ROZ500..ROZ519
| Code | Severity | Cause |
|---|---|---|
ROZ500 UNPLUGIN_REACT_PEER_DEP_MISSING | - | D-59: neither @vitejs/plugin-react nor @vitejs/plugin-react-swc installed (Pitfall 9) |
ROZ501 UNPLUGIN_REACT_DEP_MISSING | - | react peer dep not resolvable |
ROZ502 UNPLUGIN_REACT_PLUGIN_CHAIN_MISORDER | - | detected plugin-react/swc lacking; D-58 chain broken (no enforce: 'pre' on @rozie/unplugin) |
@rozie/target-react lowering errors (Phase 4 D-63) — ROZ520..ROZ549
| Code | Severity | Cause |
|---|---|---|
ROZ520 TARGET_REACT_RHTML_WITH_CHILDREN | - | r-html with children — React's dangerouslySetInnerHTML can't coexist with children (Pitfall 10) |
ROZ521 TARGET_REACT_NESTED_STATE_MUTATION | - | Pitfall 7 — $data.foo.bar = 'x' nested member writes; v1 warns + leaves AST unchanged |
ROZ522 TARGET_REACT_MODULE_LET_AUTO_HOISTED | - | Pitfall 3/8 — module-scoped `let X` referenced from LifecycleHook setup auto-hoisted to useRef |
ROZ523 TARGET_REACT_MODULE_LET_UNHOISTABLE | - | Pitfall 3/8 — module-scoped `let X` referenced too indirectly to safely auto-hoist; user must refactor |
ROZ524 TARGET_REACT_SETTER_NAME_COLLISION | - | Phase 07.7 — user-defined function `set<X>` collides with auto-generated useState/useControllableState setter `setX` for state/model prop X; emits "already declared" + infinite recursion when `$data.X = v` rewrites to `setX(v)` inside the same-named user wrapper |
@rozie/runtime-react warnings (Phase 4 D-63) — ROZ550..ROZ579
| Code | Severity | Cause |
|---|---|---|
ROZ550 RUNTIME_REACT_CONTROLLABLE_MODE_FLIP | - | D-57 — useControllableState detected parent flipping controlled/uncontrolled mid-lifecycle |
@rozie/unplugin Svelte-branch + @rozie/target-svelte errors (Phase 5) — ROZ600..ROZ649
| Code | Severity | Cause |
|---|---|---|
ROZ600 UNPLUGIN_SVELTE_PEER_DEP_MISSING | - | @sveltejs/vite-plugin-svelte not resolvable from cwd |
ROZ601 UNPLUGIN_SVELTE_DEP_MISSING | - | svelte itself (^5) not resolvable from cwd |
ROZ602 UNPLUGIN_SVELTE_PLUGIN_CHAIN_MISORDER | - | RESERVED — enforce:'pre' guarantees this; placeholder for future |
ROZ620 TARGET_SVELTE_RHTML_WITH_CHILDREN | - | r-html with children; mirrors Vue/React Pitfall 10 |
ROZ621 TARGET_SVELTE_RESERVED | - | internal-invariant placeholder; mirrors TARGET_VUE_RESERVED |
@rozie/unplugin Angular-branch + @rozie/target-angular errors (Phase 5 D-72) — ROZ700..ROZ749
| Code | Severity | Cause |
|---|---|---|
ROZ700 UNPLUGIN_ANGULAR_PEER_DEP_MISSING | - | @analogjs/vite-plugin-angular not resolvable from cwd (D-72) |
ROZ701 UNPLUGIN_ANGULAR_DEP_MISSING | - | @angular/core (^17) not resolvable |
ROZ702 UNPLUGIN_ANGULAR_VITE_VERSION_TOO_LOW | - | analogjs requires Vite ^6 (RESEARCH OQ6) |
ROZ703 UNPLUGIN_ANGULAR_PLUGIN_CHAIN_MISORDER | - | RESERVED — enforce:'pre' guarantees this |
ROZ720 TARGET_ANGULAR_RFOR_MISSING_KEY | warning | Angular @for REQUIRES track expression (Pitfall 3); upgrade ROZ300 warning to error for Angular target |
ROZ721 TARGET_ANGULAR_RHTML_WITH_CHILDREN | - | r-html via [innerHTML] cannot coexist with children |
ROZ722 TARGET_ANGULAR_RESERVED | - | internal-invariant placeholder |
ROZ723 TARGET_ANGULAR_LOOP_GUARD_HOIST | - | an early-return event modifier (.self / key-filter) inside an r-for loop references the loop variable — Angular hoists the guard to a class-field arrow that cannot capture loop-scoped bindings |
Phase 6 (ROZ800..ROZ899) — D-96 sub-ranges
| Code | Severity | Cause |
|---|---|---|
ROZ800 COMPILE_INVALID_TARGET | - | unknown target token in opts.target |
ROZ801 COMPILE_INVALID_OPT_COMBO | - | reserved — disallowed opts combination |
@rozie/babel-plugin (Plan 06-04) — ROZ820..ROZ829
| Code | Severity | Cause |
|---|---|---|
ROZ820 BABEL_PLUGIN_INVALID_TARGET | - | missing or invalid `target` option (vue|react|svelte|angular required) |
ROZ821 BABEL_PLUGIN_NO_FILENAME | - | cannot resolve relative .rozie path without state.filename / file.opts.filename |
ROZ822 BABEL_PLUGIN_COMPILE_ERROR | error | compile() returned severity:'error' diagnostics during sibling write |
ROZ823 BABEL_PLUGIN_SIBLING_WRITE_FAIL | - | fs writeFileSync failed when emitting sibling .{ext}/.d.ts/.module.css/.global.css |
@rozie/unplugin Lit-branch + @rozie/target-lit + @rozie/runtime-lit (Phase 06.4 — D-LIT-19 Option A) — ROZ830..ROZ849
| Code | Severity | Cause |
|---|---|---|
ROZ830 UNPLUGIN_LIT_PEER_DEP_MISSING | - | lit (^3.2) not resolvable from cwd |
ROZ831 UNPLUGIN_LIT_SIGNALS_PEER_DEP_MISSING | - | @lit-labs/preact-signals (^1) not resolvable from cwd |
@rozie/target-lit lowering errors (Phase 07.1) — ROZ832..ROZ839
| Code | Severity | Cause |
|---|---|---|
ROZ832 TARGET_LIT_RESERVED | - | internal-invariant placeholder; mirrors TARGET_SVELTE_RESERVED/TARGET_ANGULAR_RESERVED. |
ROZ833 TARGET_LIT_RHTML_WITH_CHILDREN | - | r-html via unsafeHTML cannot coexist with children; mirrors ROZ620/721 |
ROZ840 RUNTIME_LIT_CONTROLLABLE_MODE_FLIP | warning | createLitControllableProperty parent-flip warning (D-LIT-10) |
@rozie/cli argv parsing + filesystem errors (Plan 06-03) — ROZ850..ROZ879
| Code | Severity | Cause |
|---|---|---|
ROZ850 CLI_INVALID_TARGET | - | unknown --target token (commander InvalidArgumentError) |
ROZ851 CLI_MISSING_INPUT | - | no .rozie files matched after expandInputs |
ROZ852 CLI_OUT_REQUIRED | - | --out required for multiple inputs or multiple targets |
ROZ853 CLI_NULL_BYTE_INPUT | - | null-byte injection in input arg (carries forward unplugin/transform.ts:235-237) |
ROZ854 CLI_NON_ROZIE_INPUT | - | file input that doesn't end with .rozie |
ROZ855 CLI_REACT_REQUIRES_OUT_DIR | - | target=react with no --out — sidecars (.d.ts/.module.css/.global.css) cannot stream to stdout |
Phase 06.1 source-map composition (D-111) — ROZ900..ROZ919
| Code | Severity | Cause |
|---|---|---|
ROZ900 SOURCEMAP_COMPOSE_FAILED | - | composeMaps() threw or returned null |
ROZ901 SOURCEMAP_CHILD_MAP_MALFORMED | - | child map missing required Source Map v3 fields |
ROZ902 SOURCEMAP_OFFSET_OUT_OF_RANGE | - | ChildMap.outputOffset exceeds shellMs output length |
ROZ903 SOURCEMAP_REMAPPING_THREW | error | @ampproject/remapping internal error |
ROZ910 SOURCEMAP_AST_NODE_MISSING_LOC | - | synthesized AST node lacks loc; falls back to nearest segment (D-104/D-106) |
ROZ911 SOURCEMAP_PARSER_OFFSET_INVALID | - | @babel/parser startLine/startColumn validation failed |
Phase 06.2 component composition (D-123 sub-allocation) — ROZ920..ROZ939
| Code | Severity | Cause |
|---|---|---|
ROZ920 UNKNOWN_COMPONENT | - | PascalCase tag matches neither outer name nor <components> entry |
ROZ921 NON_ROZIE_IMPORT_PATH | - | <components> entry value is not a `.rozie` string literal |
ROZ922 LOWERCASE_LIKELY_TYPO | warning | <counter> when Counter is declared |
ROZ923 DUPLICATE_COMPONENT_IMPORT_PATH | warning | two <components> entries point at the same .rozie path |
ROZ924 UNUSED_COMPONENT_ENTRY | warning | declared <components> entry never used in template |
ROZ925 ESCAPE_HATCH_REACT_SUSPENSE | - | <Suspense> — use React directly |
ROZ926 ESCAPE_HATCH_VUE_TELEPORT | - | <Teleport> — use Vue directly |
ROZ927 ESCAPE_HATCH_NG_CONTAINER | - | <ng-container> — use Angular directly |
ROZ928 ESCAPE_HATCH_SVELTE_FRAGMENT | - | <svelte:fragment> — use Svelte directly |
Phase 07.2 consumer-side slot fills (D-08 sub-allocation) — ROZ940..ROZ959
| Code | Severity | Cause |
|---|---|---|
ROZ940 DUPLICATE_DEFAULT_FILL | error | locked in SPEC.md R3; loose children + explicit <template #default> |
ROZ941 UNKNOWN_SLOT_NAME | warning | consumer fills a slot the producer doesn't declare (typo catch) |
ROZ942 DUPLICATE_NAMED_FILL | error | two sibling <template #header> directives |
ROZ943 REPROJECTION_UNDECLARED_WRAPPER_SLOT | error | wrapper forwards a slot it doesn't itself declare |
ROZ944 REPROJECTION_UNDECLARED_INNER_SLOT | warning | wrapper forwards into a slot the inner producer doesn't declare |
ROZ945 CROSS_PACKAGE_LOOKUP_FAILED | error | npm/relative resolution of a <components> importPath returns null |
ROZ946 DYNAMIC_NAME_EXPRESSION_INVALID | error | `<template #[expr]>` bracketed text fails to parse as a JS expression |
ROZ947 SCOPED_PARAM_MISMATCH | error | D-09 — consumer destructures a param the producer SlotDecl.params doesn't declare |
ROZ948 SCOPED_PARAMS_ALL_DROPPED | warning | scoped-params destructure had properties but none resolved to simple bindings (e.g. |
Phase 07.3 consumer-side two-way binding — ROZ949..ROZ951
| Code | Severity | Cause |
|---|---|---|
ROZ949 TWO_WAY_PROP_NOT_MODEL | error | r-model:prop= where producer prop lacks model:true (dual-frame: consumer site + producer decl) |
ROZ950 TWO_WAY_ARG_OR_TARGET_INVALID | error | r-model: with empty arg (`r-model:=`), OR applied to non-component HTML tag (`<div r-model:foo=`) |
ROZ951 TWO_WAY_LHS_NOT_WRITABLE | error | RHS not a writable lvalue per 07.3-CONTEXT D-03 permissive rule (literal/ternary/call/$computed) |
ROZ952 TWO_WAY_DIRECTIVE_TYPO | error | colon-form directive `r-<base>:<arg>` whose `<base>` is a Levenshtein near-miss of `model` (e.g. |
Phase 11 r-match construct — ROZ953..ROZ959
| Code | Severity | Cause |
|---|---|---|
ROZ953 MATCH_EMPTY_DISCRIMINANT | error | r-match host with no value (`<template r-match>` / `<template r-match="">`) |
ROZ954 MATCH_STRAY_CHILD | error | r-match host child that is neither r-case nor r-default |
ROZ955 MATCH_CASE_NO_VALUE | error | valueless r-case (hint: did you mean r-default?) |
ROZ956 MATCH_CASE_WITH_FOR | error | r-case + r-for on the same element |
ROZ957 MATCH_DEFAULT_NOT_LAST | error | r-default is not the last branch of the match |
ROZ958 MATCH_MULTIPLE_DEFAULT | error | more than one r-default in a single r-match |
ROZ959 MATCH_DUPLICATE_CASE | warning | duplicate literal r-case value (first occurrence wins, like `switch`) |
Phase 12 r-model modifiers — ROZ960..ROZ964
| Code | Severity | Cause |
|---|---|---|
ROZ960 RMODEL_UNKNOWN_MODIFIER | error | unknown r-model modifier (did-you-mean among model modifiers) |
ROZ961 RMODEL_EVENT_MODIFIER_MISUSED | error | a valid event modifier used on r-model |
ROZ962 DIRECTIVE_TAKES_NO_MODIFIERS | error | modifier on r-if/r-for/r-show/r-html/r-text |
ROZ963 RMODEL_BUILTIN_ON_TWO_WAY | error | built-in r-model modifier on consumer-side r-model:propName |
ROZ964 RMODEL_MODIFIER_NOT_APPLICABLE | warning | value-transform modifier on a checkbox/radio r-model |
Phase 13 $classSelector — ROZ965..ROZ967
| Code | Severity | Cause |
|---|---|---|
ROZ965 CLASS_SELECTOR_ARG_NOT_LITERAL | error | R3: $classSelector argument is not a string literal |
ROZ966 CLASS_SELECTOR_UNKNOWN_CLASS | error | R4: class not declared in the component's <style> scope; did-you-mean hint |
ROZ967 CLASS_SELECTOR_INVALID_TOKEN | error | R5: multi-token / dotted / combinator / `#` argument (fails the bare-class-token regex) |
ROZ968 CLASS_SELECTOR_REACT_NO_SOURCE | - | retired (Phase 25) — formerly fired when $classSelector was used in a React emit without opts.source. |
Phase 14 attribute fallthrough — ROZ969..ROZ971
| Code | Severity | Cause |
|---|---|---|
ROZ969 R_BIND_COLON_FORM | error | R1: `r-bind:foo="x"` colon form is not supported (use the `:foo` shorthand or the bare-spread `r-bind="obj"`) |
ROZ970 ATTR_FALLTHROUGH_MULTI_ROOT | error | R8: a multi-root template with auto-fallthrough enabled has no single root to receive inherited attributes |
ROZ971 ATTR_DOUBLE_APPLY | warning | R9: `$attrs` referenced (e.g. |
Phase 15 listener fallthrough — ROZ972..ROZ974
| Code | Severity | Cause |
|---|---|---|
ROZ972 R_ON_COLON_FORM | error | R1: `r-on:click="x"` colon form is not supported (use the single-event `@click` syntax or the bare object-spread `r-on="{ click: fn }"`) |
ROZ973 LISTENER_FALLTHROUGH_MULTI_ROOT | error | R8: a multi-root template with auto-listener-fallthrough enabled has no single root to receive inherited listeners (INDEPENDENT of ROZ970) |
ROZ974 LISTENER_DOUBLE_APPLY | warning | R9: `$listeners` referenced (e.g. |
Phase 16 $restoreFocus — ROZ975..ROZ976
| Code | Severity | Cause |
|---|---|---|
ROZ975 RESTORE_FOCUS_NON_LITERAL_SELECTOR | error | SPEC R9: $restoreFocus first arg is not a string literal |
ROZ976 RESTORE_FOCUS_BAD_ARITY | error | SPEC R9: $restoreFocus called with wrong number of arguments |
compile() empty-code guard — ROZ977
| Code | Severity | Cause |
|---|---|---|
ROZ977 COMPILE_EMPTY_CODE_NO_DIAGNOSTICS | error | internal: compile() emit produced empty code with no error diagnostics (parser/lowerer/emitter internal failure) |
Phase 26 bare-sigil rejection — ROZ978
| Code | Severity | Cause |
|---|---|---|
ROZ978 BARE_OBJECT_SIGIL | error | bare $props/$data/$refs/$slots used as a whole-object value (not a member access). |
Phase 37 $portals.default — ROZ979
| Code | Severity | Cause |
|---|---|---|
ROZ979 DEFAULT_PORTAL_NAME_RESERVED | error | a default portal slot (`<slot portal />`) and a slot `name="default"` both key `$portals.default`; "default" is the reserved default-portal key. |
ROZ981 RUNTIME_ONLY_NAME_COLLISION | error | a runtime-only public-contract collision with no typecheck net (Svelte slot-param shadows an r-for loop var, or two emits normalize to one callback prop). |