ENTRY_POINT_NOT_FOUND | The manifest’s entry_point doesn’t exist under base_path. The message names both. | Fix the entry_point/base_path pair in the manifest. No hint: that remediation is prose, not a command. |
BASE_PATH_ESCAPE | A module resolves outside base_path — a relative import (from .. import x) climbing past it, or an entry_point that isn’t under it in the first place. | Restructure the package so every module stays under base_path, or fix the entry_point/base_path pair. |
IMPORT_UNAVAILABLE | An import is neither local, sandbox pre-bound, nor on the (readable) allowlist. | The message names the import and, on deploy, appends what the allowlist currently permits; there is no hint, because a list of permitted modules is prose rather than something to paste. |
IMPORT_NAME_NOT_FOUND | A from x import <name> targets a confirmed-local module or package that never defines <name>. Always fatal, never an advisory: it is decided offline by parsing a file already on disk, so an unreadable allowlist says nothing about it. | Fix the typo, or add the missing definition to the target module. |
IMPORT_CYCLE | Two or more local modules import each other, directly or transitively. | The message names the cycle; break it by removing or restructuring one of the imports. |
SYMBOL_COLLISION | Two inlined local modules both define the same top-level name. Conditional imports report as this: try: from a import helper / except ImportError: from b import helper walks and inlines both branches — the compiler never evaluates which one would win — so the two definitions of helper collide, and the message names two modules without mentioning the try. | The message names both modules; rename one of the colliding definitions, or drop the fallback branch (the sandbox has no __import__, so ImportError can never fire there anyway). |
SANDBOX_NAME_SHADOWED | An inlined local module redefines a name the sandbox pre-binds (result, set_result, data_inputs, Exit, …). The reserved set is the builtins, the platform helpers, the typing names and the exception names — not the pre-bound stdlib modules. A top-level json is therefore not this code: it compiles silently. A local module file named json.py is the related LOCAL_SHADOWS_SANDBOX_MODULE advisory below. | The message names the shadowed name; rename the local definition. |
LOCAL_MODULE_IMPORT_FORM | An import names a local module where the flat namespace can only ever bind names inside it: the dotted import pkg.mod form, or from pkg import mod / from . import mod where mod is a sibling submodule file. Inlining flattens that file’s contents and never binds mod, so every mod.thing afterwards would be a NameError at runtime. | The hint shows the working form for the statement as written — from pkg.mod import <name>, or from .mod import <name> for the relative one. |
UNSUPPORTED_IMPORT_FORM | from x import * against a non-local x — its exported names can’t be statically enumerated to rebind them in the flattened namespace. | Replace the wildcard with the explicit names you use: from x import a, b. |