Skip to content

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 ROZxxx string, with the internal member name in muted text.
  • Severityerror halts compilation; warning is advisory; info is a non-actionable FYI. Two status tokens mark codes that never fire: reserved is a code allocated in the registry but not emitted anywhere in the toolchain, and retired is 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

CodeSeverityCause
ROZ001 MISSING_ROZIE_ENVELOPEerrorthe .rozie file has no <rozie> root element wrapping its blocks.
ROZ002 MULTIPLE_ROZIE_ENVELOPESerrormore than one <rozie> root, or a <rozie> nested inside another envelope.
ROZ003 UNKNOWN_TOP_LEVEL_BLOCKerrora tag at envelope top level is not a recognized block (<props> <data> <script> <listeners> <template> <style> <components>).
ROZ004 DUPLICATE_BLOCKerrorthe same block name appears more than once inside one <rozie> (each block is allowed at most once).
ROZ005 PREMATURE_BLOCK_CLOSEerrorliteral `</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

CodeSeverityCause
ROZ010 INVALID_DECLARATIVE_EXPRESSIONerrora <props>/<data>/<components> body fails to parse as a single JS expression.
ROZ011 NOT_OBJECT_LITERALerrora <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_STRINGretiredDORMANT 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_OBJECTretiredDORMANT since Phase 19 (was error): a <listeners> object-literal value was not an object; replaced by the <listener> element form
ROZ014 REQUIRED_PROP_HAS_DEFAULTwarningA `<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_EVENTerrora <listener> element carries zero @event attributes — it wires nothing; the tag is skipped
ROZ016 LISTENERS_UNEXPECTED_ELEMENTerrora non-<listener> element appears inside <listeners>; only <listener> elements are allowed (split out of ROZ015, WR-01)
ROZ017 LISTENER_ELEMENT_UNTERMINATEDerrorPhase 19 (code-review WR-01): a `<listener>` element is left unterminated — no self-closing `/>` and no closing tag.
ROZ018 INVALID_PROP_DOCS_SHAPEwarninga <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

CodeSeverityCause
ROZ030 SCRIPT_PARSE_ERRORerrorrecoverable <script> syntax error(s) Babel collected under errorRecovery (one diagnostic per lifted error).
ROZ031 SCRIPT_UNRECOVERABLEerrorthe <script> block failed to parse at all (Babel threw); caught and collected, not re-thrown.
ROZ032 SCRIPT_UNRECOGNIZED_LANGerror<script lang="..."> value unrecognized; only ts/typescript enable the TypeScript parser plugin

Template parse (Plan 03) — ROZ050..ROZ069

CodeSeverityCause
ROZ050 TEMPLATE_UNCLOSED_ELEMENTerrora <template> element is left open (a mismatched close tag, or elements still on the stack at input end).
ROZ051 TEMPLATE_MALFORMED_MUSTACHEerroran unmatched {{ with no closing }} in the same text run.

Modifier grammar (Plan 04) — ROZ070..ROZ079

CodeSeverityCause
ROZ070 MODIFIER_GRAMMAR_ERRORerrora malformed @event.modifier(args) chain the modifier grammar could not parse.

Style parse (Plan 03) — ROZ080..ROZ089

CodeSeverityCause
ROZ080 STYLE_PARSE_ERRORerrorPostCSS threw parsing the <style> body, or an inline :style / style string literal.
ROZ081 STYLE_MIXED_ROOT_SELECTORerrora 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_NESTINGerror@portal nested inside @media (or any non-@portal at-rule) — invalid per Spike 004 locked decision #2
ROZ083 STYLE_IMPORTANT_DROPPED_IN_STYLE_OBJECTwarningSpike 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_ERRORerror@portal block has empty/malformed prelude or unparseable inner content
ROZ085 STYLE_MISSING_SASSerrorPhase 10: `<style lang="scss">` was used but the optional `sass` (dart-sass) peer dependency is not installed.
ROZ086 STYLE_SCSS_COMPILE_ERRORerrordart-sass threw on invalid SCSS; the exception is collected (D-08) and parseStyle returns node null
ROZ087 STYLE_UNRECOGNIZED_LANGerrorPhase 10 (D-02): a `<style lang>` value that is neither `scss` nor `css` (nor absent).
ROZ088 STYLE_SCOPED_RULE_TARGETS_PORTAL_CONTENTwarningPhase 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

