Error Codes

Every user-facing error from bext has a stable code following the E__ pattern. Use bext explain <code> to get full prose, examples, and next steps from the terminal.

Quick Reference

Config

Code Title
E_CONFIG_PARSE Configuration file failed to parse
E_CONFIG_UNKNOWN_SECTION Unknown top-level section in config
E_CONFIG_UNKNOWN_KEY Unknown key inside a known section
E_CONFIG_DEPRECATED_KEY Deprecated configuration key

Plugin

Code Title
E_PLUGIN_SCAN_BLOCKED Plugin directory scan blocked
E_PLUGIN_LOAD_FAILED Plugin failed to load
E_PLUGIN_MANIFEST_INVALID Plugin manifest is invalid

Build

Code Title
E_BUILD_BUNDLE_FAILED SSR bundle build failed
E_BUILD_TIMEOUT Build timed out

Render

Code Title
E_RENDER_SSR_PANIC SSR render panicked
E_RENDER_TIMEOUT SSR render timed out
E_RENDER_DEADLINE Render deadline exceeded (soft)

Cache

Code Title
E_CACHE_REDIS_DOWN Redis cache backend unreachable
E_CACHE_STAMPEDE Cache stampede detected

TLS

Code Title
E_TLS_ACME_FAILED ACME certificate provisioning failed
E_TLS_CERT_EXPIRED TLS certificate has expired

WAF

Code Title
E_WAF_RULE_BLOCKED Request blocked by WAF rule
E_WAF_RATE_LIMITED Request rate-limited

Proxy

Code Title
E_PROXY_UPSTREAM_DOWN Upstream server is unreachable
E_PROXY_TIMEOUT Upstream request timed out

Auth

Code Title
E_AUTH_TOKEN_INVALID Authentication token is invalid
E_AUTH_TOKEN_EXPIRED Authentication token has expired

Runtime

Code Title
E_RUNTIME_PORT_IN_USE Listen port is already in use
E_RUNTIME_STARTUP_FAILED Server startup failed

Deploy & Upgrade

Code Title
E_DEPLOY_HEALTH_GATE_FAILED Post-deploy health gate failed
E_UPGRADE_ROLLBACK Upgrade rolled back

Secrets

Code Title
E_SECRETS_STORE_LOCKED Secret store is locked

Network

Code Title
E_NETWORK_DNS_FAILED DNS resolution failed

Using Error Codes

From the terminal

bext explain E_CONFIG_PARSE

Output includes: explanation, concrete examples that trigger the error, numbered next steps, and cross-references to related codes.

In CI

bext explain E_CONFIG_PARSE --json

Returns a JSON object with code, title, area, severity, explanation, examples, next_steps, and see_also fields.

Listing all codes

bext explain              # Human-readable table
bext explain --json       # Full JSON registry

Fuzzy matching

If you mistype a code, bext suggests the nearest match:

bext explain E_CONFIG_PARS
# unknown error code `E_CONFIG_PARS`. Did you mean:
#   E_CONFIG_PARSE  Configuration file failed to parse

How Codes Are Structured

E_CONFIG_PARSE
│ │      │
│ │      └── What happened (PARSE, UNKNOWN_SECTION, TIMEOUT, …)
│ └── Area of the system (CONFIG, PLUGIN, BUILD, RENDER, …)
└── Error prefix (always E_)

Every entry in the registry includes:

- Severityfatal, error, warning, or info

- Explanation — multi-sentence prose

- Examples — concrete triggers

- Next steps — numbered, actionable

- See also — related error codes