A UniFi Network update (11.0.97 to 11.0.99) dropped the UDM's WAN for a few minutes. Smart Power then power-cycled the modem, and Gandalf opened two tickets for one event: "WAN modem unreachable" (P2) and "Modem auto power-cycled after internet loss" (P3). Both were accurate, but Gandalf had no way to know about the update. The UniFi log only records the update once it has finished, 10 minutes after the WAN dropped.
What changes
One ticket per incident
Modem and WAN reports from one check cycle now open a single ticket, led by the most urgent report. The others go under Also seen in this incident.
A report that arrives while the modem has an open alert, or within 30 minutes of one ending, becomes a comment on that alert's ticket instead of a new ticket.
If the comment can't be posted, the report gets its own ticket as before, so nothing is lost.
Replayed against last night's events: 1 ticket instead of 2.
UniFi updates
Gandalf now reads NETWORK_UPDATED and FIRMWARE_UPDATED_V2 from the system log. Other app names that log *_UPDATED are picked up too; *_UPDATE_AVAILABLE and setting changes are not.
On an update, modem and WAN tickets first seen from 20 minutes before it to 15 minutes after get a comment naming the update as the likely cause.
New modem and WAN tickets are held for 15 minutes after an update. Anything still failing after that gets a ticket as usual.
Maintenance button
Admins get a Maintenance button in the header, which starts a global suppression for 30 min, 1, 2 or 4 hours.
While it runs, every page shows a banner saying when tickets resume, with End now for admins.
Alerts are still recorded during maintenance. Anything still failing when it ends gets a ticket.
Also
The footer's em dash is now a pipe.
Screenshots
Maintenance modal:
Banner while maintenance is on:
Phone, light theme:
Testing
399 tests pass, 21 of them new. They cover:
last night's sequence opening one ticket led by the P2 alert;
a recent incident getting a comment instead of a new ticket;
the fallback when that comment fails;
the update hold, and the update comment window;
log key matching and version parsing;
the banner on every page, viewers seeing no buttons, and a database error showing no banner.
get_incident_ticket and get_ticket_ids_between were checked against MariaDB.
The maintenance flow (start, banner on two pages, End now) was run in a browser in dark and light themes at desktop and phone widths. No horizontal scroll.
flake8, bandit and eslint are clean, with no new warnings.
## Why
A UniFi Network update (11.0.97 to 11.0.99) dropped the UDM's WAN for a few minutes. Smart Power then power-cycled the modem, and Gandalf opened two tickets for one event: "WAN modem unreachable" (P2) and "Modem auto power-cycled after internet loss" (P3). Both were accurate, but Gandalf had no way to know about the update. The UniFi log only records the update once it has finished, 10 minutes after the WAN dropped.
## What changes
**One ticket per incident**
- Modem and WAN reports from one check cycle now open a single ticket, led by the most urgent report. The others go under **Also seen in this incident**.
- A report that arrives while the modem has an open alert, or within 30 minutes of one ending, becomes a comment on that alert's ticket instead of a new ticket.
- If the comment can't be posted, the report gets its own ticket as before, so nothing is lost.
- Replayed against last night's events: 1 ticket instead of 2.
**UniFi updates**
- Gandalf now reads `NETWORK_UPDATED` and `FIRMWARE_UPDATED_V2` from the system log. Other app names that log `*_UPDATED` are picked up too; `*_UPDATE_AVAILABLE` and setting changes are not.
- On an update, modem and WAN tickets first seen from 20 minutes before it to 15 minutes after get a comment naming the update as the likely cause.
- New modem and WAN tickets are held for 15 minutes after an update. Anything still failing after that gets a ticket as usual.
**Maintenance button**
- Admins get a **Maintenance** button in the header, which starts a global suppression for 30 min, 1, 2 or 4 hours.
- While it runs, every page shows a banner saying when tickets resume, with **End now** for admins.
- Alerts are still recorded during maintenance. Anything still failing when it ends gets a ticket.
**Also**
- The footer's em dash is now a pipe.
## Screenshots
Maintenance modal:

Banner while maintenance is on:

Phone, light theme:

## Testing
- 399 tests pass, 21 of them new. They cover:
- last night's sequence opening one ticket led by the P2 alert;
- a recent incident getting a comment instead of a new ticket;
- the fallback when that comment fails;
- the update hold, and the update comment window;
- log key matching and version parsing;
- the banner on every page, viewers seeing no buttons, and a database error showing no banner.
- `get_incident_ticket` and `get_ticket_ids_between` were checked against MariaDB.
- The maintenance flow (start, banner on two pages, End now) was run in a browser in dark and light themes at desktop and phone widths. No horizontal scroll.
- flake8, bandit and eslint are clean, with no new warnings.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
A UniFi Network update on 2026-11-12 dropped the UDM's WAN, Smart Power
power-cycled the modem, and Gandalf opened two tickets for the one event.
- Modem and WAN reports from one check cycle open a single ticket, led by
the most urgent, with the rest listed under "Also seen in this incident".
A report while the modem has an open alert, or one that ended under 30
minutes ago, becomes a comment on that ticket instead.
- UniFi update log entries (NETWORK_UPDATED, FIRMWARE_UPDATED_V2 and the
like) add a note to modem/WAN tickets from 20 minutes before the update
to 15 after, and hold new modem/WAN tickets for 15 minutes.
- A Maintenance button for admins starts a global suppression for 30 min
to 4 hours, with a banner on every page and End now.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jared
scheduled this pull request to auto merge when all checks succeed 2026-11-12 13:46:27 -05:00
jared
merged commit 7b80633088 into main2026-11-12 13:46:34 -05:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why
A UniFi Network update (11.0.97 to 11.0.99) dropped the UDM's WAN for a few minutes. Smart Power then power-cycled the modem, and Gandalf opened two tickets for one event: "WAN modem unreachable" (P2) and "Modem auto power-cycled after internet loss" (P3). Both were accurate, but Gandalf had no way to know about the update. The UniFi log only records the update once it has finished, 10 minutes after the WAN dropped.
What changes
One ticket per incident
UniFi updates
NETWORK_UPDATEDandFIRMWARE_UPDATED_V2from the system log. Other app names that log*_UPDATEDare picked up too;*_UPDATE_AVAILABLEand setting changes are not.Maintenance button
Also
Screenshots
Maintenance modal:

Banner while maintenance is on:

Phone, light theme:

Testing
get_incident_ticketandget_ticket_ids_betweenwere checked against MariaDB.🤖 Generated with Claude Code