Bindings and reach
Some tags compute from other tags. A query tag has Parameters, a script tag has inputs. A binding says which tag fills one of them.
An example: a query counts good parts from a point in time. Its parameter from is bound to
Shift.StartedAt. When the value there changes, the query recomputes.
Creating a binding
Section titled “Creating a binding”The Parameters section lists every parameter with its state. With none bound, the page says No bound parameters.
- Bind to a tag opens the Pick a source tag chooser.
- After saving, the parameter reads bound to {{path}}.
- Change… swaps the source, Unbind removes it.
A binding is stored as an id, not as a name: A binding is stored as the source tag stable id - renaming the source does not break it.
A parameter that is neither bound nor supplied from outside is not knowable. The tag’s value then stands at Uncertain — not at zero.
Circles are refused
Section titled “Circles are refused”You cannot bind a tag to something that already depends on it. TrakState checks this on save and refuses: {{path}} already depends on this tag. That keeps the web directed, and nothing can recompute in a circle.
There is also a depth limit. When it is reached, the value comes back Unusable rather than running on.
What happens when a value changes
Section titled “What happens when a value changes”When a tag changes, TrakState works out every tag that depends on it and recomputes them in the right order: inputs first, then what is derived from them. Open screens are told and refetch the affected values. If a notification is lost, the connection catches up on reconnect.
A timer tag exists for exactly this: everything bound to it recomputes on each tick.
Reach says how widely a value is shared. It is a result, not an input field:
| Reach | Means |
|---|---|
| shared | across the whole tenant — the default |
| personal | for one user |
| single view | for one window |
The narrowest bound input decides. A value can only be shared as widely as its narrowest input allows. Where it becomes narrower than shared, the interface names the reason: derived from binding of {{param}} to {{source}}.
Who else points at this tag
Section titled “Who else points at this tag”The Used by tab answers two different questions:
- other tags that bind to this one. With none, it says Nothing reads this yet. Deleting it breaks nothing today.
- masks and boards from plugins, split into Written by and Read by. A capture mask is not a tag, so it does not appear in the binding web — but it has to be visible before you rename or delete the tag.
When you delete a tag, the prompt names how many tags bind to it: Delete “{{path}}”? {{count}} tag(s) bind to this - this cannot be undone.