Triggers

The trigger editor: identity and location, the Schedule card with Kind, Interval and Action, the Scheduling rail, the 100 ms scheduler with its fixed delay and skipped ticks, the commands, and what a trigger cannot do.

View as Markdown

A trigger binds a cause to one action. The one cause kind today is Interval: the scheduler fires the bound action on a fixed period. Select a trigger under the Triggers section of the Logic column (or create one with New… > New trigger) to open its editor; reading needs View logic, editing Configure logic. There is no operate verb on a trigger: it fires by itself, and a manual run is the action's own Run.

The header shows the trigger mark, the name, the line "A schedule that runs one action on its own, at the interval you set." and a Disabled pill while it is off. The form column holds IDENTITY and SCHEDULE; the rail holds SCHEDULING.

Identity

Field What it is Values / default Effect
Name The display name; the runs the trigger fires are journaled under it. Free text; a new trigger is TriggerN; a blank name saves as Trigger. Autosaves per keystroke. Triggers are referenced by identity; renaming affects nothing else.
Location line Where the trigger is filed: Triggers / <folder> / <name>. Read only. A trigger has no address. Change the folder with Move to in the tree.
Description (optional) Free text. Empty. None.

Schedule

Field What it is Values / default Effect
Kind The cause. Interval, the only kind. None today.
Interval (ms) The firing period. An integer of at least 100 (the scheduler's scan resolution); 1000 by default. A smaller, negative or unparseable entry keeps the stored interval and shows "Interval must be an integer of at least 100 ms (the scheduler's resolution)." A changed interval resets the clock: the next tick is due one full new interval after the next scan.
Action The action the trigger fires. (none) or any action of the station; (none) by default. A trigger without an action idles and says "Bind an action. The trigger idles until then."; one whose action was deleted says "The bound action no longer exists. Pick another."; one whose action is disabled says "The bound action 'X' is disabled, so the trigger idles."

Every field autosaves; the validation message re-evaluates every half second under the card.

Scheduling

The scheduler scans every 100 ms and fires what is due onto the logic queue:

  • A trigger just created, enabled, or edited in its interval, kind or action is seeded on the next scan: its first tick is due one interval from then.
  • After a fire, the next tick is due one full interval from now (fixed delay): there is never a catch-up burst after a busy stretch.
  • A tick that comes due while that trigger's previous run is still queued or executing is skipped, not queued; the skip is counted and the next tick rescheduled. No backlog can build up behind a slow action.
  • A trigger whose action is missing or disabled idles: it is rescheduled without firing, and idling never counts as a skip.
  • The run is journaled under the trigger's name and its outcome lands on the action's LAST RUN rail. A disabled trigger never fires.

The SCHEDULING rail shows the live diagnostics: Last fired, Next due (a dash until the scheduler has seeded the clock), Skipped ticks (a count kept in memory, back to 0 after a restart), and the note "A tick that arrives while the previous run is still pending is skipped, not queued (no backlog). Only a failed run reaches the Events console, under this trigger's name."

The Triggers root panel lists every trigger with its state in the Value column: "Every 1000 ms · last <when> · skips N", or "Disabled".

Commands

Command What it does Greyed when Not drawn when
Enable / Disable Flips Enabled; enabling re-seeds the clock. Station locked or read-only. Role lacks Configure logic.
Copy Duplicates the trigger (same action, same interval) to the Triggers root under a free name and opens it; the copy starts unscheduled. Station locked or read-only. Role lacks Configure logic.
Delete trigger Asks "Delete 'X'? This removes the trigger. This cannot be undone." Station locked or read-only. Role lacks Configure logic.

Deleting the bound action leaves the trigger unbound rather than deleting it with the action.

What triggers do not do

There is no other cause kind: nothing fires on a value change, a condition, a time of day or at startup. A trigger fires one action, never several, and never fires by hand: run the action itself. The scheduler stops with the runtime, and a fire refused as "Runtime stopped" while the station closes is dropped quietly.