{"meta":{"version":"v1","pricing":{"public":{"label":"Public","description":"Read-only API access for lightweight status checks and public integrations."},"premium":{"label":"Premium (early access)","description":"API keys with higher hourly quotas are available now; webhooks, alerting, and exports are on the roadmap."}},"generatedAt":"2026-07-07T21:36:12.648Z"},"data":{"id":"incident_statuspage_pypi_r47c43jw19zq","slug":"pypi-python-infrastructure-outage-2026-02-26","title":"Python Infrastructure Outage","summary":"Python Infrastructure Outage","status":"resolved","severity":"critical","startedAt":"2026-02-26T20:40:12+00:00","updatedAt":"2026-02-26T23:27:22.819+00:00","resolvedAt":"2026-02-26T23:26:50+00:00","provider":{"slug":"pypi","name":"PyPI"},"affectedServices":[{"slug":"python-org","name":"python.org"}],"links":{"html":"/incidents/pypi-python-infrastructure-outage-2026-02-26","api":"/api/v1/incidents/pypi-python-infrastructure-outage-2026-02-26","providerHtml":"/providers/pypi"},"impactSummary":"PyPI reported a critical event for the affected tracked services.","source":{"id":"source_pypi_status","kind":"official_api","name":"Python Infrastructure Status","checkedAt":"2026-07-07T21:35:02.169+00:00","officialUrl":"https://status.python.org","statusPageUrl":"https://status.python.org"},"updates":[{"id":"update_statuspage_pypi_r47c43jw19zq_tgg7rc0yfzys","status":"investigating","body":"We are currently investigating this issue","createdAt":"2026-02-26T20:04:22.081+00:00"},{"id":"update_statuspage_pypi_r47c43jw19zq_74b6zm24qtcn","status":"investigating","body":"The root cause has been identified as an erroneous scaling operation that affected some application workloads. All services have been restored and are coming back online. We are monitoring to confirm full recovery.","createdAt":"2026-02-26T20:40:12.413+00:00"},{"id":"update_statuspage_pypi_r47c43jw19zq_fr7rwg2j9tn2","status":"resolved","body":"The incident has been resolved.","createdAt":"2026-02-26T23:26:50.966+00:00"},{"id":"update_statuspage_pypi_r47c43jw19zq_dpxjf0xfg606","status":"resolved","body":"The incident has been resolved.\n\n## Incident Report: Cluster-wide service outage\n\n**Duration**: ~36 minutes \\(20:04–20:40 UTC\\)\n\n**Impact**: Some PSF-hosted services were unavailable, including [python.org](http://python.org), [us.pycon.org](http://us.pycon.org), PyPI stats, [bugs.python.org](http://bugs.python.org), and related services. \n\nWhat was unaffected was our other cluster that manages [PyPI.org](http://PyPI.org) among other services related to PyPI.\n\n**Root Cause**: During local development of kubernetes workloads locally there was an incorrect context switch to one of our production clusters.\n\nThe scale-down commands ran against the production cluster instead of the local environment, iterating through all deployments and setting them to zero replicas. which created cascading failures.\n\n**Recovery**: Services were restored with the help of Ee Durbin by bringing up infrastructure in dependency order, original replica counts were recovered from Kubernetes event history.\n\nAction items:\n\n* Separate kubeconfig files for production vs local, rather than relying on context switching\n* Research adding admission control or policies to prevent bulk scale-to-zero operations\n* Document the infrastructure dependency chain and recovery runbook for future incidents\n\nJacob Coffee, PSF Infrastructure  Team","createdAt":"2026-02-26T23:26:58.501+00:00"}],"access":{"plan":"public","keyed":false}}}