Skip to content

Error codes

A code is a promise: it names a kind of failure that keeps meaning the same thing across releases. Branch on the code, never on the sentence.

Adding one is a deliberate act. A test refuses any code the loader emits that is not enumerated, and any enumerated code that nothing emits, so this table cannot drift in either direction.

Emitted while loading and checking the project file. Each failure carries the code, the path that produced it, and where possible the line and the resolving command.

CodeMeans
app_requiredmetadata.name is required
backup_credentials_invaliddecrypted backup credentials are missing or malformed
backup_driver_unsupporteda runnable service driver has no qualified executable backup contract
backup_encryption_unverifiedthe selected target cannot prove the encryption mode required by the recovery kind
backup_image_revert_unsafetag rendering would strand an effective backup prerequisite
backup_interruption_not_authorizedthe selected recovery contract needs a recurring stopped-service window the author did not permit
backup_retention_unsupportedthe declared recovery history cannot map to supported retention semantics
backup_service_image_unpublishedthe protected service image lacks verified publication provenance
backup_state_incompletea protected service does not record what it is protected by
backup_target_not_independenta backup target shares the protected failure domain
backup_target_unknowna backup policy selects no declared backup target
compose_container_namea referenced service fixes its container name, which Onebox owns
compose_extendsa referenced service uses extends, which hides what runs
compose_file_unparsablea referenced Compose file is not valid YAML
compose_file_unreadablea referenced Compose file could not be read
compose_ingress_attacheda referenced service already attaches the ingress network
compose_network_modea referenced service sets network_mode, which conflicts with the network it needs
compose_onebox_labela referenced service carries a label in a namespace Onebox generates into
compose_ref_malformeda Compose reference is not of the form path#service
compose_service_missinga referenced Compose file has no such service
compose_traefik_labela referenced service carries routing labels while also declaring a route
connection_variable_claimedan authored value claims a name a managed-service connection supplies
derived_name_too_longa name Onebox derives exceeds the runtime’s limit
drill_schedule_too_sparsethe declared drill cadence is too sparse to keep restore proof within its maximum age
eject_destination_existsthe ejection destination already exists
eject_failedthe runtime could not be handed over
eject_nothing_to_doevery workload already references a Compose file
env_file_missingan environment file the project declares is not on disk
env_file_unreadablean environment file the project declares cannot be read
health_port_unknownan http health check has no port to probe and none can be derived
host_prerequisite_unmethost software a deploy needs is missing or unusable
identifier_collisiona name is used by both a workload and a service
image_unresolveda build-sourced workload has no resolved image for this release
internal_copy_faileda project could not be copied internally
internal_decode_faileda normalised project could not be decoded
no_environmenta project must declare at least one environment
no_workloada project must declare at least one workload
override_invalidan override produced a value the contract does not accept
override_not_permitteda field that may not vary per environment
override_unknown_servicean override names a service the project does not declare
override_unknown_workloadan override names a workload the project does not declare
path_absolutea repository path may not be absolute
path_escapes_repositorya path resolves outside the project directory
path_parent_referencea bind source contains a parent-directory segment
path_unresolvablea path could not be resolved
preflight_env_incompletean environment file is missing keys the project requires
prerequisite_has_no_healtha wait for health names something with no health check
project_invalida value that does not satisfy the contract
project_unparsablethe project file is not valid YAML, or is not a mapping
project_unreadablethe project file could not be read
recovery_objective_unsupportedthe service driver, target, or version cannot execute the declared recovery kind
render_failedthe runtime could not be rendered
route_collisiontwo workloads claim the same address
route_without_proxya route is declared with nothing to route it
schedule_untranslatablea cron expression whose meaning the host’s scheduler cannot preserve
schema_identity_missingthe Application declares no apiVersion
schema_identity_unsupportedthe Application declares an apiVersion this binary does not speak
schema_kind_unsupportedthe authored resource is not an Application
server_unreachablethe server could not be reached
service_image_digest_unavailablethe immutable service image is unavailable from registry and exact cache
service_image_patch_disable_pendingprotected image refresh is refused while disablement is pending
service_patch_unsupportedno exact qualified protected current-to-candidate image transition exists
service_settings_unsupporteda setting was declared for a driver with no way to apply it
stateful_replicasa workload keeping durable state asks for more than one replica
strategy_ungateda rolling release is asked for by a workload with no health check to gate it
unknown_environmentan environment the project does not declare
unknown_fielda field the contract does not define
unknown_prerequisitea prerequisite names something the project does not declare
unknown_service_drivera service names a driver Onebox has no implementation for
workload_malformeda workload is not a mapping
workload_sourcea workload declares other than exactly one of build, image or compose

