E-SCOPE-001
An identifier is not declared in scope — commonly a reactive read missing its @.
What it means
The most frequent cause is a reactive cell read without its sigil. Reactive reads must be written @name: the sigil is what tells the compiler to wire a dependency edge, and without it the emitted code references an undefined local rather than the cell. The compiler recognises this specific shape and names the cell you probably meant. The code also covers genuinely undeclared identifiers.
Minimal reproducer
This is the exact source compiled against the linked compiler and verified to produce E-SCOPE-001.
<program title="p">
<count> = 0
const <double> = count * 2
<p>${@double}</p>
</>
How to fix
-
Add the
@sigil.count * 2becomes@count * 2. Reactivity is opt-in by notation — there is no implicit capture. -
Declare the identifier if it really is missing.
A local needs
const/let; a reactive cell needs a<name> = initdeclaration.
Related
Specification
Normative text: §5.2, §6.2, §23.3, §55.10, §34. Spec lives at compiler/SPEC.md .