Africa Watch — Savvy Ventures Limited · Last updated:
| Severity | Description | Detect SLA | Contain SLA | Examples |
|---|---|---|---|---|
| P0 Critical | Platform down, auth breach, mass data exposure, confirmed misinfo causing field harm | <15 min | <1 hour | JWT secret leaked, DB exposed publicly, XSS exfiltrating tokens |
| P1 High | Significant feed contamination, auth bypass, critical route returning wrong data | <1 hour | <4 hours | Chad-person articles in live feed, admin route accessible to free user |
| P2 Medium | Degraded accuracy, partial service failure, elevated false-positive rate | <4 hours | <24 hours | Social search returning >30% irrelevant results, LLM analysis timing out |
| P3 Low | Minor UI defects, non-critical metric drift, cosmetic issues | <24 hours | <72 hours | Confidence badge missing on some items, timestamp formatting wrong |
| Incident Type | Responsible | Accountable | Consulted | Informed |
|---|---|---|---|---|
| Data integrity / feed contamination | Backend Engineer | Engineering Lead | Data/Intel Lead | All users via status page |
| Auth / access control breach | Security Lead | CISO / Founder | Backend Engineer | Affected users, legal if data exposed |
| Misinfo injection / LLM manipulation | Data/Intel Lead | Engineering Lead | Security Lead | Field operators using affected country data |
| Platform outage (P0) | DevOps/SRE | Engineering Lead | All engineers | All users, management |
Live Incident Feed or social-search fallback showing sports/entertainment/person-name content for an African country. Example: MLB articles appearing for Chad, music articles for Mali.
/health and check /social-search?q=Chad&county=Chad meta for dropped_geo_irrelevant counter. If counter is 0 and feed has bad content, filter is not firing.AMBIGUOUS_COUNTRY_NAMES Set includes the affected country. Check if isGeoRelevant and topicScore are being called in the affected code path.AMBIGUOUS_COUNTRY_NAMES if missing. Verify fix covers all three paths: monitor ingestion, /africa/events, /social-search.curl "/social-search?q=Chad Africa&county=Chad" and confirm meta shows dropped_geo_irrelevant > 0 and results are geopolitical.Unauthorized access to admin routes, JWT tokens accepted after revocation, API key bypass, privilege escalation from free-tier to admin.
/audit for unexpected admin actions. Check /admin/route-matrix to confirm all admin routes require requireRole('admin').JWT_SECRET in .env and restart server. This invalidates ALL active sessions (all users must re-login).JWT_SECRET (32+ bytes), new WEBHOOK_SIGNING_KEY. Update /opt/africa-watch/.env. Restart: pm2 restart africa-watch.SELECT * FROM users WHERE role='admin' — verify no unexpected admin accounts.LLM analysis output contains fabricated events, contradicts known facts, or shows signs of prompt injection (unusual instruction-following tone, policy-violating content, off-topic analysis).
buildPrompt() in llm-analysis.js.sanitizePromptInput() was applied. Look for injection patterns: "Ignore previous", "System:", "You are now".BLOCKED_DOMAINS in /social-search. Clear _explainCache in memory (restart server).INJECTION_PATTERN regex in security-middleware.js to catch new pattern.| Date | Playbook | Participants | Outcome | Actions Raised |
|---|---|---|---|---|