RBE DOCS

/

Diagnostics

RBE Error Code Book

LIVE
BRANCH · MAIN
doc/error-codes/README.md
SOURCE ↗

This directory is the authoritative long-form reference for RBE diagnostics.

Short terminal/compiler errors should stay compact. When a code has a deeper explanation, use the stable code plus this book instead of stuffing every possible cause into one log line.

Example:

text
RELC3001 Route requires native Container execution but native lowering failed.
help: https://kastrick.vercel.app/project/rbe/doc/error-codes/relc#relc3001

Code format

RBE diagnostic codes use an uppercase subsystem prefix followed by four decimal digits.

text
PREFIX1234

The prefix identifies the subsystem. The numeric range identifies the class of failure.

PrefixAreaReference
RELRuntime Engine Language lexer/parser/runtimeREL
RELCREL compiler/linker/Runtime Image generationRELC
SVCService compiler/runtime/Mother bootService
CTRContainer Controller/Environment lifecycleContainer
CAPCapability broker/gateway/authorityContainer
RBEbackend boot/control-plane/runtimeRuntime
ERError Reporter/recovery authorityRuntime
VLTVault/secret-runtime failuresRuntime
VIDVideo ManagerRuntime
CRYREL cryptography/authentication primitivesRuntime

Numeric convention

Unless an older subsystem already owns a range, new codes should use:

  • 1xxx — source/input/discovery/parse problems;
  • 2xxx — semantic/link/authority/configuration problems;
  • 3xxx — executable lowering/runtime preparation problems;
  • 4xxx — runtime operation/lifecycle failures;
  • 5xxx — process/package/compatibility/bootstrap failures;
  • 8xxx — external dependency/platform failures;
  • 9xxx — internal invariant failures: likely RBE bugs rather than user source mistakes.

9xxx is intentionally special. A user who sees RELC9001, for example, should preserve the diagnostic context and report it instead of blindly rewriting valid REL.

Status labels

The book distinguishes three states:

  • Emitted — current main can produce this code.
  • Assigned — the code/meaning are fixed and implementation work is active or staged, but current main may not emit it yet.
  • Reserved — the code and meaning are reserved for migration from a legacy unnumbered diagnostic or a future implementation slice.

Assigned and reserved codes must not be reused for another meaning.

Diagnostic UX contract

New user-facing diagnostics should provide, where practical:

text
CODE concise summary

  source/path/component:
    ...

  reason:
    ...

  action:
    ...

  help:
    https://kastrick.vercel.app/project/rbe/doc/error-codes/<book>#<lowercase-code>

Machine-readable/JSON logging should keep code, module, severity, and structured context as separate fields rather than parsing the pretty string.

Maintenance rule

A new stable error code should be added to this book in the same change that introduces it. Codes are never recycled after release, even if the implementation that emitted them is removed.

Runtime diagnostics use the public documentation website as their canonical help: target. The built backend package also supports offline long-form lookup before runtime bootstrap, using the same book embedded at build time:

text
backend.exe --explain RELC3001
backend.exe --explain=RELC3001
backend.exe --list-error-codes RELC
service.exe --explain SVC5002

Unknown codes suggest numerically nearby registered codes from the same subsystem. Alphabetic filters select one exact subsystem (REL does not include RELC); filters containing digits can narrow a range such as SVC5. The lookup is compiled from this authoritative documentation tree, so it does not require network access or a mutable runtime docs directory.

For machine-readable tooling, see catalog.json.

CANONICAL DOCUMENTATION

This page follows the RBE main/doc tree and is refreshed by the Kastrick documentation bridge.

main · 5 min revalidate