Raised while a command runs, rather than while the project file is read. These are the codes a deploy, a rollback, a secret rotation or an audited exec puts in the error.code field, so they are the set to branch on when automating.

A blank command is deliberate: some failures have no honest Onebox command that resolves them. A local artifact that could not be written is fixed on the filesystem, not by running the tool again. An angle-bracketed command names a step to complete rather than a line to run verbatim.

CodeMeansGuidance roleCommand
activation_refusedthe release cannot be activated from its recorded manifest stateresolvingob abort --output ndjson
approval_expiredthe local confirmation is older than its validity windownextob approve --plan <path>
approval_failedthe approval artifact is missing, unreadable, or not bound to this plannextob approve --plan <path>
artifact_write_faileda requested local artifact could not be written——
cancelledthe operation was cancelled or interrupted; consult the journal for how far it gotdiagnosticob audit --output json
command_failedthe command failed; diagnostic detail is on stderr——
compose_invalidthe Compose project could not be loadeddiagnosticob validate --output json
compose_not_foundno Compose file was found to adoptresolvingob init --output json
config_existsa project file already exists and init refuses to overwrite itdiagnosticob validate --output json
config_write_failedthe project file could not be written——
confirmation_failedthe backup report for this local confirmation could not be loaded or does not bind to the plannextob approve --plan <path> --backup-report <path>
divergence_detectedthe live application state has diverged from its intended statediagnosticob audit --output json
doctor_faileda local readiness check failed——
exec_failedthe audited exec could not be completeddiagnosticob status --output json
execution_count_invalidexecution count must be between 1 and 1000——
execution_inspect_faileddurable execution could not be read——
execution_list_faileddurable executions could not be listed——
finalize_refusedthe release cannot be finalized because the recorded activation evidence disagrees with the live hostdiagnosticob status --output json
host_environment_mismatchthis host is claimed by a different environment of the same application, which would share its container and volume namesdiagnosticob preflight --output json
host_owner_mismatchthis host is owned by a different Onebox application, and one host has one ownerdiagnosticob preflight --output json
interruptedthe operation’s client went away before its outcome could be recordeddiagnosticob audit --output json
job_history_failedthe job’s retained execution records could not be readdiagnosticob status --output json
job_input_invalidan —input flag is not NAME=VALUE, or names the same input twicediagnosticob canonical --output json
job_logs_failedthe host-supervised job journal could not be readnextob job history <job> --output json
job_plan_failedthe one-shot job plan could not be producednextob job plan <job> --output json
logs_failedlog retrieval faileddiagnosticob status --output json
manifest_invalida release manifest is not valid closed JSON for its schemadiagnosticob status --output json
manifest_missinga release directory carries no manifest, so its lifecycle state is unknowndiagnosticob status --output json
manifest_mode_unsafea release manifest is not mode 0600 on the hostdiagnosticob doctor --output json
manifest_read_faileda release manifest could not be read from the hostdiagnosticob status --output json
manifest_schema_unknowna release manifest declares a schema this binary does not supportdiagnosticob version --output json
manifest_write_faileda release manifest could not be written to the hostdiagnosticob status --output json
migration_backup_requireda migration-effect step requires a plan-bound backup report or an audited overridenextob plan --backup-report-out <path>
migration_gate_closedthe interrupted release ran rollback-unknown data effects, so the requested recovery action is refusedresolvingob resume --output ndjson
operation_failedthe operation failed; inspect stderr and journal evidencediagnosticob audit --output json
output_mode_incompatiblethe requested output mode is incompatible with this commanddiagnosticob help
plan_expiredthe sealed plan is older than its validity windownextob plan --output json
plan_failedthe plan could not be produced; inspect stderr for local diagnosticsdiagnosticob validate --output json
plan_requiredthis command requires a sealed plan when run with structured outputnextob plan --output json
post_activation_failedthe release is serving, but the work after activation did not finishresolvingob resume --output ndjson
preflight_faileda target readiness check failed before any mutation——
recovery_incompleterecovery did not reach its verified terminal stateresolvingob resume --output ndjson
rollback_target_missingno previously serving release is recorded as a rollback targetnextob plan --output json
schedule_list_failedthe scheduled jobs’ timer state could not be readdiagnosticob status --output json
secret_cleanup_pendingthe rotation is applied and verified, but removing the retired generation did not finishresolvingob secrets push --output ndjson
secret_declaration_not_deployedthe deployed release does not declare this secret graphnextob plan --output json
secret_entry_not_selectedmore than one editable secret source exists, so an entry identifier is requireddiagnosticob secrets list --output json
secret_generation_not_deployedthe deployed release predates opaque secret generationsnextob plan --output json
secret_recovery_incompletesecret recovery did not reach its verified terminal stateresolvingob secrets push --output ndjson
secret_rotation_rolled_backan interrupted rotation was restored to its prior generation and the requested payload was not appliedresolvingob secrets push --output ndjson
sops_failedthe SOPS editor exited with a failure——
sops_source_missinga declared encrypted source file does not existdiagnosticob validate --output json
status_failedthe status snapshot could not be readdiagnosticob doctor --output json
unknown_runtime_targetthe requested runtime target is not declareddiagnosticob status --output json

