Docs
/
Models
/

Model Configuration Errors

Model Configuration Errors

Koios checks a model's configuration every time it loads one, and refuses to run a model whose bindings would assemble the wrong input vector. Rather than inferring on a tensor that is silently wrong — a dropped signal, two inputs collapsed into one column, a window that does not match the one the model was trained on — the model is stopped before its first scan and the reason is recorded on the model.

This is a deliberate fail-closed design: a model producing quietly wrong predictions is worse than a model that does not run.

Fail-Closed, Not Failed

A configuration failure is not an inference failure, and it does not behave like one.

BehaviorWhat happens
StatusThe stored status is Stopped, not Failed. Its error code is 6 (Bindings Invalid State) and its error message is Model configuration is invalid
Error detailThe specific reason, naming the binding, order, or number at fault
BindingsEvery input and output binding is written Stopped with no error of its own — the reason lives only at the model level
SchedulingThe model is never queued. A model in a scan group is skipped as a member; the group and its other models keep running normally
StartEnabling the model records it as enabled but does not start it. It never scans, and the error stays on screen
RecoveryNothing to acknowledge. The next load that validates clears the error and the model resumes

Where the Reason Appears

LocationWhat you see
Overview tabA red strip below the status hero carrying Model configuration is invalid followed by the detail. The strip follows the error, not the status, so it appears even though the model is not Failed. Click it to copy the full text
Parameters tabError Code, Error Message, and Error Detail in the Live Data section
Logs tabThe model log records the rejection at Error level when the configuration loads, and the recovery at Info level
Model listA grey spinning icon (Starting) while the model is enabled, a grey Stopped icon once it is disabled. Hover it for the message
Bindings tabEvery card Stopped, no per-binding error
ERROR  Configuration invalid, model will not scan: Input binding_order values
       must be unique; got [1, 1, 3]
INFO   Configuration is valid again, clearing config error

When the Check Runs

The check runs on every path that loads or reloads a model, which is also every path that could fix one.

EventRe-runs the check
Predict Engine startsYes
Saving the model's Configuration tabYes
Saving a bindingYes
Activating a model fileYes
Editing a bound tag's configurationYes
Turning the model off and onNo

Duplicate Input Binding Order

The most common reason, and the only one that applies to every model rather than just structured input models.

The detail reads Input binding_order values must be unique, followed by the orders it found — for example [1, 1, 3].

Input columns are keyed by binding order when the input vector is assembled, so two inputs sharing an order collapse into one column: one signal is written twice and the other never reaches the model. Duplicates were previously tolerated and silently merged, which is why this most often shows up as a model that ran for months and stopped immediately after an update.

Binding order is assigned by Koios from the model file's input count, not chosen by hand, and Koios now rejects a save or an import that would give two inputs of the same model the same order. A duplicate you find today is stored configuration that predates that rule.

To renumber:

  1. Export the model's bindings from the model list. See Importing & Exporting Models.
  2. In the exported CSV, give each input row a distinct binding_order in a dense 1..N run, leaving the id column untouched.
  3. Import the corrected file.

Binding Count Doesn't Match the File

For a model with no structured input space, the detail reads Model expects N input feature(s) but M input binding(s) are configured.

Koios reconciles the binding set against the file's input count when you activate a file, so this appears when the binding set has drifted from the width the graph actually accepts — usually after a file with a different architecture was put in place. Re-activate the model's intended file on the Files tab; activation adds or removes input bindings to match, preserving the tag assignments on the bindings it keeps. See Managing Model Files.

Structured Input Space Mismatches

A model whose active file declares a structured input space is checked much more strictly, because each input carries its own window length and sample rate and those windows have to tile the flat vector exactly.

Error detail saysWhat it meansFix
Structured input spaces do not support in-memory history yetMemory Only is on. Per-input in-memory buffers are not available in this release, and nothing blocks saving the combinationTurn Memory Only off on the Configuration tab
Input binding_order must be dense 1..NThe orders have a gap. Every input from 1 to N must exist exactly onceRenumber as described above
Binding/leaf count mismatchThe model has a different number of input bindings than the space has inputsRe-activate the file so the binding set is rebuilt from it
Input N window length is x but the observation space declares yThat input's window disagrees with the file. The per-input windows are declared by the file, not derived from the graphRe-activate the file, or re-export the model with the window you want
Per-leaf window lengths sum to x but the observation-space flatdim is yThe same mismatch seen in aggregate: the windows do not tile the flat vectorAs above
Observation flatdim x does not match the graph input feature dim yThe space describes a wider or narrower vector than the graph acceptsRe-export the policy so the flattened space matches the graph
Input binding(s) N have a non-positive leaf sample rate or window lengthAn input resolves to zero samples or a zero cadenceSet a positive Sample Rate on that binding's Sampling section
Structured models require a rank-2 (flat) graph inputThe file's graph is a time-series shape, which cannot be carved into per-input windowsRe-export the policy with a flattened observation space
Unsupported observation-space schema_versionThe file was written by a newer library than this release readsRe-export with a supported version of koios-model-utils

Clearing the Error

  1. Read the Error Detail on the Overview strip or the Parameters tab. It names the input, order, or number at fault.
  2. Make the correcting change — a binding, the Configuration tab, or activating a file.
  3. Watch the model's status. Saving is itself the reload, so the error clears within a second or two and the model returns to Stopped with no error.
  4. If the model is enabled and standalone, it is queued again immediately. A model in a scan group rejoins on the group's next scan.
  5. The first cycle after that decides Running or Failed on its own merits — a model that clears its configuration error can still fail on a disabled tag or a short history window. See A Model or Binding Isn't Running.

If the detail is unchanged after your edit, confirm the change was actually saved: a binding drawer discards its edits on Cancel or on closing without saving.

What's Next