{
  "$schema": "https://pi-tui.ratstack.sh/schema/pattern.schema.json",
  "aka": [
    "Diagnostic summary"
  ],
  "animated": false,
  "apis": [
    {
      "name": "ToolDefinition.renderResult",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#tool-rendering"
    },
    {
      "name": "Text",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#compose-built-in-components"
    },
    {
      "name": "ToolExecutionComponent",
      "url": null
    }
  ],
  "applicability": [
    "Use this when several failures need a readable summary without hiding detail."
  ],
  "category": "tools",
  "categoryLabel": "Tool and message output",
  "consequences": [
    "Errors have a concise summary without losing expanded diagnostic lines.",
    "Planning must stay separate from component rendering."
  ],
  "family": "presentation",
  "familyLabel": "Presentation",
  "id": "error-digest",
  "implementation": [
    "Keep the error plan separate from the TUI renderer.",
    "Distinguish cancellation from per-query failure."
  ],
  "intent": "Project structured errors into compact and expanded diagnostic output.",
  "jsonUrl": "https://pi-tui.ratstack.sh/patterns/error-digest.json",
  "kind": "component",
  "knownUses": [
    {
      "example": "web-search-error-diagnostics",
      "moreRefs": 0,
      "refs": [
        {
          "file": "render-search-error.ts",
          "lines": "1-115",
          "sha": "9a077997",
          "url": "https://github.com/nicobailon/pi-web-access/blob/9a0779976ba47350be18f8cfacaffbe2a407113e/render-search-error.ts#L1-L115"
        },
        {
          "file": "index.ts",
          "lines": "1633-1723",
          "sha": "9a077997",
          "url": "https://github.com/nicobailon/pi-web-access/blob/9a0779976ba47350be18f8cfacaffbe2a407113e/index.ts#L1633-L1723"
        }
      ],
      "repo": "pi-web-access",
      "repoUrl": "https://github.com/nicobailon/pi-web-access",
      "title": "Web access: collapsed and expanded search-error diagnostics"
    }
  ],
  "linkedFrom": [],
  "links": {
    "agentGuide": "https://pi-tui.ratstack.sh/llms.txt",
    "index": "https://pi-tui.ratstack.sh/patterns.md",
    "skill": "https://pi-tui.ratstack.sh/skills/build-pi-tui-component.md"
  },
  "mdUrl": "https://pi-tui.ratstack.sh/patterns/error-digest.md",
  "motivation": "Web Access combines cancellation, query failures and runtime facts into one diagnostic plan.",
  "name": "Error Digest",
  "participants": [
    {
      "name": "ToolDefinition.renderResult",
      "role": "Renders partial or final tool output.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#tool-rendering"
    },
    {
      "name": "Text",
      "role": "Renders wrapped text content.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#compose-built-in-components"
    },
    {
      "name": "Diagnostic plan",
      "role": "Keeps cancellation and query failures separate from rendering.",
      "url": null
    }
  ],
  "pi": "1.0.3",
  "related": [
    {
      "how": "supplies the expansion surface",
      "id": "detail-fold",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/detail-fold.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/detail-fold.md",
      "name": "Detail Fold",
      "url": "https://pi-tui.ratstack.sh/patterns/detail-fold/"
    }
  ],
  "sampleCode": {
    "code": "// Error Digest: keep diagnostic planning separate from summary/detail rendering.\nimport { Text, wrapTextWithAnsi } from \"@earendil-works/pi-tui\";\nimport { ToolExecutionComponent, type ToolRenderers } from \"@earendil-works/pi-coding-agent\";\nimport type { PatternStory } from \"../../../src/pattern.ts\";\n\ntype Outcome = { kind: \"cancelled\" } | {\n  kind: \"failed\"; queries: readonly { query: string; reason: string }[];\n};\nfunction diagnosticPlan(outcome: Outcome) {\n  if (outcome.kind === \"cancelled\") return {\n    summary: \"Search cancelled · no query failure\", lines: [\"Cancelled before the next query started.\"],\n  };\n  return {\n    summary: outcome.queries.length + \" queries failed · expand for details\",\n    lines: outcome.queries.map(q => q.query + \": \" + q.reason),\n  };\n}\nexport const story: PatternStory = {\n  id: \"error-digest\", title: \"Error Digest\", kind: \"component\",\n  apis: [\"ToolExecutionComponent\", \"ToolDefinition.renderResult\", \"Text\"], rows: 16,\n  states: [\n    { id: \"collapsed\", label: \"Error summary\" },\n    { id: \"expanded\", label: \"Diagnostic plan\", steps: [{ type: \"action\", name: \"expand\" }] },\n    { id: \"cancelled\", label: \"Cancellation\", steps: [{ type: \"action\", name: \"cancel\" }] },\n  ],\n  setup({ theme, tui, action }) {\n    let outcome: Outcome = { kind: \"failed\", queries: [\n      { query: \"terminal widths\", reason: \"request timed out\" },\n      { query: \"overlay focus\", reason: \"reference index unavailable\" },\n    ] };\n    const renderers: ToolRenderers = {\n      renderCall: () => new Text(theme.fg(\"toolTitle\", \"reference_search · two queries\"), 0, 0),\n      renderResult(_result, options) {\n        const plan = diagnosticPlan(outcome);\n        const lines = [plan.summary, ...(options.expanded ? plan.lines : [])];\n        return {\n          invalidate() {},\n          render(width) {\n            return lines.flatMap(line => wrapTextWithAnsi(line, width)\n              .map(row => theme.fg(outcome.kind === \"cancelled\" ? \"muted\" : \"error\", row)));\n          },\n        };\n      },\n    };\n    const tool = new ToolExecutionComponent(\"reference_search\", \"example-search-2\", {},\n      undefined, renderers, tui, \"/workspace/example\");\n    tool.updateResult({ content: [], isError: true }, false);\n    action(\"expand\", () => { tool.setExpanded(true); tui.requestRender(); });\n    action(\"cancel\", () => {\n      outcome = { kind: \"cancelled\" };\n      tool.updateResult({ content: [], isError: false }, false); tui.requestRender();\n    });\n    return tool;\n  },\n};\n",
    "lang": "ts",
    "path": "stories/patterns/presentation/error-digest.ts"
  },
  "states": [
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Error Digest, Error summary state, 40 columns, dark theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-40-dark.c8e469224d35.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Error Digest, Error summary state, 40 columns, light theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-40-light.3ecd9253e6fa.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Error Digest, Error summary state, 60 columns, dark theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-60-dark.6ab0e6dce379.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Error Digest, Error summary state, 60 columns, light theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-60-light.bf9797551d71.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Error Digest, Error summary state, 80 columns, dark theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-80-dark.dd42f6984ee5.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Error Digest, Error summary state, 80 columns, light theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-80-light.85993efa97e3.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Error Digest, Error summary state, 120 columns, dark theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-120-dark.678e4e8373d5.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Error Digest, Error summary state, 120 columns, light theme, 5 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 220,
          "rows": 5,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/collapsed-120-light.42c4c54ab5f6.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a short summary of synthetic query failures.",
      "id": "collapsed",
      "label": "Error summary",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Error Digest, Diagnostic plan state, 40 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-40-dark.bc2f5562c05b.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 40 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-40-light.02e204e14722.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 60 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-60-dark.4de401c27943.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 60 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-60-light.0c68ed283a45.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 80 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-80-dark.8481d7e1f205.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 80 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-80-light.96aab464d23a.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 120 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-120-dark.a39acdcc7bca.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Error Digest, Diagnostic plan state, 120 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/expanded-120-light.97fad046104d.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show all planned diagnostic lines.",
      "id": "expanded",
      "label": "Diagnostic plan",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Error Digest, Cancellation state, 40 columns, dark theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-40-dark.727554fa9c81.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Error Digest, Cancellation state, 40 columns, light theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-40-light.01874628fb0e.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Error Digest, Cancellation state, 60 columns, dark theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-60-dark.083f65c98a5d.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Error Digest, Cancellation state, 60 columns, light theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-60-light.a4fde8d0c3e6.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Error Digest, Cancellation state, 80 columns, dark theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-80-dark.e8eabdee0680.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Error Digest, Cancellation state, 80 columns, light theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-80-light.df8f59db8737.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Error Digest, Cancellation state, 120 columns, dark theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-120-dark.b33f3e2e42de.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Error Digest, Cancellation state, 120 columns, light theme, 7 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 308,
          "rows": 7,
          "still": "https://pi-tui.ratstack.sh/frames/error-digest/cancelled-120-light.a96bb324bf40.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a cancelled operation without labeling it a query failure.",
      "id": "cancelled",
      "label": "Cancellation",
      "problems": []
    }
  ],
  "structure": "failures -> pure diagnostic plan\nplan -> summary / expanded lines",
  "thumbnails": {
    "dark": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/error-digest/dark.8f02b5adf919.webp"
    },
    "light": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/error-digest/light.5ff825e8abc1.webp"
    }
  },
  "url": "https://pi-tui.ratstack.sh/patterns/error-digest/",
  "widths": [
    40,
    60,
    80,
    120
  ]
}
