expressionScopes: {
    all(): ExpressionScope[];
    get(id: undefined | null | string): undefined | ExpressionScope;
    has(id: string): boolean;
    ids(): string[];
    require(id: string): ExpressionScope;
} = ...

The catalog of every place SoHL evaluates a sohl.entity.expr.SafeExpression, and what is in scope there.

Unlike sohl.entity.expr.expressionHelpers, this registry is closed: scopes describe SoHL's own call sites, so they are declared in the source catalog (src/entity/expr/expression-scopes.mjs) and never registered at runtime. A world extends the expression language by adding helpers, not by inventing call sites.

Type declaration

ExpressionScope — what a single scope provides.