Skip to main content
Branch on a stable code, never on message text. Every failure envelope carries one E_* code from a single table. Codes may be added, never renamed or removed. The message beside a code is free copy and may change in any release. The table ships as extension-develop/contract/codes.json, see Result envelope.

Usage

Project

Manifest

Compile

Remote projects and network

Browser binary and launch

Browser runtime

Debug protocol

Dev server

Ready contract

Control channel

Logs

Create

Everything else

Folded and legacy names

codes.json carries two extra mappings beside the table:
  • folded maps finer inventory names onto a shipped family code. For example E_ARG_REQUIRED folds onto E_ARGS, and E_BROWSER_NOT_INSTALLED folds onto E_BROWSER_NOT_FOUND.
  • legacy maps the three pre-envelope conventions onto the table. Snake_case ready.json codes (profile_locked to E_PROFILE_LOCKED), PascalCase error names (TargetNotFound to E_TARGET_NOT_FOUND), and kebab-case doctor check ids (eval-token to E_TOKEN_MISSING).
If your consumer meets a name outside the table, resolve it through these mappings before branching.

Next steps