E0001 |
InvalidLedgerShard: A ledger shard cannot be published |
The file or value given to ledger publication is not a shard this build can publish. The message says why. |
Correct what the message names, or regenerate the shard with the vibey that wrote it, and publish again. vibey ledger --help lists the publishing commands. |
E0002 |
TooManyWindDowns: A work item has rotated engines too many times |
The work item wound down and rotated to another engine three or more times, so vibey stops rotating it and asks for a person. |
This needs a human decision: read the work item's history with vibey ledger search, then retry it with a different scope or engine, or stop the project with vibey abandon. |
E0003 |
DatabaseNotConfigured: No database is configured |
VIBEY_PG_URL is unset, and vibey has no safe default database to invent. |
Set VIBEY_PG_URL to a PostgreSQL URL, or run vibey install --postgres to install and start a supported local server. vibey doctor checks the result. |
E0004 |
UnsupportedPostgresVersion: The database is too old |
The database VIBEY_PG_URL points at is below vibey's PostgreSQL compatibility floor. |
Point VIBEY_PG_URL at a supported server (CI covers PostgreSQL 14 to 18). vibey doctor reports the version it found. |
E0005 |
ConfigError: vibey.toml failed validation |
vibey.toml holds a key or value that breaks a rule. The message names the key and the rule. |
Correct that key in vibey.toml. docs/reference/configuration.md lists every key and what it accepts. |
E0006 |
SlotHeld: A job is waiting for a local engine slot |
Selection planned a hold: the job waits in the queue for a local engine slot. |
Nothing to do; the job is claimed when a slot frees. vibey engines shows engine health and selection, and vibey queue list shows the queue. |
E0007 |
AbandonmentRefused: The project cannot be abandoned from where it stands |
The project is done (finished is a different ending from abandoned), or is in a phase with no edge to abandoned, or in a phase this vibey does not know. Nothing was changed. |
vibey status shows the project's phase. A finished project needs no abandoning. |
E0008 |
BudgetExceeded: A spend would exceed the project's budget caps |
A spend would take the project over its dollar or turn cap, so vibey parks a gate instead of spending. |
A tripped cap parks a budget_exhausted gate rather than spending more. Raise it with vibey answer GATE_ID --raw {"max_dollars": 25}, quoted for your shell, or "max_turns" for the turn cap; vibey cost shows where the spend went. vibey gates lists every open gate with its id, its prompt, and the exact vibey answer command that answers it. |
E0009 |
CheckoutHeld: The checkout is already held by a live project |
A project was asked to start in a checkout that a live project already holds. Two live projects never share a checkout. Nothing was created. |
Nothing was created. If the project holding the checkout should stop, vibey abandon PROJECT_ID --reason TEXT lets the checkout go; otherwise start the new project in another checkout with --repo. vibey projects --json lists every project with its checkout and phase. |
E0010 |
DependencyCannotFinish: A job depends on one that can never succeed |
A job depends on one that failed, was cancelled, or is in a state this vibey does not know, so bumping it would claim a place it can never use. |
Nothing moved. Replace or unblock the dependency first; vibey queue list shows each job's state. |
E0011 |
DependencyCycle: Jobs depend on one another in a ring |
Jobs depend on one another in a ring, so none of them can ever be claimed. Which job of a ring should run first is not a question an ordering rule can answer, so vibey refuses rather than break it arbitrarily. |
Nothing moved. Remove one dependency from the ring so an order exists. |
E0012 |
DependentsStillBumped: Bumped jobs still need this one's place |
An un-bump of a job that bumped jobs still need. Un-bumping it would leave them holding a place they cannot use. |
Nothing moved. Un-bump the dependent jobs first with vibey queue unbump, then this one. |
E0013 |
EscalationExhausted: The escalation ladder has no rung left |
The build escalation ladder has no rung left for this attempt, so the work item parked a human gate. |
The work item failed at every rung of the effort ladder and parked a human gate. Answer it with vibey answer GATE_ID. vibey gates lists every open gate with its id, its prompt, and the exact vibey answer command that answers it. |
E0014 |
ForeignBranchRefused: BUILD refused a branch it cannot prove it created |
BUILD found a branch it meant to create, reuse or merge and cannot prove this project created it, so it refused to touch it. Branch names carry the project, and each branch BUILD creates records the project that owns it. Nothing on the branch was changed. |
Inspect the branch the message names. If it is stale and nobody needs it, delete it yourself; if it holds work you want, merge it by hand. vibey will not build on history it cannot prove it started. |
E0015 |
GateAlreadyAnswered: The gate was already answered |
A gate was answered once already, by another request, so this answer was not recorded. The first answer stands; a gate is never answered twice. |
A gate is answered once, and the first answer stands. The answer that landed is on the ledger: vibey ledger search --kind GateAnswered To retry an answer safely, give it a --request-id: the same id with the same answer is a no-op once it has landed. |
E0016 |
HandbackRefused: A handback was refused |
A handback was asked for with no successful probe recorded after the latest failover, or with a failover that names no known engine (ADR-0070). |
Record a successful probe of the original engine after the latest failover, then ask again. vibey driver --help lists the failover and handback commands. |
E0017 |
HandoffRejected: The no-loss gate refused a handoff |
The no-loss gate denied a handoff after exhausting its escalation path. |
The no-loss gate refused the handoff, so nothing was lost -- the run is parked on a human gate instead, whose prompt says what could not be carried over. Answer it with vibey answer GATE_ID. vibey gates lists every open gate with its id, its prompt, and the exact vibey answer command that answers it. |
E0018 |
IllegalTransitionError: The project is not in a phase this command applies to |
A phase transition was attempted that the transition rules deny. |
The project is not in a phase this command applies to. vibey status shows the current phase. |
E0019 |
InvalidAbandonment: The abandonment request cannot be recorded |
The reason is empty, over-long or carries control or formatting characters, or the --by label cannot be recorded. Nothing was changed. |
Give vibey abandon a non-empty --reason of reasonable length with no control characters, and a --by label that can be recorded. |
E0020 |
InvalidActorLabel: The --by label cannot be recorded |
A name given for the record (--by) is empty, too long, or carries control or formatting characters. Nothing was changed. |
Give a short, non-empty --by label with no control or formatting characters. |
E0021 |
InvalidAnswer: The gate answer is not in QUESTION_ID=ANSWER form |
A human-gate answer was not in the expected QUESTION_ID=ANSWER form. |
Answer with vibey answer GATE_ID QUESTION_ID=ANSWER, or pass a JSON object with --raw. vibey gates prints the exact command for each open gate. |
E0022 |
InvalidBudgetChange: The budget change is not one vibey can make |
The change names no cap, or gives a value that is not one: dollars must be a finite number above zero and turns a whole number above zero. Nothing was changed or recorded. |
Name a cap and give it a valid value; vibey budget --help shows the options. |
E0023 |
InvalidPhaseError: A phase state was built with invalid fields |
A PhaseState was constructed with invalid fields. |
This looks like a bug in vibey rather than your project. |
E0024 |
InvalidSpecError: The design spec is not buildable |
A DesignSpec failed its buildability checks. |
Run vibey design to finish the spec before building. |
E0025 |
LeaseReapIncomplete: Some expired leases could not be reaped |
Each lease is reaped in a transaction of its own; the leases that could be reaped were, and the message names each one left as it was, and why. |
Fix the cause the message names for each lease left, then run vibey recover or vibey queue reap again. |
E0026 |
LifecycleConflict: The host's state refuses the request |
The request is fine, but the host's state refuses it: a folder or checkout is taken. |
Choose another folder or checkout, or release the one that holds it (vibey abandon lets a project's checkout go). |
E0027 |
LifecycleFailed: The host's command failed |
The host tried, and the command it ran failed for a reason of its own. |
Read the failure in the message, fix that cause on the host, and try again. |
E0028 |
LifecycleInvalid: The device sent something unacceptable |
What the device sent is not acceptable: a name, intake or reason that breaks the rules. |
Correct the name, intake or reason the message names and send it again. |
E0029 |
LifecycleUnavailable: The host has not allowed this, or is resting |
The host has not allowed this action, or is resting (the Sabbath window). |
Try later, or ask the host. vibey sabbath shows the window on this host. |
E0030 |
ModelAnswerRejected: A model's answer broke the required shape |
A model's answer broke the shape its caller requires, after one re-ask naming why. It is recorded as an ENGINE failure: the work asked of the model was sound and vibey read the answer correctly. |
Retry. If it keeps happening, try another engine or model; vibey engines and vibey models show what is available. |
E0031 |
NoEligibleEngine: No engine is eligible |
Rotation was asked to select from a candidate set with no positive weight. |
Every engine is excluded, circuit-open, or missing a required capability. Run vibey engines to see why, or vibey doctor to check installs and auth. |
E0032 |
NotReorderable: The job's place in the queue cannot be changed |
Only a job that is still waiting, parked or running can be moved. A finished job will never be claimed again, and a job in a state or phase this vibey does not know is one it will not write. |
Nothing moved. vibey queue list shows the jobs that can still be moved. |
E0033 |
OutputBudgetExhausted: A local model spent its whole output budget |
A local model used its entire output budget on reasoning and produced no answer, even after one bounded retry with a larger budget and lighter reasoning. It is recorded as a CAPACITY failure. |
Use a model with more headroom; vibey models lists the local model families and what Ollama says each can do. |
E0034 |
PriorityRefused: The account has no grant to reorder the queue |
A request to reorder the queue came from an account or source with no grant (sub-doctrine 12.j). |
Nothing moved, and the refusal is on the ledger: vibey ledger search --kind JobPriorityRefused The operator is the account that owns the project's own vibey.toml. An automation is admitted by naming it in that file's [queue.priority] sources, in a reviewed change, and running it as that account (ADR-0054). |
E0035 |
ReorderConflict: The database aborted the reorder |
The database broke a lock cycle by aborting this request. Nothing moved. |
Retry the same command; every reorder is idempotent under replay. |
E0036 |
SovereignResearchUnavailable: A research provider refused a topic rather than invent a source |
A local model has no web access, and returning its recollection with a source field would put a fabricated citation into a design spec. The provider says so at the moment it knows (doctrine 10). |
Supply the source yourself in the design interview, or use a provider with web access (--provider). vibey will not invent a citation. |
E0037 |
UnknownGate: No gate has that id |
No human gate exists with the given id. |
vibey gates lists every open gate with its id, its prompt, and the exact vibey answer command that answers it. |
E0038 |
UnknownJob: No job has that id in the project |
No job with the given id exists in the project the request named. |
vibey queue list shows the project's jobs and their ids. |
E0039 |
UnknownLane: No listed lane has that events file |
The hub reads only files it found as lanes, so a path that is not one is refused rather than opened (ADR-0067). |
Choose a lane the hub listed. |
E0040 |
UnknownProject: No project has that id |
No project exists with the given id. |
vibey projects lists every project with its id. |
E0041 |
UnknownProvider: The engine provider is not one vibey knows |
The requested engine provider is not one vibey knows how to build. |
Use one of the providers the command's --help lists. |
E0042 |
WrongPhase: The project is not in a phase this command applies to |
The project is not in a phase the requested command applies to. |
vibey status shows the project's current phase; run the command that applies to it. |
E0043 |
UndeclaredExposure: The hub was asked to bind a non-loopback address |
A non-loopback address was asked for and [hub] lan = true is not declared. |
Declare [hub] lan = true in vibey.toml to serve beyond this machine, or bind a loopback address. |
E0044 |
PairingRefused: A pairing claim or offer was refused |
The code is wrong, spent or expired, or the offer grants nothing. |
Make a fresh pairing offer on the host (vibey hub --help) and claim it before it expires. |
E0045 |
HubForbidden: The caller's scopes do not permit the action |
The device's scopes do not include what the action needs. |
Use a device whose scopes permit the action, or pair a device with the scope it needs (vibey hub --help). |
E0046 |
InvalidLedgerQuery: The ledger search cannot be run as asked |
The search was rejected before any I/O. |
Correct the search the message names. vibey ledger search --help lists the options. |
E0047 |
InvalidLedgerRecord: The JSON object is not a ledger record |
A JSON object is not a ledger record; the message names the field at fault. |
Correct the field the message names. |
E0048 |
InvalidPublicationRules: The publication rules contradict a fixed rule |
A rule set contradicts a rule that no rule set may break. |
Edit the rule set so it no longer breaks the rule the message names. |
E0049 |
RemoteCommandRefused: The command cannot be sent to the workflows |
A command line cannot be sent to the workflows as it stands. The message says why. |
Run the command here instead of with -w/--workflows, or change it as the message says. |
E0050 |
RemoteMoved: The state branch moved during the sync |
The branch moved between reading it and pushing to it. |
Run the sync again; it reads the branch afresh (vibey state --help). |
E0051 |
SchemaMismatch: The two ends have applied different migrations |
The database and the sealed copy have applied different migrations. |
Run vibey migrate on the end that is behind, then sync again. |
E0052 |
SnapshotUnreadable: The snapshot cannot be read |
A snapshot document is not one this vibey reads, or the state key does not open it. |
Check that this machine has the state key the snapshot was sealed with, and a vibey new enough to read its format (vibey state --help). |
E0053 |
StateMoved: The database changed during the sync |
The database changed between reading it and writing it. |
Run the sync again (vibey state --help). |
E0054 |
StateSyncRefused: The sync needs a decision |
The sync cannot go on without someone deciding something. It changed nothing. |
Read the message for the decision it needs, make it, and run the sync again (vibey state --help). |
E0055 |
AzCliError: The Azure CLI failed |
An az command exited with an error. The exception holds the command and the CLI's stderr. |
Read the stderr in the message, check that az is logged in to the right subscription, and retry. |
E0056 |
MutationNotAuthorized: A mutating Azure call has no matching consent |
A mutating call arrived without consent that is bound to the digest of the target scope. |
Review the plan and approve it again for this target; consent given for a different scope does not carry over. |
E0057 |
AppRoleMissing: The application role does not exist |
The application role does not exist and nothing supplied a password to create it. |
Supply a password for the application role so it can be created, then run vibey migrate. |
E0058 |
OwnerCannotCreateRole: The owner cannot create the application role |
The database owner may not create the missing application role. |
Create the application role with a database user that may, or grant the owner CREATEROLE, then run vibey migrate. |
E0059 |
RoleSeparationRefused: The application role cannot be guarded |
The application role is a superuser, may create roles, or is (or is a member of) the owner, so granting or revoking anything would change nothing. The message says which. |
Use an application role that is not a superuser, cannot create roles, and is not the owner or one of its members. |
E0060 |
SchemaNotMigrated: Migrations are pending and this role may not apply them |
The application role may not migrate, and migrations are pending. |
Run vibey migrate as the database owner. |
E0061 |
NoMigrationsFound: No migrations were found |
The migrations directory holds no .sql file, so the install is incomplete. |
Reinstall vibey; the migrations ship inside the package. |
E0062 |
InvalidMigrationLockTimeout: The migration lock wait is not a valid number of seconds |
The configured wait is not a number of seconds Postgres can honour. |
Set the migration lock timeout to a positive number of seconds. |
E0063 |
MigrationChecksumError: An applied migration's file has changed |
A migration that was already applied no longer matches the checksum recorded for it. The message names its version. |
Do not edit an applied migration. Restore the file from the release that applied it, and add a new migration for any change. |
E0064 |
MigrationInsideTransaction: Migrations were started inside a transaction |
apply() was handed a connection with a transaction already open. |
This indicates a defect in the caller; report it. |
E0065 |
MigrationLockTimeout: Another process held the migration lock |
Another process held the migration lock for longer than this one would wait. |
Wait for the other vibey migrate to finish and run it again. |
E0066 |
ProcessError: A loop process failed |
A loop process failed in an unexpected way, for example because its binary could not be started. |
Check that the engine's binary is installed and runnable; vibey doctor checks installs and auth. |
E0067 |
UnknownEventKind: An engine event has a kind the tailer does not know |
Declared by the engine tailer for an event of an unrecognised kind. No code path raises it today. |
No operator action; if you see it, report it. |
E0068 |
WorktreeError: A git command for a worktree or branch failed |
A git command vibey ran for a worktree or a branch's recorded ownership exited with an error. The exception holds the command and git's stderr. |
Read git's stderr in the message and fix the repository state it names, then retry. |
E0069 |
RepositoryExecutionRefused: The repository's git config names a program |
The repository's own config names a program that vibey's git would have run, and vibey refuses to run what a repository chose. |
Remove the setting the message names from the repository's git config, or work in a repository you trust. |
E0070 |
ProvisionError: Provisioning the agent surface failed |
A git command run while provisioning an agent surface exited with an error. The exception holds the command and its stderr. |
Read the stderr in the message, fix the repository state it names, and retry. |
E0071 |
GhStateError: GitHub refused a read or write of the state branch |
GitHub refused a request on the state branch, or answered with something that was not an object. The message carries the request and the reason. |
Check that gh is authenticated with access to the repository, then run the sync again (vibey state --help). |
E0072 |
StateKeyMissing: No usable state key on this machine |
There is no state key on this machine, or the one present cannot be used. An existing key is never replaced. |
Read the message: restore the key this machine had, or create one if none was ever made (vibey state --help). |
E0073 |
GhWorkflowsError: gh refused a dispatch or could not be run |
gh refused to dispatch the workflow, or could not be run at all. |
Check that gh is installed and authenticated, and that VIBEY_WORKFLOWS_* name a repository and branch you can dispatch to. |
E0074 |
HostClientError: The host LLM client configuration could not be updated |
The client name is unknown, or its existing configuration file is not valid JSON or TOML. |
Fix the configuration file named in the message or pass a known client name to vibey connect (vibey connect --list). |
E0075 |
HostToolError: A host MCP tool call failed argument validation |
The tool name is unknown, a required argument is missing, or an argument is outside its allowed shape. |
Pass arguments matching the tool's inputSchema returned by vibey mcp. |
E0076 |
HubGatewayError: The MCP server could not reach the local hub |
The local hub is not running and could not be started, agent.token is missing, or the hub returned a non-JSON response. |
Start the local hub with vibey hub start or vibey serve and ensure [hub] agent_scopes is not empty in vibey.toml. |