Error codes¶
Every problem is reported as an issue with a code, a location in the config, a reason and a suggested fix, and several issues are reported together when possible:
[E_TARGET_REGULATED] interventions[0]: 'TIC-101.cv' is the regulated variable of loop TIC-101; nobody can set it directly. Fix: Change its reference instead: target 'TIC-101.sp'.
In Python, catch homeostat.HomeostatError (or ScenarioError, CompileError, SimulationError); its issues list holds the issues and to_dicts() gives them as dictionaries.
| Code | Stage | Meaning |
|---|---|---|
E_YAML |
loading | The file is not valid YAML. |
E_FILE |
loading | The scenario file does not exist. |
E_SCHEMA |
validation | A key is unknown, missing or has the wrong type or value. |
E_BAD_DISTRIBUTION |
drawing | A distribution is malformed (for example a non-positive standard deviation). |
E_BAD_GENERATOR |
drawing | A plan or fault generator cannot make a plan (a missing key, a non-positive campaign or rate, invalid weights). |
E_DRAW_REJECTED |
drawing | Every draw of a plant failed validation; narrow the distributions. |
E_UNKNOWN_LIBRARY |
building | No domain library with that name is installed. |
E_LIBRARY_VERSION |
building | The pinned library version is not the installed one, or is not an integer. |
E_UNKNOWN_TEMPLATE |
building | The library has no template with that name. |
E_UNKNOWN_PARAM |
building | A template has no parameter with that name. |
E_BAD_PARAM |
building | A parameter value is invalid: the wrong type, outside its range, or not finite. |
E_UNKNOWN_OP |
building | There is no core operator with that name. |
E_UNKNOWN_PORT |
building | An operator has no input port with that name. |
E_DUPLICATE_OPERATOR |
building | Two operators have the same name. |
E_DUPLICATE_WRITER |
building | Two operators write the same signal; every signal has exactly one writer. |
E_UNKNOWN_FAULT |
building | The library has no fault with that name. |
E_FAULT_NOT_APPLICABLE |
building | The fault does not apply to the unit's template. |
E_UNKNOWN_DEGRADATION |
building | The library has no degradation with that name. |
E_DEGRADATION_NOT_APPLICABLE |
building | The degradation does not apply to the unit's template. |
E_UNKNOWN_TASK |
building | The library has no maintenance task with that name. |
E_TASK_NOT_APPLICABLE |
building | The task does not apply to the unit, for example cleaning a unit without fouling. |
E_UNKNOWN_REGIME |
building | A plan names a regime that is not defined under regimes. |
E_FAMILY |
building | A family setting is invalid, or plants in one batch disagree (for example on their starting regimes). |
E_BAD_STEP |
compiling | The base step dt is not positive. |
E_UNKNOWN_SIGNAL |
compiling | An input names a signal that nothing writes. |
E_MISSING_INPUT |
compiling | A required input of an operator is not connected. |
E_ALGEBRAIC_LOOP |
compiling | A cycle of signals has no operator without direct feedthrough; the error lists the cycle. |
E_BAD_FEEDBACK_INPUT |
compiling | A feedback operator reads a true value or an intermediate observation stage instead of a final measured signal. |
E_BAD_PERIOD |
compiling | An update period or phase is not a whole number of steps, not finite, or a phase is not smaller than its period. |
E_BAD_LANES |
compiling | Per-lane values have the wrong count, are out of range, or target a parameter that must be equal on every lane. |
E_BAD_MODULATION |
compiling | A parameter modulation is neither scale nor shift. |
E_NAME_COLLISION |
compiling | A name is both an operator and a parameter path. |
E_PARAM_NOT_PROMOTABLE |
compiling | A structural parameter (a buffer size, a dead time, a list) cannot change during a run. |
E_UNSTABLE_SOURCE |
compiling | AR coefficients do not give a stationary process. |
E_UNKNOWN_TARGET |
events | An event targets a signal or parameter that does not exist; the fix suggests the closest name. |
E_TARGET_REGULATED |
events | An event targets a loop's regulated variable; change its setpoint instead. |
E_TARGET_CONTROLLER_OUTPUT |
events | An event targets a controller output or the valve it drives; use manual mode and man_out instead. |
E_TARGET_NOT_SCHEDULABLE |
events | An event targets a signal written by a dynamic operator; target one of its parameters instead. |
E_TARGET_NOT_PROMOTED |
events | An event targets a parameter that was not promoted when the graph was compiled. |
E_BAD_EVENT |
events | An event is invalid: a bad action or profile, a mode that is not a step, a value outside the parameter's range, or no value to shift or scale yet. |
E_BAD_INIT |
running | init is not steady, none or {burn_in: ...}. |
E_INIT_NO_STEADY_STATE |
running | The plant did not settle before the step limit; the error names the states still moving. |
E_ALREADY_STARTED |
running | The engine was initialized or run already. |
E_BAD_RUN |
running | run(until) is not finite, not on the step grid, or before the current time. |
E_BAD_RECORDING |
running | The recording interval is not a positive whole number of steps. |
E_DELAY_EXCEEDED |
running | A variable transport delay needed longer than its max_delay; raise max_delay (or the template's maximum transit time). |
E_LABELER |
labelling | A labeler cannot label this scenario, for example visibility on a multi-lane scenario. |