{
  "slug": "stair-code",
  "term": "STAIR code",
  "aliases": [
    "STAIR codes"
  ],
  "definition": "A STAIR code protects each encoded stripe against whole-device erasures and additional sector erasures bounded by a configured per-device profile.",
  "note": "Within a stripe, the profile limits both affected surviving chunks and erasures per chunk. A profile of (1, 1, 2) covers two sectors in one chunk and one in each of two others, not arbitrary four-sector placement. These sectors need not be contiguous. [stair14]\n\nThe construction combines row and column MDS codes. Upstairs decoding recovers partial chunks before whole missing chunks; practical decoding can first use row parity. Upstairs and downstairs encoding yield identical parity for the same component codes, but downstairs encoding is not a general recovery procedure. [stair14]\n\nExceeding the declared profile alone does not prove a particular pattern undecodable. The exact equations and remaining symbols still matter. [stair14]",
  "related": [
    "sector-disk-code",
    "erasure-coding",
    "reed-solomon-code",
    "intra-disk-redundancy",
    "latent-sector-error"
  ],
  "citations": [
    {
      "id": "stair14",
      "title": "Li and Lee. STAIR Codes. FAST 2014, pp. 147-162, sections 2, 4 and 5.",
      "url": "https://www.usenix.org/system/files/conference/fast14/fast14-paper_li-mingqiang.pdf",
      "accessed": "2026-10-24"
    }
  ],
  "status": "research",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-24",
  "provenance": [
    "Source-reviewed coding construction; no Hesela codec implementation or measured deployment reliability. [stair14]"
  ]
}