CodeSeverityCause
ROZ090 SLOT_NAME_STATIC_AND_BOUNDerrora <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_SLOTerrora <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_PORTALerrora bound :name on a portal slot; portalKey() needs a compile-time string for the $portals.<key> closure key (R7c)
ROZ093 SLOT_FAMILY_PREFIX_DUPLICATEerrortwo 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_PREFIXwarninga 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_RESERVEDerrora <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_ERRORerrora <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

CodeSeverityCause
ROZ100 UNKNOWN_PROPS_REFerrorSEM-01: $props.foo where foo not declared
ROZ101 UNKNOWN_DATA_REFerrorSEM-01: $data.foo where foo not declared
ROZ102 UNKNOWN_REFS_REFerrorSEM-01: $refs.foo where no template ref="foo"
ROZ103 UNKNOWN_SLOTS_REFerrorSEM-01: $slots.foo where no <slot name="foo">
ROZ104 LIFECYCLE_OUTSIDE_SCRIPTerror$onMount/$onUnmount/$onUpdate called outside <script> block / Program top level
ROZ105 ASYNC_ONMOUNT_RETURNwarningD-19 edge case: $onMount(async () => …) Promise return cannot be cleanup
ROZ106 COMPUTED_MAGIC_ACCESSerror$props['foo'] — magic accessors require static keys
ROZ107 CONDITIONAL_CLEANUP_RETURNwarning$onMount(() => { return condition ? cleanA : cleanB }) — conditional cleanup shape
ROZ108 NON_FUNCTION_CLEANUP_RETURNwarning$onMount(() => { return nonFnValue }) — return value is not a function
ROZ109 WATCH_INVALID_ARGSwarning$watch requires (getterFn, callbackFn); skipping malformed call.
ROZ110 UNKNOWN_MODIFIERerror.escspe (typo) — name not registered in ModifierRegistry
ROZ111 MODIFIER_ARITY_MISMATCHerror.debounce() (missing required ms arg)
ROZ112 MODIFIER_ARG_SHAPEerror.outside('not-a-ref') — refExpr expected, got literal
ROZ113 UNKNOWN_MODEL_REFerror$model.bogus — 'bogus' is not a declared prop
ROZ114 UNSUPPORTED_LISTENER_TARGETerrorPhase 19 (D-04/D-06): a `<listener :target="...">` whose target is neither `window` nor `document` (nor omitted → `$el`).
ROZ115 EXPOSE_ARG_NOT_OBJECTerror$expose(x) — argument is not an object literal
ROZ116 EXPOSE_SPREAD_PROPERTYerror$expose({ ...o }) — a property is a spread
ROZ117 EXPOSE_COMPUTED_KEYerror$expose({ [k]: v }) — a property has a computed key
ROZ118 EXPOSE_VALUE_NOT_FUNCTIONerror$expose({ a: 1 }) / { a: notInScope } / { a: someComputed } — value is not an in-scope <script> function nor an inline arrow/function
ROZ119 EXPOSE_DUPLICATE_CALLerrortwo top-level $expose(...) calls — only one is allowed
ROZ120 EXPOSE_NOT_TOP_LEVELerror$expose(...) called inside a nested function (not <script> Program top level)
ROZ121 EXPOSE_EVENT_NAME_COLLISIONerror$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_NAMEerror$emit('') / $emit(' ') — empty/whitespace-only string-literal event name
ROZ123 REFS_READ_BEFORE_MOUNTerror$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_COLLISIONerror$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_ACCESSORinfo≥2 model:true props — no single-control ControlValueAccessor auto-emitted on the Angular target
ROZ126 CVA_NO_DISABLED_PROPinfosingle-model CVA component with no `disabled` prop — setDisabledState is a no-op on the Angular target
ROZ127 SLOT_PROP_NAME_COLLISIONerror<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_FORBIDDENerror:global(...) used in <style>; works only on Vue/Svelte, silently dead on React/Solid/Lit.
ROZ129 INVALID_PROVIDE_KEYerror$provide(key, …) key is not a string literal.
ROZ130 INVALID_INJECT_KEYerror$inject(key, …) key is not a string literal.
ROZ131 PROVIDE_NOT_STATEMENTerror$provide(...) used in expression position (must be a top-level statement).
ROZ132 INJECT_UNBOUNDerror$inject(...) not bound to a `const x = $inject(...)`.
ROZ133 PROVIDE_MISSING_VALUEerror$provide(key) called with no value (or a non-expression second argument); $provide(key, value) requires a value.
ROZ134 INJECT_MIXED_DECLARATIONerror$inject(...) shares a `const` declaration with other declarators; it must be the sole declarator (const x = $inject('k')).
ROZ135 STRUCTURED_CLONE_REACTIVEwarningstructuredClone($props/$data/$model.x) throws on Vue reactive()/Svelte $state proxies; use $clone(x).
ROZ136 CLONE_BAD_ARITYerror$clone(value) requires exactly one non-spread argument; the per-target lowering cannot interpret any other arity.
ROZ137 EXPOSE_RESERVED_MEMBERwarningan $expose verb shadows an inherited Object.prototype member (Angular+Lit) or HTMLElement/Element/Node member (Lit); suffix-rename it (e.g.
ROZ138 REACT_STALE_READwarningread 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_COLLISIONerroran inlined .rzts/.rzjs declaration name collides with a host binding or an already-inlined partial name; rename one.
ROZ140 PARTIAL_INLINE_CYCLEerrora .rzts/.rzjs script partial (transitively) imports itself; the cycle is broken and reported instead of overflowing the stack.
ROZ141 PARTIAL_UNSUPPORTED_IMPORT_FORMerrora .rzts/.rzjs partial imported via a default or namespace import; only named imports have an inlinable surface.
ROZ142 PUBLIC_CONTRACT_NAME_COLLISIONerrora 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_EXPRESSIONerrora template @event handler's text failed to parse as a single expression (dominant cause: a statement-body handler, e.g.
ROZ145 EMIT_MULTIPLE_POSITIONAL_ARGSerrora `$emit` call with 2+ positional payload args.
ROZ146 MEMO_MISUSEerror`$memo(...)` was not a well-formed top-level `const X = $memo(fnArrow, keyFnArrow)` call (exactly two arrow-function args).
ROZ147 LIT_INHERITED_PROPERTY_PROP_NAMEwarning(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_COLLISIONerrora <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

CodeSeverityCause
ROZ200 WRITE_TO_NON_MODEL_PROPerrorSEM-02: $props.foo = … where foo lacks model: true (Phase 2 success criterion 2)
ROZ201 WRITE_TO_REFerror$refs.foo = … (refs are read-only DOM-element wrappers)
ROZ202 RESERVED_IDENTIFIER_COLLISIONerror<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_CONSUMEDerrorexpression-context ++/-- on reactive state isn't lowerable
ROZ204 WRITE_TO_MODEL_PROP_VIA_PROPSerror$props.<modelProp> = … ; use $model.<x>
ROZ205 MODEL_ACCESS_NON_MODEL_PROPerror$model.<nonModelProp>
ROZ206 LISTENER_ELEMENT_MISPLACEDerrorPhase 19 (D-08): a `<listener>` element placed inside `<template>` instead of the `<listeners>` block.
ROZ207 DATA_NESTED_MUTATION_NOT_REACTIVEerroran in-place mutation of nested `$data` (member/index write, or a mutating array/Map/Set method).
ROZ208 DATA_INIT_SIGIL_NOT_LOWEREDerrora `$refs`/`$slots` member access inside a `<data>` initializer.
ROZ209 EMIT_NAME_INVALID_IDENTIFIERerroran `$emit` event name that is not `/^[a-zA-Z][a-zA-Z0-9_-]*$/` (e.g.
ROZ210 RESERVED_SLOT_NAMEerror<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

CodeSeverityCause
ROZ300 RFOR_MISSING_KEYwarningSEM-03: r-for without :key
ROZ301 RFOR_KEY_IS_LOOP_VARIABLEwarningSEM-03: :key="index" / :key="item" (loop var)
ROZ302 RFOR_KEY_IS_NON_PRIMITIVEwarning:key="someObj" (Pitfall 6 secondary case)
ROZ303 RIF_ACCESSIBILITY_PLACEHOLDERreservednot emitted in Phase 2 (deferred per A7)
ROZ304 TEMPLATE_FOR_EMPTY_BODYwarning`<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

CodeSeverityCause
ROZ400 UNPLUGIN_TARGET_REQUIREDerrorD-49: target option missing
ROZ401 UNPLUGIN_TARGET_UNKNOWNerrortarget value not in 'vue'|'react'|'svelte'|'angular'
ROZ402 UNPLUGIN_TARGET_NOT_YET_SUPPORTEDerrorPhase 3 only ships 'vue'; react/svelte/angular ROZ402 until later phases
ROZ403 UNPLUGIN_PEER_DEP_MISSINGreservednever emitted; allocated for: @rozie/runtime-vue or @vitejs/plugin-vue not resolvable (Pitfall 8)
ROZ404 UNPLUGIN_PLUGIN_CHAIN_MISORDERreservednever emitted; allocated for: detected vite-plugin-vue lacking; D-25 chain broken
ROZ405 UNPLUGIN_ANGULAR_OPTIONS_INVALIDerrorPhase 23 — malformed `angular` config shape (e.g.

@rozie/target-vue lowering errors (Phase 3 D-52) — ROZ420..ROZ449

CodeSeverityCause
ROZ420 TARGET_VUE_RESERVEDerrorinternal-invariant placeholder; the Vue emitter reports this only on internal-invariant violation
ROZ421 TARGET_VUE_RHTML_WITH_CHILDRENerrorr-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

CodeSeverityCause
ROZ810 UNPLUGIN_SOLID_PEER_DEP_MISSINGerrorvite-plugin-solid not resolvable from cwd (D-139)
ROZ811 UNPLUGIN_SOLID_DEP_MISSINGerrorsolid-js (^1.8) not resolvable from cwd (D-139)

@rozie/runtime-solid warnings (Phase 06.3) — ROZ812

CodeSeverityCause
ROZ812 RUNTIME_SOLID_CONTROLLABLE_MODE_FLIPwarningD-135 — createControllableSignal detected parent flipping controlled/uncontrolled mid-lifecycle

@rozie/target-solid lowering errors (Phase 07.1) — ROZ813..ROZ819

CodeSeverityCause
ROZ813 TARGET_SOLID_RESERVEDerrorinternal-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

CodeSeverityCause
ROZ500 UNPLUGIN_REACT_PEER_DEP_MISSINGerrorD-59: neither @vitejs/plugin-react nor @vitejs/plugin-react-swc installed (Pitfall 9)
ROZ501 UNPLUGIN_REACT_DEP_MISSINGerrorreact peer dep not resolvable
ROZ502 UNPLUGIN_REACT_PLUGIN_CHAIN_MISORDERerrordetected 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

CodeSeverityCause
ROZ520 TARGET_REACT_RHTML_WITH_CHILDRENwarningr-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_MUTATIONwarningPitfall 7 — $data.foo.bar = 'x' nested member writes; v1 warns + leaves AST unchanged
ROZ522 TARGET_REACT_MODULE_LET_AUTO_HOISTEDinfoPitfall 3/8 — module-scoped `let X` referenced from LifecycleHook setup auto-hoisted to useRef
ROZ523 TARGET_REACT_MODULE_LET_UNHOISTABLEerrorPitfall 3/8 — module-scoped `let X` referenced too indirectly to safely auto-hoist; user must refactor
ROZ524 TARGET_REACT_SETTER_NAME_COLLISIONerrorPhase 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

CodeSeverityCause
ROZ550 RUNTIME_REACT_CONTROLLABLE_MODE_FLIPwarningD-57 — useControllableState detected parent flipping controlled/uncontrolled mid-lifecycle

@rozie/unplugin Svelte-branch + @rozie/target-svelte errors (Phase 5) — ROZ600..ROZ649

CodeSeverityCause
ROZ600 UNPLUGIN_SVELTE_PEER_DEP_MISSINGerror@sveltejs/vite-plugin-svelte not resolvable from cwd
ROZ601 UNPLUGIN_SVELTE_DEP_MISSINGerrorsvelte itself (^5) not resolvable from cwd
ROZ602 UNPLUGIN_SVELTE_PLUGIN_CHAIN_MISORDERreservedenforce:'pre' guarantees this; placeholder for future
ROZ620 TARGET_SVELTE_RHTML_WITH_CHILDRENerrorr-html with children; mirrors Vue/React Pitfall 10
ROZ621 TARGET_SVELTE_RESERVEDerrorinternal-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

CodeSeverityCause
ROZ700 UNPLUGIN_ANGULAR_PEER_DEP_MISSINGerror@analogjs/vite-plugin-angular not resolvable from cwd (D-72)
ROZ701 UNPLUGIN_ANGULAR_DEP_MISSINGerror@angular/core (^17) not resolvable
ROZ702 UNPLUGIN_ANGULAR_VITE_VERSION_TOO_LOWerroranalogjs requires Vite ^6 (RESEARCH OQ6)
ROZ703 UNPLUGIN_ANGULAR_PLUGIN_CHAIN_MISORDERreservednever emitted; enforce:'pre' guarantees this
ROZ720 TARGET_ANGULAR_RFOR_MISSING_KEYerrorAngular @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_CHILDRENerrorr-html via [innerHTML] cannot coexist with children
ROZ722 TARGET_ANGULAR_RESERVEDerrorinternal-invariant placeholder (one reuse site — the $el-listener fallback — emits at warning severity)
ROZ723 TARGET_ANGULAR_LOOP_GUARD_HOISTerroran 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_KEYerrortwo 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

CodeSeverityCause
ROZ750 RUNTIME_ANGULAR_DUPLICATE_SLOT_KEY_WARNINGwarningngDevMode-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

CodeSeverityCause
ROZ800 COMPILE_INVALID_TARGETerrorunknown target token in opts.target
ROZ801 COMPILE_INVALID_OPT_COMBOreserveddisallowed opts combination

@rozie/babel-plugin (Plan 06-04) — ROZ820..ROZ829

CodeSeverityCause
ROZ820 BABEL_PLUGIN_INVALID_TARGETerrormissing or invalid `target` option (vue|react|svelte|angular required)
ROZ821 BABEL_PLUGIN_NO_FILENAMEerrorcannot resolve relative .rozie path without state.filename / file.opts.filename
ROZ822 BABEL_PLUGIN_COMPILE_ERRORerrorcompile() returned severity:'error' diagnostics during sibling write
ROZ823 BABEL_PLUGIN_SIBLING_WRITE_FAILerrorfs 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

CodeSeverityCause
ROZ830 UNPLUGIN_LIT_PEER_DEP_MISSINGerrorlit (^3.2) not resolvable from cwd
ROZ831 UNPLUGIN_LIT_SIGNALS_PEER_DEP_MISSINGerror@lit-labs/preact-signals (^1) not resolvable from cwd

@rozie/target-lit lowering errors (Phase 07.1) — ROZ832..ROZ839

CodeSeverityCause
ROZ832 TARGET_LIT_RESERVEDerrorinternal-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_CHILDRENerrorr-html via unsafeHTML cannot coexist with children; mirrors ROZ620/721
ROZ840 RUNTIME_LIT_CONTROLLABLE_MODE_FLIPwarningcreateLitControllableProperty parent-flip warning (D-LIT-10)

@rozie/cli argv parsing + filesystem errors (Plan 06-03) — ROZ850..ROZ879

CodeSeverityCause
ROZ850 CLI_INVALID_TARGETerrorunknown --target token (commander InvalidArgumentError)
ROZ851 CLI_MISSING_INPUTerrorno .rozie files matched after expandInputs
ROZ852 CLI_OUT_REQUIREDerror--out required for multiple inputs or multiple targets
ROZ853 CLI_NULL_BYTE_INPUTerrornull-byte injection in input arg (carries forward unplugin/transform.ts:235-237)
ROZ854 CLI_NON_ROZIE_INPUTerrorfile input that doesn't end with .rozie
ROZ855 CLI_REACT_REQUIRES_OUT_DIRerrortarget=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

CodeSeverityCause
ROZ900 SOURCEMAP_COMPOSE_FAILEDreservednever emitted; allocated for: composeMaps() threw or returned null
ROZ901 SOURCEMAP_CHILD_MAP_MALFORMEDreservednever emitted; allocated for: child map missing required Source Map v3 fields
ROZ902 SOURCEMAP_OFFSET_OUT_OF_RANGEreservednever emitted; allocated for: ChildMap.outputOffset exceeds shellMs output length
ROZ903 SOURCEMAP_REMAPPING_THREWreservednever emitted; allocated for: @ampproject/remapping internal error
ROZ910 SOURCEMAP_AST_NODE_MISSING_LOCreservednever emitted; allocated for: synthesized AST node lacks loc; falls back to nearest segment (D-104/D-106)
ROZ911 SOURCEMAP_PARSER_OFFSET_INVALIDreservednever emitted; allocated for: @babel/parser startLine/startColumn validation failed

Phase 06.2 component composition (D-123 sub-allocation) — ROZ920..ROZ939

CodeSeverityCause
ROZ920 UNKNOWN_COMPONENTerrorPascalCase tag matches neither outer name nor <components> entry
ROZ921 NON_ROZIE_IMPORT_PATHerror<components> entry value is not a `.rozie` string literal
ROZ922 LOWERCASE_LIKELY_TYPOwarning<counter> when Counter is declared
ROZ923 DUPLICATE_COMPONENT_IMPORT_PATHwarningtwo <components> entries point at the same .rozie path
ROZ924 UNUSED_COMPONENT_ENTRYwarningdeclared <components> entry never used in template
ROZ925 ESCAPE_HATCH_REACT_SUSPENSEerror<Suspense> — use React directly
ROZ926 ESCAPE_HATCH_VUE_TELEPORTerror<Teleport> — use Vue directly
ROZ927 ESCAPE_HATCH_NG_CONTAINERerror<ng-container> — use Angular directly
ROZ928 ESCAPE_HATCH_SVELTE_FRAGMENTerror<svelte:fragment> — use Svelte directly

Phase 07.2 consumer-side slot fills (D-08 sub-allocation) — ROZ940..ROZ959

CodeSeverityCause
ROZ940 DUPLICATE_DEFAULT_FILLerrorlocked in SPEC.md R3; loose children + explicit <template #default>
ROZ941 UNKNOWN_SLOT_NAMEwarningconsumer fills a slot the producer doesn't declare (typo catch)
ROZ942 DUPLICATE_NAMED_FILLerrortwo sibling <template #header> directives
ROZ943 REPROJECTION_UNDECLARED_WRAPPER_SLOTerrorwrapper forwards a slot it doesn't itself declare
ROZ944 REPROJECTION_UNDECLARED_INNER_SLOTwarningwrapper forwards into a slot the inner producer doesn't declare
ROZ945 CROSS_PACKAGE_LOOKUP_FAILEDerrornpm/relative resolution of a <components> importPath returns null
ROZ946 DYNAMIC_NAME_EXPRESSION_INVALIDerror`<template #[expr]>` bracketed text fails to parse as a JS expression
ROZ947 SCOPED_PARAM_MISMATCHerrorD-09 — consumer destructures a param the producer SlotDecl.params doesn't declare
ROZ948 SCOPED_PARAMS_ALL_DROPPEDwarningscoped-params destructure had properties but none resolved to simple bindings (e.g.

Phase 07.3 consumer-side two-way binding — ROZ949..ROZ951

CodeSeverityCause
ROZ949 TWO_WAY_PROP_NOT_MODELerrorr-model:prop= where producer prop lacks model:true (dual-frame: consumer site + producer decl)
ROZ950 TWO_WAY_ARG_OR_TARGET_INVALIDerrorr-model: with empty arg (`r-model:=`), OR applied to non-component HTML tag (`<div r-model:foo=`)
ROZ951 TWO_WAY_LHS_NOT_WRITABLEerrorRHS not a writable lvalue per 07.3-CONTEXT D-03 permissive rule (literal/ternary/call/$computed)
ROZ952 TWO_WAY_DIRECTIVE_TYPOerrorcolon-form directive `r-<base>:<arg>` whose `<base>` is a Levenshtein near-miss of `model` (e.g.

Phase 11 r-match construct — ROZ953..ROZ959

CodeSeverityCause
ROZ953 MATCH_EMPTY_DISCRIMINANTerrorr-match host with no value (`<template r-match>` / `<template r-match="">`)
ROZ954 MATCH_STRAY_CHILDerrorr-match host child that is neither r-case nor r-default
ROZ955 MATCH_CASE_NO_VALUEerrorvalueless r-case (hint: did you mean r-default?)
ROZ956 MATCH_CASE_WITH_FORerrorr-case + r-for on the same element
ROZ957 MATCH_DEFAULT_NOT_LASTerrorr-default is not the last branch of the match
ROZ958 MATCH_MULTIPLE_DEFAULTerrormore than one r-default in a single r-match
ROZ959 MATCH_DUPLICATE_CASEwarningduplicate literal r-case value (first occurrence wins, like `switch`)

Phase 12 r-model modifiers — ROZ960..ROZ964

CodeSeverityCause
ROZ960 RMODEL_UNKNOWN_MODIFIERerrorunknown r-model modifier (did-you-mean among model modifiers)
ROZ961 RMODEL_EVENT_MODIFIER_MISUSEDerrora valid event modifier used on r-model
ROZ962 DIRECTIVE_TAKES_NO_MODIFIERSerrormodifier on r-if/r-for/r-show/r-html/r-text
ROZ963 RMODEL_BUILTIN_ON_TWO_WAYerrorbuilt-in r-model modifier on consumer-side r-model:propName
ROZ964 RMODEL_MODIFIER_NOT_APPLICABLEwarningvalue-transform modifier on a checkbox/radio r-model

Phase 13 $classSelector — ROZ965..ROZ967

CodeSeverityCause
ROZ965 CLASS_SELECTOR_ARG_NOT_LITERALerrorR3: $classSelector argument is not a string literal
ROZ966 CLASS_SELECTOR_UNKNOWN_CLASSerrorR4: class not declared in the component's <style> scope; did-you-mean hint
ROZ967 CLASS_SELECTOR_INVALID_TOKENerrorR5: multi-token / dotted / combinator / `#` argument (fails the bare-class-token regex)
ROZ968 CLASS_SELECTOR_REACT_NO_SOURCEretired(Phase 25) — formerly fired when $classSelector was used in a React emit without opts.source.

Phase 14 attribute fallthrough — ROZ969..ROZ971

CodeSeverityCause
ROZ969 R_BIND_COLON_FORMerrorR1: `r-bind:foo="x"` colon form is not supported (use the `:foo` shorthand or the bare-spread `r-bind="obj"`)
ROZ970 ATTR_FALLTHROUGH_MULTI_ROOTerrorR8: a multi-root template with auto-fallthrough enabled has no single root to receive inherited attributes
ROZ971 ATTR_DOUBLE_APPLYwarningR9: `$attrs` referenced (e.g.

Phase 15 listener fallthrough — ROZ972..ROZ974

CodeSeverityCause
ROZ972 R_ON_COLON_FORMerrorR1: `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_ROOTerrorR8: a multi-root template with auto-listener-fallthrough enabled has no single root to receive inherited listeners (INDEPENDENT of ROZ970)
ROZ974 LISTENER_DOUBLE_APPLYwarningR9: `$listeners` referenced (e.g.

Phase 16 $restoreFocus — ROZ975..ROZ976

CodeSeverityCause
ROZ975 RESTORE_FOCUS_NON_LITERAL_SELECTORerrorSPEC R9: $restoreFocus first arg is not a string literal
ROZ976 RESTORE_FOCUS_BAD_ARITYerrorSPEC R9: $restoreFocus called with wrong number of arguments

compile() empty-code guard — ROZ977

CodeSeverityCause
ROZ977 COMPILE_EMPTY_CODE_NO_DIAGNOSTICSerrorinternal: compile() emit produced empty code with no error diagnostics (parser/lowerer/emitter internal failure)

Phase 26 bare-sigil rejection — ROZ978

CodeSeverityCause
ROZ978 BARE_OBJECT_SIGILerrorbare $props/$data/$refs/$slots used as a whole-object value (not a member access).

Phase 37 $portals.default — ROZ979

CodeSeverityCause
ROZ979 DEFAULT_PORTAL_NAME_RESERVEDerrora 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_COLLISIONerrora 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

CodeSeverityCause
ROZ982 KEYNAV_UNKNOWN_MODIFIERerrorunknown r-keynav modifier (did-you-mean among .vertical/.horizontal/.both/.loop/.typeahead/.skipdisabled/.grid)
ROZ983 KEYNAV_NO_ITEMSerrorr-keynav root has no associated r-keynav-item in the component
ROZ984 KEYNAV_ORPHAN_ITEMerrorr-keynav-item with no enclosing r-keynav root (ancestor-containment wording, reworded Phase 77 — see ROZ996)
ROZ985 KEYNAV_BAD_FOCUS_MODELerrormissing/unrecognized r-keynav focus-model argument (valid: tabindex, activedescendant)
ROZ986 KEYNAV_MULTIPLE_ROOTSretiredwas: 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_UNRESOLVEDerrorr-keynav :source neither provided nor synthesizable from a co-located r-for

Phase 75 published-primitive manifest — ROZ988..ROZ989

CodeSeverityCause
ROZ988 MANIFEST_SCHEMA_VERSION_MISMATCHerrorinstalled primitive manifest schemaVersion incompatible with the compiler's MANIFEST_SCHEMA_VERSION (D-04)
ROZ989 MALFORMED_MANIFESTerrormanifest 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

CodeSeverityCause
ROZ990 PORTAL_DIRECTIVE_ON_SLOTerror`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_COMPONENTerror`r-portal` used on a <components>-registered child component element; v1 only supports plain/host elements
ROZ992 PORTAL_DIRECTIVE_EMPTY_VALUEerror`r-portal` with an empty/missing value; a portal needs a container expression

Phase 77 r-keynav grid focus-model + multi-group — ROZ993..ROZ996

CodeSeverityCause
ROZ993 KEYNAV_GRID_ORIENTATION_CONFLICTerror`.grid()` combined with `.vertical`/`.horizontal`/`.both` (grid owns both axes)
ROZ994 KEYNAV_GRID_LOOP_CONFLICTerror`.grid()` combined with `.loop` (boundary/@keynav-page events replace wrapping)
ROZ995 KEYNAV_GRID_BAD_COLUMNSerror`.grid` missing its argument, or the argument fails to parse as an expression (non-number literal, ref handle, or unparsable $-path)
ROZ996 KEYNAV_NESTED_ROOTSerroran 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

CodeSeverityCause
ROZ997 EMIT_NAME_CANONICAL_COLLISIONerrora component declares two $emit names that collapse to the same canonical key by kebab/camel/snake equivalence (e.g.
ROZ998 UNMATCHED_COMPONENT_LISTENERwarninga 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.

Pre-1.0 — APIs may change between minor versions.