{
  "meta": {
    "version": "v1",
    "pricing": {
      "public": {
        "label": "Public",
        "description": "Read-only API access for lightweight status checks and public integrations."
      },
      "premium": {
        "label": "Premium",
        "description": "API keys with higher hourly quotas, plus Slack, Discord, webhook, and email outage alerts across your vendor stack."
      }
    },
    "generatedAt": "2026-07-24T15:02:01.963Z"
  },
  "data": {
    "id": "incident_statuspage_readme_47010ndmpjvk",
    "slug": "readme-readme-refactored-outage-2026-05-27",
    "title": "ReadMe Refactored Outage",
    "summary": "ReadMe Refactored Outage",
    "status": "resolved",
    "severity": "critical",
    "startedAt": "2026-05-27T17:08:36+00:00",
    "updatedAt": "2026-06-03T15:32:19.94+00:00",
    "resolvedAt": "2026-05-27T22:37:50.984+00:00",
    "provider": {
      "slug": "readme",
      "name": "ReadMe"
    },
    "affectedServices": [
      {
        "slug": "readme-dashboard",
        "name": "Admin & metrics"
      },
      {
        "slug": "readme-hubs",
        "name": "Hubs & docs"
      }
    ],
    "links": {
      "html": "/incidents/readme-readme-refactored-outage-2026-05-27",
      "api": "/api/v1/incidents/readme-readme-refactored-outage-2026-05-27",
      "providerHtml": "/providers/readme"
    },
    "impactSummary": "ReadMe reported a critical event for the affected tracked services.",
    "source": {
      "id": "source_readme_status",
      "kind": "official_api",
      "name": "ReadMe Status",
      "checkedAt": "2026-07-24T14:55:05.372+00:00",
      "officialUrl": "https://www.readmestatus.com",
      "statusPageUrl": "https://www.readmestatus.com"
    },
    "updates": [
      {
        "id": "update_statuspage_readme_47010ndmpjvk_sch0b373qyd0",
        "status": "investigating",
        "body": "We are currently investigating this issue.",
        "createdAt": "2026-05-27T13:51:08.455+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_k810c2grns32",
        "status": "identified",
        "body": "The issue has been identified and a fix is being implemented.",
        "createdAt": "2026-05-27T14:52:45.844+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_ngtft81qzgvy",
        "status": "monitoring",
        "body": "We're slowly recovering and monitoring the situation.",
        "createdAt": "2026-05-27T15:57:05.416+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_y6k46trvs352",
        "status": "monitoring",
        "body": "We are monitoring the issue.",
        "createdAt": "2026-05-27T17:08:36.604+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_l85ng77x13wk",
        "status": "monitoring",
        "body": "Updated 6/3: A routine configuration update coincided with the downtime window, which led us to initially identify it as the cause. Further investigation confirmed the two were unrelated. See the postmortem for full details.",
        "createdAt": "2026-05-27T17:17:19.849+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_6tbtdhyftd6t",
        "status": "investigating",
        "body": "We are seeing some slow performance, possibly 500 errors. investigating",
        "createdAt": "2026-05-27T17:43:07.572+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_5d9mwcn4xr1q",
        "status": "investigating",
        "body": "We are continuing to investigate this issue.",
        "createdAt": "2026-05-27T17:47:34.808+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_5prwpb8bbg4v",
        "status": "monitoring",
        "body": "Performance has improved, but we're still investigating the issue.",
        "createdAt": "2026-05-27T18:02:44.019+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_f7ks68nwmztk",
        "status": "monitoring",
        "body": "Performance and loading is still being affected, and we're in the process of rolling out fixes",
        "createdAt": "2026-05-27T20:54:12.607+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_39mp11lc4trz",
        "status": "resolved",
        "body": "This incident has been resolved.",
        "createdAt": "2026-05-27T22:37:50.984+00:00"
      },
      {
        "id": "update_statuspage_readme_47010ndmpjvk_3hgmlfr8xzsn",
        "status": "resolved",
        "body": "### What Happened\n\nBeginning Tuesday, May 26, 2026, customers were experiencing slow loading and 503 errors across ReadMe-hosted docs and the admin dashboard. The outage was intermittent but recurring, with the worst periods hitting during business hours when traffic spiked.\n\n### Root Cause\n\nAn internal data backup process was generating excessive I/O on our storage layer. Under normal traffic conditions, this additional load was manageable. But when it coincided with peak customer traffic and elevated bot activity, total I/O demand exceeded system capacity, causing cascading request timeouts.\n\nThe maintenance process ran on a recurring schedule, which is why the degradation followed a predictable pattern of spikes throughout each day. Separately, a surge in bot traffic to non-existent pages \\(404s\\) amplified the problem because those requests were not being served from cache.\n\n### Resolution\n\n**Immediate fix:** We identified and disabled the maintenance process causing the excess I/O load. Within three hours, storage utilization returned to normal levels and remained stable.\n\n**Additional improvements shipped during the incident:**\n\n* Expanded caching across multiple layers, significantly reducing load on backend storage\n* Hardened 404 handling to serve error pages from cache instead of hitting the backend\n* Implemented rate limiting and IP-based protections against abusive bot traffic\n* Optimized several high-traffic API endpoints to reduce redundant backend calls\n* Added new monitoring and alerting for storage I/O thresholds\n\n### Timeline \n\nMay 26 - June 1, 2026\n\n| Time | Status | Details |\n| --- | --- | --- |\n| Mon 5/26, 6:39 AM PDT | Investigating | Issue reported |\n| Mon 5/26, 7:26 AM PDT | Monitoring | Fix implemented, monitoring results |\n| Mon 5/26, 8:37 AM PDT | Resolved | Admin hub incident resolved |\n| Mon 5/26, 10:41 AM PDT | Investigating | Slow performance across customer hubs |\n| Mon 5/26, 10:49 AM PDT | Monitoring | Quick fix applied, investigating thorough fix |\n| Mon 5/26, 8:54 PM PDT | Resolved | Customer hub incident resolved |\n| Tue 5/27, 6:51 AM PDT | Investigating | Issue reported |\n| Tue 5/27, 7:52 AM PDT | Identified | Fix in progress |\n| Tue 5/27, 8:57 AM PDT | Monitoring | Slowly recovering |\n| Tue 5/27, 10:17 AM PDT | Update | Updated 6/3: A routine configuration update coincided with the downtime window, which led us to initially identify it as the cause. Further investigation confirmed the two were unrelated. See root cause and resolution above. |\n| Tue 5/27, 1:54 PM PDT | Update | Performance and loading still affected, rolling out fixes |\n| Tue 5/27, 3:37 PM PDT | Resolved | Incident resolved |\n| Wed 5/28, 6:40 AM PDT | Investigating | Issue reported |\n| Wed 5/28, 6:43 AM PDT | Identified | Fix being implemented |\n| Wed 5/28, 7:35 AM PDT | Update | Systems coming back up, working on permanent fix |\n| Wed 5/28, 8:27 AM PDT | Monitoring | Fix implemented, monitoring results |\n| Wed 5/28, 10:53 AM PDT | Update | Reports of degraded performance, actively investigating |\n| Wed 5/28, 1:04 PM PDT | Update | Systems appear stable, rolling out fixes |\n| Wed 5/28, 6:49 PM PDT | Monitoring | Improvements and fixes deployed, continuing to monitor |\n| Thu 5/29, 10:03 AM PDT | Monitoring | Systems stable. Bi-directional sync maintenance 9:50–11:59 AM ET. |\n| Thu 5/29, 11:36 AM PDT | Monitoring | Deploying targeted fixes. Serving all 404s from cache. Degraded read performance. |\n| Fri 5/30 | Monitoring | Monitoring continues |\n| Sat 5/31 | Monitoring | Weekend monitoring |\n| Mon 6/1, 11:16 AM PDT | Resolved | Root cause identified and resolved. Systems stable since Thursday, May 29. |\n\n### Path Forward\n\nWe are using this incident to make lasting improvements to reliability and incident response:\n\n* **Storage capacity and isolation:** Restructuring how background processes interact with production storage to eliminate contention under load.\n* **Caching and performance:** The caching improvements shipped during the incident are permanent. We are continuing to expand cache coverage across additional endpoints and page types.\n* **Bot and traffic protection:** Strengthening rate limiting and abuse detection to prevent bot traffic from contributing to backend load.\n* **Monitoring and alerting:** Adding proactive capacity monitoring with earlier thresholds so the team can intervene before customers are affected.\n* **Incident response:** Improving our internal processes for faster escalation and more frequent status page updates during multi-day incidents.\n\n### Final Note\n\nDuring the incident, we posted an update referencing a platform update. That was our initial hypothesis based on timing. Further investigation confirmed it was unrelated. The change in question was a routine, isolated configuration update and had no impact on the outage or any other customers. We should have waited for confirmation before publishing it, and we're tightening our internal process for status page updates as a result.\n\nWe know how critical your documentation is to your customers, and this level of disruption is not acceptable. We have already shipped meaningful improvements to prevent recurrence, and the work outlined above will continue through the coming weeks. If you have questions, reach out to your account team or contact [support@readme.io](mailto:support@readme.io).",
        "createdAt": "2026-06-03T15:28:00.412+00:00"
      }
    ],
    "access": {
      "plan": "public",
      "keyed": false
    }
  }
}