Appearance
Diagnostics — ROZ code reference
Every diagnostic Rozie emits carries a stable ROZxxx code. The registry spans the whole toolchain: compile-time errors and warnings from the core compiler, build-tool plugin and CLI failures, and runtime warnings from the helper packages. A reported problem shows the code alongside its message; compile-time diagnostics add 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;infois a non-actionable FYI. Two status tokens mark codes that never fire:reservedis a code allocated in the registry but not emitted anywhere in the toolchain, andretiredis a code that once fired but no longer does (code strings are public API and never renumber, so both stay listed). - 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 | error | the .rozie file has no <rozie> root element wrapping its blocks. |
ROZ002 MULTIPLE_ROZIE_ENVELOPES | error | more than one <rozie> root, or a <rozie> nested inside another envelope. |
ROZ003 UNKNOWN_TOP_LEVEL_BLOCK | error | a tag at envelope top level is not a recognized block (<props> <data> <script> <listeners> <template> <style> <components>). |
ROZ004 DUPLICATE_BLOCK | error | the same block name appears more than once inside one <rozie> (each block is allowed at most once). |
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 | error | a <props>/<data>/<components> body fails to parse as a single JS expression. |
ROZ011 NOT_OBJECT_LITERAL | error | a <props>/<data>/<components> body parses but is not an object literal — it lowered to an array or some other expression type. |
ROZ012 LISTENER_KEY_NOT_STRING | retired | DORMANT since Phase 19 (was error): a <listeners> object-literal key was not a string; the object-walk that emitted this was replaced by the <listener> element form |
ROZ013 LISTENER_VALUE_NOT_OBJECT | retired | DORMANT since Phase 19 (was error): a <listeners> object-literal value was not an object; replaced by the <listener> element form |
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 | a <listener> element carries zero @event attributes — it wires nothing; the tag is skipped |
ROZ016 LISTENERS_UNEXPECTED_ELEMENT | error | a non-<listener> element appears inside <listeners>; only <listener> elements are allowed (split out of ROZ015, WR-01) |
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 | error | recoverable <script> syntax error(s) Babel collected under errorRecovery (one diagnostic per lifted error). |
ROZ031 SCRIPT_UNRECOVERABLE | error | the <script> block failed to parse at all (Babel threw); caught and collected, not re-thrown. |
ROZ032 SCRIPT_UNRECOGNIZED_LANG | error | <script lang="..."> value unrecognized; only ts/typescript enable the TypeScript parser plugin |
Template parse (Plan 03) — ROZ050..ROZ069
| Code | Severity | Cause |
|---|---|---|
ROZ050 TEMPLATE_UNCLOSED_ELEMENT | error | a <template> element is left open (a mismatched close tag, or elements still on the stack at input end). |
ROZ051 TEMPLATE_MALFORMED_MUSTACHE | error | an unmatched {{ with no closing }} in the same text run. |
Modifier grammar (Plan 04) — ROZ070..ROZ079
| Code | Severity | Cause |
|---|---|---|
ROZ070 MODIFIER_GRAMMAR_ERROR | error | a malformed @event.modifier(args) chain the modifier grammar could not parse. |
Style parse (Plan 03) — ROZ080..ROZ089
| Code | Severity | Cause |
|---|---|---|
ROZ080 STYLE_PARSE_ERROR | error | PostCSS threw parsing the <style> body, or an inline :style / style string literal. |
ROZ081 STYLE_MIXED_ROOT_SELECTOR | error | a comma-separated selector list mixes :root with other selectors (like ':root, .foo {}'); split the unscoped :root rule from the scoped rules. |
ROZ082 STYLE_PORTAL_INVALID_NESTING | error | @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 | 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 | error | dart-sass threw on invalid SCSS; the exception is collected (D-08) and parseStyle returns node null |
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. |
Phase 79 producer-side dynamic slot names (R7/R13) — ROZ090..ROZ095
| Code | Severity | Cause |
|---|---|---|
ROZ090 SLOT_NAME_STATIC_AND_BOUND | error | a <slot> carries both a static name= attribute and a bound :name — the two cannot both define the slot's name (R7a) |
ROZ091 SLOT_NAME_PARAM_ON_DYNAMIC_SLOT | error | a <slot> with a bound :name also declares a scope param whose key is 'name'; :name is reserved on <slot> as of Phase 79 and can no longer be a scope-param key (R7b) |
ROZ092 SLOT_DYNAMIC_NAME_ON_PORTAL | error | a bound :name on a portal slot; portalKey() needs a compile-time string for the $portals.<key> closure key (R7c) |
ROZ093 SLOT_FAMILY_PREFIX_DUPLICATE | error | two producer <slot>s derive an identical namePrefix, so a consumer fill matching that prefix has no unique family to resolve to (R7d) |
ROZ094 SLOT_DYNAMIC_NAME_NO_PREFIX | warning | a bound :name yields no static leading prefix (bare identifier, call expression, or a template literal with an empty first quasi); legal, but consumer params degrade and no ROZ947 can fire (R7e) |
ROZ095 SLOT_RECORD_PROP_NAME_RESERVED | error | a <props> key equals its target's slot-record property name (slots/snippets/templates/rozieSlots); the emitted component would declare the identifier twice (R13) |
ROZ096 SLOT_DYNAMIC_NAME_PARSE_ERROR | error | a <slot>'s bound :name value failed to parse as a JavaScript expression; never silently falls back to an `undefined` identifier (T-79-12) |
Semantic-binding errors (Phase 2 Plan 02) — ROZ100..ROZ199
| Code | Severity | Cause |
|---|---|---|
ROZ100 UNKNOWN_PROPS_REF | error | SEM-01: $props.foo where foo not declared |
ROZ101 UNKNOWN_DATA_REF | error | SEM-01: $data.foo where foo not declared |
ROZ102 UNKNOWN_REFS_REF | error | SEM-01: $refs.foo where no template ref="foo" |
ROZ103 UNKNOWN_SLOTS_REF | error | SEM-01: $slots.foo where no <slot name="foo"> |
ROZ104 LIFECYCLE_OUTSIDE_SCRIPT | error | $onMount/$onUnmount/$onUpdate called outside <script> block / Program top level |
ROZ105 ASYNC_ONMOUNT_RETURN | warning | D-19 edge case: $onMount(async () => …) Promise return cannot be cleanup |
ROZ106 COMPUTED_MAGIC_ACCESS | error | $props['foo'] — magic accessors require static keys |
ROZ107 CONDITIONAL_CLEANUP_RETURN | warning | $onMount(() => { return condition ? cleanA : cleanB }) — conditional cleanup shape |
ROZ108 NON_FUNCTION_CLEANUP_RETURN | warning | $onMount(() => { return nonFnValue }) — return value is not a function |
ROZ109 WATCH_INVALID_ARGS | warning | $watch requires (getterFn, callbackFn); skipping malformed call. |
ROZ110 UNKNOWN_MODIFIER | error | .escspe (typo) — name not registered in ModifierRegistry |
ROZ111 MODIFIER_ARITY_MISMATCH | error | .debounce() (missing required ms arg) |
ROZ112 MODIFIER_ARG_SHAPE | error | .outside('not-a-ref') — refExpr expected, got literal |
ROZ113 UNKNOWN_MODEL_REF | error | $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 | error | $expose(x) — argument is not an object literal |
ROZ116 EXPOSE_SPREAD_PROPERTY | error | $expose({ ...o }) — a property is a spread |
ROZ117 EXPOSE_COMPUTED_KEY | error | $expose({ [k]: v }) — a property has a computed key |
ROZ118 EXPOSE_VALUE_NOT_FUNCTION | error | $expose({ a: 1 }) / { a: notInScope } / { a: someComputed } — value is not an in-scope <script> function nor an inline arrow/function |
ROZ119 EXPOSE_DUPLICATE_CALL | error | two top-level $expose(...) calls — only one is allowed |
ROZ120 EXPOSE_NOT_TOP_LEVEL | error | $expose(...) called inside a nested function (not <script> Program top level) |
ROZ121 EXPOSE_EVENT_NAME_COLLISION | error | $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 | error | $emit('') / $emit(' ') — empty/whitespace-only string-literal event name |
ROZ123 REFS_READ_BEFORE_MOUNT | error | $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 | error | $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 | info | ≥2 model:true props — no single-control ControlValueAccessor auto-emitted on the Angular target |
ROZ126 CVA_NO_DISABLED_PROP | info | 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. |
ROZ143 EVENT_HANDLER_NOT_EXPRESSION | error | a template @event handler's text failed to parse as a single expression (dominant cause: a statement-body handler, e.g. |
ROZ145 EMIT_MULTIPLE_POSITIONAL_ARGS | error | a `$emit` call with 2+ positional payload args. |
ROZ146 MEMO_MISUSE | error | `$memo(...)` was not a well-formed top-level `const X = $memo(fnArrow, keyFnArrow)` call (exactly two arrow-function args). |
ROZ147 LIT_INHERITED_PROPERTY_PROP_NAME | warning | (suppressible) — a <props> key collides with an inherited HTMLElement/Element/Node PROPERTY name that becomes a Lit class field, shadowing the base-class property. |
ROZ148 PROP_EMIT_CALLBACK_NAME_COLLISION | error | a <props> key equal to the on<Pascal> callback field React/Solid synthesize for a declared emit; both fields land on one props interface with different types (TS2300). |
Compile-time correctness errors (Phase 2 Plan 02) — ROZ200..ROZ299
| Code | Severity | Cause |
|---|---|---|
ROZ200 WRITE_TO_NON_MODEL_PROP | error | SEM-02: $props.foo = … where foo lacks model: true (Phase 2 success criterion 2) |
ROZ201 WRITE_TO_REF | error | $refs.foo = … (refs are read-only DOM-element wrappers) |
ROZ202 RESERVED_IDENTIFIER_COLLISION | error | <data> field or r-for loop var named $el / $props / $data / $refs / $slots / $emit / $event / $attrs / $listeners / $restoreFocus / $model / $expose / $provide / $inject / $clone / $slotted. |
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. |
ROZ207 DATA_NESTED_MUTATION_NOT_REACTIVE | error | an in-place mutation of nested `$data` (member/index write, or a mutating array/Map/Set method). |
ROZ208 DATA_INIT_SIGIL_NOT_LOWERED | error | a `$refs`/`$slots` member access inside a `<data>` initializer. |
ROZ209 EMIT_NAME_INVALID_IDENTIFIER | error | an `$emit` event name that is not `/^[a-zA-Z][a-zA-Z0-9_-]*$/` (e.g. |
ROZ210 RESERVED_SLOT_NAME | error | <slot name="default"> collides with the unnamed-slot sentinel key the emitters use; rename the slot or drop the name attribute |
Warnings (Phase 2 Plan 02) — ROZ300..ROZ399
| Code | Severity | Cause |
|---|---|---|
ROZ300 RFOR_MISSING_KEY | warning | SEM-03: r-for without :key |
ROZ301 RFOR_KEY_IS_LOOP_VARIABLE | warning | SEM-03: :key="index" / :key="item" (loop var) |
ROZ302 RFOR_KEY_IS_NON_PRIMITIVE | warning | :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 | error | D-49: target option missing |
ROZ401 UNPLUGIN_TARGET_UNKNOWN | error | target value not in 'vue'|'react'|'svelte'|'angular' |
ROZ402 UNPLUGIN_TARGET_NOT_YET_SUPPORTED | error | Phase 3 only ships 'vue'; react/svelte/angular ROZ402 until later phases |
ROZ403 UNPLUGIN_PEER_DEP_MISSING | reserved | never emitted; allocated for: @rozie/runtime-vue or @vitejs/plugin-vue not resolvable (Pitfall 8) |
ROZ404 UNPLUGIN_PLUGIN_CHAIN_MISORDER | reserved | never emitted; allocated for: detected vite-plugin-vue lacking; D-25 chain broken |
ROZ405 UNPLUGIN_ANGULAR_OPTIONS_INVALID | error | 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 | error | internal-invariant placeholder; the Vue emitter reports this only on internal-invariant violation |
ROZ421 TARGET_VUE_RHTML_WITH_CHILDREN | error | 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 | error | vite-plugin-solid not resolvable from cwd (D-139) |
ROZ811 UNPLUGIN_SOLID_DEP_MISSING | error | 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 | warning | 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 | error | internal-invariant placeholder; the Solid emitter raises this when a modifier has no solid() hook (a few reuse sites — r-html-with-children, the $el-listener fallback — emit at warning severity) |
@rozie/unplugin React-branch configuration errors (Phase 4 D-63) — ROZ500..ROZ519
| Code | Severity | Cause |
|---|---|---|
ROZ500 UNPLUGIN_REACT_PEER_DEP_MISSING | error | D-59: neither @vitejs/plugin-react nor @vitejs/plugin-react-swc installed (Pitfall 9) |
ROZ501 UNPLUGIN_REACT_DEP_MISSING | error | react peer dep not resolvable |
ROZ502 UNPLUGIN_REACT_PLUGIN_CHAIN_MISORDER | error | 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 | warning | r-html with children — React's dangerouslySetInnerHTML can't coexist with children, children dropped (Pitfall 10); NOTE: also reused by React emit-path internal-invariant/modifier failures at error severity |
ROZ521 TARGET_REACT_NESTED_STATE_MUTATION | warning | Pitfall 7 — $data.foo.bar = 'x' nested member writes; v1 warns + leaves AST unchanged |
ROZ522 TARGET_REACT_MODULE_LET_AUTO_HOISTED | info | Pitfall 3/8 — module-scoped `let X` referenced from LifecycleHook setup auto-hoisted to useRef |
ROZ523 TARGET_REACT_MODULE_LET_UNHOISTABLE | error | Pitfall 3/8 — module-scoped `let X` referenced too indirectly to safely auto-hoist; user must refactor |
ROZ524 TARGET_REACT_SETTER_NAME_COLLISION | error | 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 | warning | 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 | error | @sveltejs/vite-plugin-svelte not resolvable from cwd |
ROZ601 UNPLUGIN_SVELTE_DEP_MISSING | error | 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 | error | r-html with children; mirrors Vue/React Pitfall 10 |
ROZ621 TARGET_SVELTE_RESERVED | error | internal-invariant placeholder; mirrors TARGET_VUE_RESERVED (one reuse site — the $el-listener fallback — emits at warning severity) |
@rozie/unplugin Angular-branch + @rozie/target-angular errors (Phase 5 D-72) — ROZ700..ROZ749
| Code | Severity | Cause |
|---|---|---|
ROZ700 UNPLUGIN_ANGULAR_PEER_DEP_MISSING | error | @analogjs/vite-plugin-angular not resolvable from cwd (D-72) |
ROZ701 UNPLUGIN_ANGULAR_DEP_MISSING | error | @angular/core (^17) not resolvable |
ROZ702 UNPLUGIN_ANGULAR_VITE_VERSION_TOO_LOW | error | analogjs requires Vite ^6 (RESEARCH OQ6) |
ROZ703 UNPLUGIN_ANGULAR_PLUGIN_CHAIN_MISORDER | reserved | never emitted; enforce:'pre' guarantees this |
ROZ720 TARGET_ANGULAR_RFOR_MISSING_KEY | error | Angular @for REQUIRES track expression (Pitfall 3); upgrades the ROZ300 r-for-missing-:key warning to an error on the Angular target |
ROZ721 TARGET_ANGULAR_RHTML_WITH_CHILDREN | error | r-html via [innerHTML] cannot coexist with children |
ROZ722 TARGET_ANGULAR_RESERVED | error | internal-invariant placeholder (one reuse site — the $el-listener fallback — emits at warning severity) |
ROZ723 TARGET_ANGULAR_LOOP_GUARD_HOIST | error | 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 |
ROZ724 TARGET_ANGULAR_DUPLICATE_STATIC_SLOT_KEY | error | two static-literal slot fills on one producer tag resolve to the same key (Phase 80 D-08; Angular-emitter-local, not a core IR validation — the object/snippet fill shape used by React/Solid/Svelte/Vue/Lit makes this construct legal and unimplicated on those targets) |
@rozie/runtime-angular warnings (Phase 80, opening the band reserved by Phase 5) — ROZ750..ROZ799
| Code | Severity | Cause |
|---|---|---|
ROZ750 RUNTIME_ANGULAR_DUPLICATE_SLOT_KEY_WARNING | warning | ngDevMode-guarded dev-mode runtime duplicate keyed-fill collision; last fill (in content-query/document order) wins (Phase 80 D-08) |
Phase 6 (ROZ800..ROZ899) — D-96 sub-ranges
| Code | Severity | Cause |
|---|---|---|
ROZ800 COMPILE_INVALID_TARGET | error | 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 | error | missing or invalid `target` option (vue|react|svelte|angular required) |
ROZ821 BABEL_PLUGIN_NO_FILENAME | error | 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 | error | 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 | error | lit (^3.2) not resolvable from cwd |
ROZ831 UNPLUGIN_LIT_SIGNALS_PEER_DEP_MISSING | error | @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 | error | internal-invariant placeholder; the Lit emitter raises this when a modifier has no lit() hook (one reuse site emits at warning severity) |
ROZ833 TARGET_LIT_RHTML_WITH_CHILDREN | error | 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 | error | unknown --target token (commander InvalidArgumentError) |
ROZ851 CLI_MISSING_INPUT | error | no .rozie files matched after expandInputs |
ROZ852 CLI_OUT_REQUIRED | error | --out required for multiple inputs or multiple targets |
ROZ853 CLI_NULL_BYTE_INPUT | error | null-byte injection in input arg (carries forward unplugin/transform.ts:235-237) |
ROZ854 CLI_NON_ROZIE_INPUT | error | file input that doesn't end with .rozie |
ROZ855 CLI_REACT_REQUIRES_OUT_DIR | error | 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 | reserved | never emitted; allocated for: composeMaps() threw or returned null |
ROZ901 SOURCEMAP_CHILD_MAP_MALFORMED | reserved | never emitted; allocated for: child map missing required Source Map v3 fields |
ROZ902 SOURCEMAP_OFFSET_OUT_OF_RANGE | reserved | never emitted; allocated for: ChildMap.outputOffset exceeds shellMs output length |
ROZ903 SOURCEMAP_REMAPPING_THREW | reserved | never emitted; allocated for: @ampproject/remapping internal error |
ROZ910 SOURCEMAP_AST_NODE_MISSING_LOC | reserved | never emitted; allocated for: synthesized AST node lacks loc; falls back to nearest segment (D-104/D-106) |
ROZ911 SOURCEMAP_PARSER_OFFSET_INVALID | reserved | never emitted; allocated for: @babel/parser startLine/startColumn validation failed |
Phase 06.2 component composition (D-123 sub-allocation) — ROZ920..ROZ939
| Code | Severity | Cause |
|---|---|---|
ROZ920 UNKNOWN_COMPONENT | error | PascalCase tag matches neither outer name nor <components> entry |
ROZ921 NON_ROZIE_IMPORT_PATH | error | <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 | error | <Suspense> — use React directly |
ROZ926 ESCAPE_HATCH_VUE_TELEPORT | error | <Teleport> — use Vue directly |
ROZ927 ESCAPE_HATCH_NG_CONTAINER | error | <ng-container> — use Angular directly |
ROZ928 ESCAPE_HATCH_SVELTE_FRAGMENT | error | <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). |
Phase 71 r-keynav — ROZ982..ROZ987
| Code | Severity | Cause |
|---|---|---|
ROZ982 KEYNAV_UNKNOWN_MODIFIER | error | unknown r-keynav modifier (did-you-mean among .vertical/.horizontal/.both/.loop/.typeahead/.skipdisabled/.grid) |
ROZ983 KEYNAV_NO_ITEMS | error | r-keynav root has no associated r-keynav-item in the component |
ROZ984 KEYNAV_ORPHAN_ITEM | error | r-keynav-item with no enclosing r-keynav root (ancestor-containment wording, reworded Phase 77 — see ROZ996) |
ROZ985 KEYNAV_BAD_FOCUS_MODEL | error | missing/unrecognized r-keynav focus-model argument (valid: tabindex, activedescendant) |
ROZ986 KEYNAV_MULTIPLE_ROOTS | retired | was: more than one r-keynav root in one component (v1 = one group per component); superseded by containment-scoped multi-group + ROZ996 (Phase 77) |
ROZ987 KEYNAV_SOURCE_UNRESOLVED | error | r-keynav :source neither provided nor synthesizable from a co-located r-for |
Phase 75 published-primitive manifest — ROZ988..ROZ989
| Code | Severity | Cause |
|---|---|---|
ROZ988 MANIFEST_SCHEMA_VERSION_MISMATCH | error | installed primitive manifest schemaVersion incompatible with the compiler's MANIFEST_SCHEMA_VERSION (D-04) |
ROZ989 MALFORMED_MANIFEST | error | manifest JSON is not an object, or is missing/mistyped a required field (props/slots/emits/expose/schemaVersion) |
command-palette-portal-overlay phase — r-portal element directive — ROZ990..ROZ992
| Code | Severity | Cause |
|---|---|---|
ROZ990 PORTAL_DIRECTIVE_ON_SLOT | error | `r-portal="expr"` used on a <slot> element; redirect to the boolean `portal` attribute (slot-content portalling is a distinct, orthogonal primitive) |
ROZ991 PORTAL_DIRECTIVE_ON_COMPONENT | error | `r-portal` used on a <components>-registered child component element; v1 only supports plain/host elements |
ROZ992 PORTAL_DIRECTIVE_EMPTY_VALUE | error | `r-portal` with an empty/missing value; a portal needs a container expression |
Phase 77 r-keynav grid focus-model + multi-group — ROZ993..ROZ996
| Code | Severity | Cause |
|---|---|---|
ROZ993 KEYNAV_GRID_ORIENTATION_CONFLICT | error | `.grid()` combined with `.vertical`/`.horizontal`/`.both` (grid owns both axes) |
ROZ994 KEYNAV_GRID_LOOP_CONFLICT | error | `.grid()` combined with `.loop` (boundary/@keynav-page events replace wrapping) |
ROZ995 KEYNAV_GRID_BAD_COLUMNS | error | `.grid` missing its argument, or the argument fails to parse as an expression (non-number literal, ref handle, or unparsable $-path) |
ROZ996 KEYNAV_NESTED_ROOTS | error | an r-keynav root found inside another r-keynav root's subtree; roots must be siblings/cousins, never ancestors of one another |
quick 260812-i67 cross-target event-name contract — ROZ997..ROZ998
| Code | Severity | Cause |
|---|---|---|
ROZ997 EMIT_NAME_CANONICAL_COLLISION | error | a component declares two $emit names that collapse to the same canonical key by kebab/camel/snake equivalence (e.g. |
ROZ998 UNMATCHED_COMPONENT_LISTENER | warning | a component-tag listener names an event the RESOLVED callee does not declare (neither exact nor canonical) and that is not a native DOM event or a Rozie-synthetic runtime event; the hint carries a did-you-mean suggestion plus the callee's declared emit list. |