FCC Incident Response¶
This page exists because FCC is software, software fails, and someone will be paged when it does. The goal: a small, memorable set of commands that converts an incident from "what is broken?" into "here is the failure and the blast radius."
The Three First-Responder Commands¶
Memorise these. Every FCC incident response starts with at least one of them.
# 1. End-to-end health snapshot (shipped in v1.3.8)
fcc admin health
# 2. Strict persona / quality-gate audit
fcc audit --strict
# 3. Kubernetes/Compose service state
kubectl -n fcc get pods # K8s
docker compose ps # Compose
fcc admin health runs the same check battery the readiness probe uses, but with human-readable output: AI provider connectivity, event bus buffer depth, OTel exporter status, and persona / scenario loadability. Use it as the first diagnostic.
fcc audit --strict runs the 58-gate quality registry (see src/fcc/data/governance/quality_gates_extended.yaml) plus R.I.S.C.E.A.R. completeness. Use it when a customer reports "workflow output is wrong" — it catches drift between your persona YAML and the shipped specifications.
Incident Triage Flowchart¶
flowchart TD
Start([Page received]) --> Health{`fcc admin health`<br/>green?}
Health -->|No| Services{Which service<br/>is red?}
Health -->|Yes| Traffic{Traffic error<br/>rate elevated?}
Services -->|backend| BRun[Backend runbook]
Services -->|frontend| FRun[Frontend runbook]
Services -->|streamlit| SRun[Streamlit runbook]
Services -->|jupyter| JRun[Jupyter runbook]
Services -->|otel| ORun[Observability runbook]
Traffic -->|Yes| Provider{`fcc.provider.failure`<br/>events?}
Traffic -->|No| Symptoms{Customer<br/>report type?}
Provider -->|Yes| PRun[Provider runbook]
Provider -->|No| ARun[Audit runbook]
Symptoms -->|wrong output| Audit[`fcc audit --strict`]
Symptoms -->|slow| Perf[Latency runbook]
Symptoms -->|missing persona| PR[Persona runbook]
classDef start fill:#e3f2fd,stroke:#0d47a1;
classDef check fill:#fff9c4,stroke:#f57f17;
classDef run fill:#c8e6c9,stroke:#2e7d32;
class Start start;
class Health,Services,Traffic,Provider,Symptoms check;
class BRun,FRun,SRun,JRun,ORun,PRun,ARun,Audit,Perf,PR run;
Runbook Library¶
Runbook 1 — Backend Unhealthy¶
Symptom: /health returns 503 or connection refused; kubectl get pods shows fcc-backend not Ready.
Checks:
kubectl -n fcc logs fcc-backend -p --tail=200— look for provider-init errorskubectl -n fcc describe pod fcc-backend— look forOOMKilled,CrashLoopBackOff,ImagePullBackOfffcc admin health --json | jq .providers— which provider is refusing connections?
Common causes:
ANTHROPIC_API_KEY/OPENAI_API_KEYrotated without updating theSecret- OTel collector unreachable; if
observability.otel.enabled: trueand endpoint is down, some code paths hang - Memory limit too low; bump
backend.resources.limits.memoryinvalues-prod.yaml
Resolution:
kubectl -n fcc rollout restart deployment/fcc-backend
kubectl -n fcc rollout status deployment/fcc-backend --timeout=5m
curl -sf http://<backend-host>:8765/health && echo OK
Runbook 2 — Provider Failure Storm¶
Symptom: Alert FCCActionFailureRateHigh firing; fcc.provider.failure events > 10/5min on the bus.
Checks:
- Identify which provider:
fcc admin health --providers - Check provider status page (Anthropic status, OpenAI status)
- Fall-back path: temporarily set
FCC_DEFAULT_PROVIDER=mockfor degraded-but-available mode
Resolution:
If the upstream is down, document degraded mode on the status page, flip default provider to mock (or litellm router with alternate backend), and wait. If only one persona is affected, override in the scenario setup.ai_config.
Runbook 3 — Audit Finding Storm¶
Symptom: Customer reports workflows producing unexpected output; fcc audit --strict returns >0 errors.
Checks:
fcc audit personas --strict --report /tmp/audit.json- Grep
/tmp/audit.jsonforseverity: tier_1— these block production - Compare persona YAML hashes against the last-known-good release
Resolution:
# Dry-run diff against main
git diff v1.3.9 -- src/fcc/data/personas/
# If drift detected, checkout clean
git checkout v1.3.9 -- src/fcc/data/personas/
helm upgrade fcc ./charts/fcc --atomic
See For Auditors: R.I.S.C.E.A.R. Completeness for interpretation of findings.
Runbook 4 — Event Bus Overflow¶
Symptom: Events being dropped; FCC_EVENT_BUS_BUFFER_SIZE exceeded.
Checks:
fcc admin health --events— buffer depth and drop count- Which subscriber is slow? — check subscriber latency in tracing
Resolution:
Increase FCC_EVENT_BUS_BUFFER_SIZE via the chart's backend.env section, or decouple the slow subscriber to an async worker.
Runbook 5 — Frontend 502 / 504¶
Symptom: Browser gets 502/504 through the ingress.
Checks:
- Ingress backend health:
kubectl -n fcc describe svc fcc-frontend - Frontend-to-backend connectivity:
kubectl -n fcc exec deploy/fcc-frontend -- curl -sf http://fcc-backend:8765/health
Resolution:
Usually a stale Service selector or a probe misconfiguration. helm upgrade with --atomic to reconcile.
Runbook 6 — JupyterLab PVC Full¶
Symptom: Users can't save notebooks; kubectl describe pvc fcc-jupyter-data shows near 100% usage.
Resolution:
Expand the PVC (if the StorageClass supports it) or archive old notebooks. Set the PVC alert at 80% to prevent recurrence.
Degraded-Mode Checklist¶
When you declare an incident and shift to degraded mode:
- Flip
FCC_DEFAULT_PROVIDER=mockto keep the UI alive - Post the status page update
- Freeze
helm upgradeuntil post-mortem - Turn up event-bus logging to DEBUG
- Snapshot
/tmp/spans.jsonlandfcc-backendlogs - Start the incident Slack thread with the commands run
Post-Incident Workflow¶
- Attach the
fcc admin health --jsonsnapshot to the ticket - Capture the 60-minute window in the OTel backend (Jaeger / Tempo)
- File a learnings doc; link it from the runbook that was used
- Update this page's Runbook Library if a new class of incident appeared
- Add a regression test for the scenario if the root cause was a code defect
Related Reading¶
- Deployment Guide — the topology you are responding against
- Monitoring — the alerts that will page you
- Upgrade Guide — keeping incidents rare in the first place
- For Auditors: Quality Gates Reference — the 58 gates run by
fcc audit - For Professionals: Security Review — secrets and access patterns
- Event Bus module — understanding the event stream