Backend: incidentController.js with create, update, resolve, and list (with updates + affected services via JOINs). Supports service_ids for linking. incident_update records created on status change.
Frontend: Incident form in AdminDashboard.vue with title, status (investigating/identified/monitoring/resolved), impact (none/minor/major/critical), update message field (on edit). Resolve action with prompt for resolution message. Incidents table with color-coded status.
Commit: bd4a46b (Phase 2 backend), 963afb5 (Phase 3 frontend)