substation_event_analysis
Analyze substation sequence-of-events to classify protection response as selective trip, backup operation, or breaker failure.
Instructions
[READ][risk=low] Analyse a substation Sequence-of-Events for protection selectivity.
Pure structural analysis over INJECTED events (no live protocol I/O, no
endpoint): given relay pickups/trips, breaker open/close, lockouts and bus
undervoltage with ISO-8601 timestamps, decide what tripped and whether
protection coordinated — a selective trip (one zone contained), a
non-selective backup operation (wider outage), or a breaker failure.
Monitor-only, advisory, cite-first (every claim ties to a timestamped event).
Args:
events: SOE list of {ref, timestamp (ISO-8601), type, label?}; ``type``
is one of protection_pickup / protection_trip / breaker_open /
breaker_close / lockout / bus_undervoltage (a free-text ``label`` is
keyword-matched when ``type`` is absent or unknown). ``ref`` is the
point name / IOA.
breaker_fail_window_s: Breaker-failure timer — the tripped breaker's own
open must be seen within this many seconds (default 0.25).
backup_margin_s: Backup coordination margin — a breaker opening later
than this past the first protection event is treated as backup
operation (default 0.5).
Returns dict: {events_analyzed, ignored, verdict, first_protection,
first_breaker_open, breakers_opened, breaker_open_count, affected_refs,
timeline, coordination{status, detail}, note}. ``verdict`` is one of
selective_trip / backup_operation / breaker_failure / insufficient.
Example: substation_event_analysis(events=[
{"ref": "R1", "type": "protection_trip", "timestamp": "2026-07-12T10:00:00Z"},
{"ref": "BK1", "type": "breaker_open", "timestamp": "2026-07-12T10:00:00.08Z"}]).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| backup_margin_s | No | ||
| breaker_fail_window_s | No |