In-memory dedupe resets on pod restart; recovery then no-ops and leaves stale open tickets. UP now falls back to a GLPI search for an unsolved ticket for that monitor. Ticket: https://projects.knownelement.com/issues/824
golang:alpine lacks node (actions/checkout 127). GLPI 11 rejects the legacy /followup input shape -> item-endpoint first, legacy fallback; solve no longer skipped when followup fails. Ticket: https://projects.knownelement.com/issues/824
Go service: Kuma webhook -> GLPI REST (two-step session) ticket per monitor down-event, dedupe while open, recovery followup + solve on up. Distroless image; CI = gofmt/vet/build/secret-scan. Ticket: https://projects.knownelement.com/issues/824