Covers Engine 2.0.0
Events and ARGUS
Create traceable events and separate firing state from operator lifecycle.
ARGUS records events that need operator attention or later investigation. Producers include the engine, DCode, plugins, process output, and TEMPEST operation observations.
Choose an event form
| Need | Use |
|---|---|
| Standalone message, warning, or error | DCode event functions or the plugin event SDK. |
| Stable identity and condition-driven automation | A DCode event declaration. |
| Operator input | A prompt with an explicit answer type. |
| A resumable operator wait | A hold and the corresponding release workflow. |
| Historical investigation | ARGUS event queries with source/time filters. |
An event’s type or title does not itself implement equipment control. An abort event must be paired with explicit reaction logic if it should stop or change hardware.
Make events useful
Give the event a clear title, a description of the condition, and a resolution that explains the next operator action. Include related channel references and system/subsystem context. The engine records origin information such as node, task/loop, file, and line when available.
Declared event keys are stable identities; two declarations should not reuse a key for unrelated conditions. Ad hoc functions do not bind to a declaration merely because their titles match.
Firing and lifecycle
A declaration’s generated _firing channel describes its live condition or one-shot heartbeat. Its event-key channel describes presence on the active board. Acknowledgement, silencing, and resolution are separate from the measured condition.
DCode commits firing changes synchronously before recording the event payload, enabling inline on_firing: reactions. Event publication, interface refresh, and persistence remain asynchronous. See Execution and Timing.
Operators can acknowledge a firing event. Resolution waits for the maintained condition or one-shot heartbeat to stop. A later trigger can reopen the same keyed event.
Query and act
response = client.operation("argus/get-active-events", {
"limit": 100,
"offset": 0,
})
response.raise_for_error()
for event in response.payload["events"]:
print(event.get("event_id"), event.get("title"), event.get("status"))Historical queries can filter by node, system/subsystem, type, status, channel, text, session, and time. Event timestamps with an _ns suffix are epoch nanoseconds. Do not confuse them with detached-job timestamps, which use milliseconds.
Use the generated Events operation reference for query fields and lifecycle actions. ARGUS Events in the interface explains the board, details, prompts, and holds.