Every code here is raised by a path in the shipped binary, checked against the source by a test in both directions. The table is computed, not maintained by hand.

The failure contract shared by plans, event streams, terminal results, status and doctor. Each carries a stable code and one safe command in its semantic role; diagnostic detail stays in restricted local evidence, never in the public record.

CodeMeansGuidance roleCommand
backup_conflictanother protected-service operation holds the serialization boundarydiagnosticob status --output json
backup_disable_pendingbackup removal is waiting for an authorized safe prerequisite reversaldiagnosticob status --output json
backup_disablement_overduebackup disablement remains pending beyond its action deadlinediagnosticob status --output json
backup_driver_unsupportedthe service driver has no qualified executable backup contractdiagnosticob validate --output json
backup_encryption_unverifiedthe selected backup destination cannot prove its required encryption modediagnosticob validate --output json
backup_image_revert_unsafethe requested image reversion would strand an effective backup prerequisitediagnosticob status --output json
backup_interruption_not_authorizedthe recovery contract requires a recurring stopped-service window the author did not permitdiagnosticob validate --output json
backup_retention_unsupportedthe declared recovery history cannot map to qualified native retention semanticsdiagnosticob validate --output json
backup_service_image_unpublishedno qualified immutable backup image is published for the observed service basediagnosticob status --output json
backup_target_not_independentthe backup target shares the protected failure domaindiagnosticob validate --output json
backup_target_unknownthe backup policy selects no declared backup targetdiagnosticob validate --output json
drill_schedule_too_sparsethe declared drill cadence is too sparse to keep restore proof within its maximum agediagnosticob validate --output json
recovery_objective_unsupportedthe selected driver, version, or target cannot execute the declared recovery kinddiagnosticob validate --output json
service_image_digest_unavailablethe exact immutable service image required by recovery is unavailablediagnosticob status --output json
service_image_patch_disable_pendingservice image refresh is refused while safe backup disablement is pendingdiagnosticob status --output json
service_patch_unsupportedno exact qualified protected current-to-candidate transition existsdiagnosticob status --output json