Skip to content

Error messages

The messages TrakState shows when something does not work — and what the next step is in each case.

Two things first:

  • A refusal is not a crash. Where one of these messages appears, the system did its work and made a decision. Nothing happened halfway.
  • Some messages come from the server and are in English, whatever language the interface is set to. They are listed below with their original text.

Every refusal carries exactly one reason from a fixed list. The server’s raw text is never shown — only one of these sentences.

Message What to do
The uploaded file is not a valid zip archive. The wrong file, or it was damaged in transit.
The package exceeds the maximum allowed size. The limit is 50 MB packed.
The archive exceeds a size, entry-count, or compression limit. 200 MB unpacked, 50 MB per file, 2000 entries. Usually it is the entry count.
The archive contains an entry that cannot be unpacked safely. The package is built wrongly. Go back to whoever built it.
The package layout is invalid: it must have exactly one manifest.json at its root, a dist/ folder, and the entry file the manifest names. A build fault in the package.
The package manifest is invalid, or it claims a reserved identity or right. The package asks for something only the platform may have.
The package requires a platform version this host does not provide. Update TrakState first, then the plugin.
Message What to do
This package contains backend code and needs an operator signature. A package with server-side code must be signed. Attach the .sig, or use a .tspkg.
The signature does not match this package or the operator key. Package and signature do not belong together, or the key is not registered. Obtain both again.
The backend code in this package is signed with your own key … so the whole package was rejected. Your signature is fine. This instance does not yet run backend code from self-signed packages. A frontend-only package signed with your key installs normally.

If the signature of an already installed version no longer verifies, the plugin list says: not serviceable — the signature no longer verifies against the current operator key. The plugin stays visible; its backend does not run.

Message What to do
A plugin with this id is already installed or built into this host. Update instead of installing, or remove the other one first.
The package describes a table that already exists or belongs to another plugin. Two packages claim the same namespace.
The package storage is full; no further package can be installed right now. Remove a package you no longer need.
Another install is already running. Try again in a moment. Only one lifecycle operation runs per instance at a time.
This instance cannot install packages: it has either no package store or no database connection for plugin tables … ask your operator. This is assigned when the instance is provisioned. The instance stays fully usable otherwise.
You do not have the right to install plugins. It takes plugin:manage, normally a tenant admin.
Message What to do
No active package is installed for this id. There is nothing to update.
The new version is not higher than the active one. Re-upload the package with a higher version number. There are no downgrades. The same applies when the active version stopped verifying: bump the patch version and sign again.
At least one change is not permitted. This conversion cannot be expressed safely.
The existing data does not fit this change. The plan names the affected rows. Usually only a matching version of the package helps.
This operation would destroy data; please confirm the plan shown. Read the count and confirm it explicitly. From the catalogue’s one-click update there is no plan to confirm: use Upload package… with the package file, which shows it. Do not remove the plugin to get around it.
The plan has changed; please review the updated view. Something moved between looking and confirming. Look again.
The export of this operation exceeds the allowed size. You can continue without an export. The data is then unrecoverably gone — that is what the second confirmation is for.
The stored manifest of this version is no longer readable; an update is not possible … remove the plugin and reinstall it. The data export on removal still runs as usual.
The updated backend part could not be started. The update was not applied; the current version stays active.
Two installed plugins claim the same table namespace … Resolve one of the two identities. Removing either one leaves the tables untouched.
Message Means
The stored manifest is invalid. The package is no longer usable as it is.
This plugin requires a platform version this host does not provide. After a TrakState update it can run again.
This plugin’s identity is not unique … Two packages overlap in their namespace.
System plugins are part of the application and cannot be switched off. Not a fault — the answer to the attempt.
Origin unknown Where the package came from can no longer be established. That is a different statement from Unsigned.

Message What to do
This is not a readable Ed25519 public key. Check that you pasted the PUBLIC key (not the private one) as PEM. public.pem, not private.pem.
The label and the key field cannot be empty. Fill in both fields.
You have already registered this key. —
You do not have the right to manage signing keys. —
This key no longer exists. It has been removed in the meantime.

When revoking: Packages already signed with “…” will no longer verify after this. That applies retroactively, not only to new ones.


Message What is happening
Uncertain (reliability) The value cannot be determined right now. Not a crash — a state.
Unusable There is a value, but it cannot be used.
No access You lack the right to this value.
Value unavailable The display could not load the value.
No connector chosen yet - the tag exists and its value stays uncertain. Not a fault, but the honest state of a tag that is not fully set up yet.
No connection for this connector yet. Set one up under Settings → Connections. The exact next step is in the message.
this tag writes to a machine, but no connector is running here The tag writes outward, but no connector for it runs on this instance. A write outward must arrive or fail — it is never quietly recorded instead.
tag of kind '…' is not writable This tag kind takes no written value.
this tag has no setter: add on_write(value) to its script A script tag becomes writable only once it has on_write(value).
no tag at '…' / tag not found The path points at nothing — usually after a rename somewhere that carries the path instead of the id.
… already depends on this tag. The binding would close a cycle and is refused.
Could not save your change. The write did not get through.
A tag of this kind cannot have a history: its value is produced fresh on every read, nothing is stored. Not a fault — a property of the tag kind.

When writing to a machine, TrakState keeps two outcomes clearly apart: Sent - the machine acknowledged it. versus Recorded here. Nothing was sent to a machine.


Message What to do
The query did not run The database’s own text sits underneath. The dry run is where this is meant to surface.
The query ran. This selection has nothing in it. Not a fault. The query is fine; the period or the filter is empty.
This query reads N field(s) that no longer exist: … They are shown by their internal name because there is no other one left. The data model changed under the query.
showing the first N The preview is capped, not the result.

Message What to do
The script failed. The line number is next to it.
No value behind: … - these went in empty. An input is unbound or delivers nothing.
Pick at least one tag, or this sits there looking configured and never fires. A tag-change trigger with no tags does nothing.
system.tag.write() only takes effect inside on_write(value) in a script tag. Outside it, the call does nothing.
AttributeError: no '…' here - this namespace has: … A typo in the namespace. The message names what is really there: system.tag.raed(...) answers with read, write.
NameError: name 'read_tag' is not defined The former names read_tag()/write_tag() are gone. Replace them with system.tag.read() and system.tag.write().
Nothing runs by itself on this instance - there is no trigger loop here. Scripts can be edited and run by hand. Not a fault, but a property of this installation.
No script here goes by that name. That can be perfectly right … An import TrakState does not know. A plant may have Python packages we do not know.

Message What to do
N record(s) have no value - set a default first. A field can only be made required once no row is left without a value.
Delete field “…”? N record(s) carry a value - this cannot be undone. The count comes before the decision, not after.
Only a tenant admin can change the data model. —
This record type has no fields yet. Create fields first, then capture.
Record types could not be loaded. The connection to the server.

If a plugin page shows nothing, it is almost always one of three situations: the plugin is installed but not enabled; its version is not compatible with this TrakState version; or the package brings no frontend at all. The plugin list under Settings → Plugins says which it is in all three cases.