{
  "$schema": "https://pi-tui.ratstack.sh/schema/pattern.schema.json",
  "aka": [
    "Consequence confirmation"
  ],
  "animated": false,
  "apis": [
    {
      "name": "ctx.ui.select",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "ctx.ui.confirm",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "ctx.ui.setWidget",
      "url": null
    },
    {
      "name": "ctx.ui.setStatus",
      "url": null
    }
  ],
  "applicability": [
    "Use this when a broad restore or destructive choice needs an explicit warning."
  ],
  "category": "dialogs",
  "categoryLabel": "Overlays and dialogs",
  "consequences": [
    "A consequential choice gets a distinct confirmation step.",
    "The extra prompt and its thresholds are workflow-specific."
  ],
  "family": "behavioral",
  "familyLabel": "Behavioral",
  "id": "warning-gate",
  "implementation": [
    "The source's restore thresholds are not universal policy.",
    "A cancelled confirmation must not trigger the selected action."
  ],
  "intent": "Follow a consequential selection with a separate warning confirmation.",
  "jsonUrl": "https://pi-tui.ratstack.sh/patterns/warning-gate.json",
  "kind": "screen",
  "knownUses": [
    {
      "example": "restore-boundary-confirmation",
      "moreRefs": 0,
      "refs": [
        {
          "file": "extensions/tool-horizon/index.ts",
          "lines": "146-170",
          "sha": "17cce138",
          "url": "https://github.com/nicobailon/dot314/blob/17cce138f3f687211d0485d204408a9650953c61/extensions/tool-horizon/index.ts#L146-L170"
        },
        {
          "file": "extensions/tool-horizon/index.ts",
          "lines": "40-90",
          "sha": "17cce138",
          "url": "https://github.com/nicobailon/dot314/blob/17cce138f3f687211d0485d204408a9650953c61/extensions/tool-horizon/index.ts#L40-L90"
        },
        {
          "file": "extensions/tool-horizon/boundary-picker.ts",
          "lines": "460-500",
          "sha": "17cce138",
          "url": "https://github.com/nicobailon/dot314/blob/17cce138f3f687211d0485d204408a9650953c61/extensions/tool-horizon/boundary-picker.ts#L460-L500"
        }
      ],
      "repo": "dot314",
      "repoUrl": "https://github.com/nicobailon/dot314",
      "title": "Select restore boundaries with explicit warnings"
    }
  ],
  "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/warning-gate.md",
  "motivation": "Dot314's tool-horizon selector adds a separate warning for broad restore choices.",
  "name": "Warning Gate",
  "participants": [
    {
      "name": "ctx.ui.select",
      "role": "Returns a selected string or cancellation.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "ctx.ui.confirm",
      "role": "Returns a confirmation decision.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "Warning policy",
      "role": "Chooses which consequential actions require another prompt.",
      "url": null
    }
  ],
  "pi": "1.0.3",
  "related": [
    {
      "how": "filters choices before confirmation",
      "id": "action-sieve",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/action-sieve.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/action-sieve.md",
      "name": "Action Sieve",
      "url": "https://pi-tui.ratstack.sh/patterns/action-sieve/"
    }
  ],
  "sampleCode": {
    "code": "// Warning Gate: a broad selection must pass a separate consequence prompt.\nimport type { PatternStory } from \"../../../src/pattern.ts\";\n\nexport const story: PatternStory = {\n  id: \"warning-gate\", title: \"Warning Gate\", kind: \"screen\",\n  apis: [\"ctx.ui.select\", \"ctx.ui.confirm\", \"ctx.ui.setWidget\", \"ctx.ui.setStatus\"],\n  states: [\n    { id: \"select\", label: \"Choose boundary\" },\n    { id: \"warning\", label: \"Broad action warning\", steps: [\n      { type: \"keys\", data: \"\\x1b[B\" }, { type: \"keys\", data: \"\\r\" },\n    ] },\n    { id: \"cancelled\", label: \"No action\", steps: [\n      { type: \"keys\", data: \"\\x1b[B\" }, { type: \"keys\", data: \"\\r\" },\n    ] },\n  ],\n  setup({ ui, theme }) {\n    const boundary = [\"Restore latest task\", \"Restore all tasks\"];\n    const requiresWarning = (choice: string) => choice === boundary[1];\n    // A synthetic policy, not a universal restore threshold.\n    let applied = 0;\n    ui.setEditorText(\"Draft task list\");\n    ui.setWidget(\"restore\", [theme.fg(\"muted\", \"Checkpoint: 3 tasks · no changes applied\")]);\n    ui.setStatus(\"restore\", theme.fg(\"muted\", \"unchanged\"));\n\n    function apply(choice: string) {\n      applied++;\n      ui.setWidget(\"restore\", [theme.fg(\"success\", choice + \" · applied\")]);\n      ui.setStatus(\"restore\", theme.fg(\"success\", \"applied \" + applied));\n    }\n    void ui.select(\"Restore boundary\", boundary).then(choice => {\n      if (choice === undefined) return;\n      if (!requiresWarning(choice)) { apply(choice); return; }\n      void ui.confirm(\"Restore all tasks?\", \"Replaces all 3 task edits. Continue?\").then(confirmed => {\n        if (confirmed) { apply(choice); return; }\n        ui.setWidget(\"restore\", [\n          theme.fg(\"success\", \"Declined · 3 task edits kept\"),\n          theme.fg(\"muted\", \"Applied actions: \" + applied),\n        ]);\n        ui.setStatus(\"restore\", theme.fg(\"success\", \"unchanged\"));\n      });\n    });\n  },\n};\n",
    "lang": "ts",
    "path": "stories/patterns/behavioral/warning-gate.ts"
  },
  "states": [
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Warning Gate, Choose boundary state, 40 columns, dark theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-40-dark.839b7924c8aa.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Warning Gate, Choose boundary state, 40 columns, light theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-40-light.3120082f49c9.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Warning Gate, Choose boundary state, 60 columns, dark theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-60-dark.a12d316b739f.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Warning Gate, Choose boundary state, 60 columns, light theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-60-light.a41e588dd913.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Warning Gate, Choose boundary state, 80 columns, dark theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-80-dark.3a9110df630e.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Warning Gate, Choose boundary state, 80 columns, light theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-80-light.c581878bc778.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Warning Gate, Choose boundary state, 120 columns, dark theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-120-dark.40eda69ccd29.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Warning Gate, Choose boundary state, 120 columns, light theme, 18 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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/select-120-light.22034a28456f.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show narrow and broad synthetic restore choices.",
      "id": "select",
      "label": "Choose boundary",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Warning Gate, Broad action warning state, 40 columns, dark theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-40-dark.ce05a3e34c0e.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Warning Gate, Broad action warning state, 40 columns, light theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-40-light.571340875abc.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Warning Gate, Broad action warning state, 60 columns, dark theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-60-dark.7c4bb8320a89.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Warning Gate, Broad action warning state, 60 columns, light theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-60-light.3ad77029e4a7.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Warning Gate, Broad action warning state, 80 columns, dark theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-80-dark.c325f189c9f9.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Warning Gate, Broad action warning state, 80 columns, light theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-80-light.99ce6ce82d18.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Warning Gate, Broad action warning state, 120 columns, dark theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-120-dark.e2c6ee1780a1.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Warning Gate, Broad action warning state, 120 columns, light theme, 20 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": 880,
          "rows": 20,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/warning-120-light.72cde46fc250.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a warning after the broad choice.",
      "id": "warning",
      "label": "Broad action warning",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Warning Gate, No action state, 40 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-40-dark.cec3401af4b6.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Warning Gate, No action state, 40 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-40-light.fcb975cb7829.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Warning Gate, No action state, 60 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-60-dark.880d770c22c6.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Warning Gate, No action state, 60 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-60-light.2e0ce7025f63.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Warning Gate, No action state, 80 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-80-dark.2f1d74bdf4d5.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Warning Gate, No action state, 80 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-80-light.07dcbbf61323.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Warning Gate, No action state, 120 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-120-dark.f23e1620675a.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Warning Gate, No action state, 120 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/warning-gate/cancelled-120-light.b8ea2767180b.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show an unchanged host after declining the warning.",
      "id": "cancelled",
      "label": "No action",
      "problems": []
    }
  ],
  "structure": "choose boundary -> broad?\nbroad -> warning -> confirm\ncancel -> no action",
  "thumbnails": {
    "dark": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/warning-gate/dark.37235a42103f.webp"
    },
    "light": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/warning-gate/light.4eb0345af604.webp"
    }
  },
  "url": "https://pi-tui.ratstack.sh/patterns/warning-gate/",
  "widths": [
    40,
    60,
    80,
    120
  ]
}
