{
  "$schema": "https://pi-tui.ratstack.sh/schema/pattern.schema.json",
  "aka": [
    "Expiring status"
  ],
  "animated": true,
  "apis": [
    {
      "name": "ctx.ui.setStatus",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "setStatus",
      "url": null
    }
  ],
  "applicability": [
    "Use this when feedback should not remain in the footer indefinitely."
  ],
  "category": "status",
  "categoryLabel": "Status and widgets",
  "consequences": [
    "One-off feedback clears without a persistent footer slot.",
    "Timers need replacement and stale-context guards."
  ],
  "family": "lifecycle",
  "familyLabel": "Lifecycle",
  "id": "notice-fuse",
  "implementation": [
    "An older timer must not erase a newer value.",
    "Cancel owned timers and reject stale session contexts."
  ],
  "intent": "Clear a one-off keyed notice after its display interval.",
  "jsonUrl": "https://pi-tui.ratstack.sh/patterns/notice-fuse.json",
  "kind": "screen",
  "knownUses": [
    {
      "example": "self-expiring-status",
      "moreRefs": 0,
      "refs": [
        {
          "file": "index.ts",
          "lines": "907-908",
          "sha": "a5c4429b",
          "url": "https://github.com/nicobailon/pi-skill-palette/blob/a5c4429b8c2e33ab903d07856497014f3d5ad34e/index.ts#L907-L908"
        }
      ],
      "repo": "pi-skill-palette",
      "repoUrl": "https://github.com/nicobailon/pi-skill-palette",
      "title": "Expire one-off status notices"
    }
  ],
  "linkedFrom": [
    {
      "how": "adds a deadline to the slot",
      "id": "keyed-slot",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/keyed-slot.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/keyed-slot.md",
      "name": "Keyed Slot",
      "url": "https://pi-tui.ratstack.sh/patterns/keyed-slot/"
    },
    {
      "how": "shows an independent temporary notice",
      "id": "work-caption",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/work-caption.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/work-caption.md",
      "name": "Work Caption",
      "url": "https://pi-tui.ratstack.sh/patterns/work-caption/"
    }
  ],
  "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/notice-fuse.md",
  "motivation": "Skill Palette clears a shortcut notice from a timer that could otherwise erase a replacement notice.",
  "name": "Notice Fuse",
  "participants": [
    {
      "name": "ctx.ui.setStatus",
      "role": "Writes or clears one named footer slot.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "Notice timer",
      "role": "Clears only the current notice at its own deadline.",
      "url": null
    }
  ],
  "pi": "1.0.3",
  "related": [
    {
      "how": "also ties timers to owners",
      "id": "refresh-lease",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/refresh-lease.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/refresh-lease.md",
      "name": "Refresh Lease",
      "url": "https://pi-tui.ratstack.sh/patterns/refresh-lease/"
    }
  ],
  "sampleCode": {
    "code": "// Notice Fuse: cancel the previous expiry so it cannot erase a newer notice.\nimport type { PatternStory } from \"../../../src/pattern.ts\";\n\nexport const story: PatternStory = {\n  id: \"notice-fuse\", title: \"Notice Fuse\", kind: \"screen\",\n  apis: [\"setStatus\"],\n  states: [\n    { id: \"notice\", label: \"Notice shown\", animated: true, steps: [{ type: \"tick\", ms: 400 }] },\n    { id: \"replacement\", label: \"New notice\", animated: true, steps: [\n      { type: \"action\", name: \"replace\" }, { type: \"tick\", ms: 700 },\n    ] },\n    { id: \"expired\", label: \"Latest notice expires\", animated: true, steps: [{ type: \"tick\", ms: 500 }] },\n  ],\n  setup({ ui, theme, action }) {\n    let timer: ReturnType<typeof setTimeout> | undefined;\n    let proofTimer: ReturnType<typeof setTimeout> | undefined;\n    let noticeGeneration = 0;\n    let currentNotice: string | undefined;\n    const notice = (text: string) => {\n      if (timer !== undefined) clearTimeout(timer);\n      const generation = ++noticeGeneration;\n      currentNotice = text;\n      ui.setStatus(\"notice\", theme.fg(\"success\", text));\n      timer = setTimeout(() => {\n        if (generation !== noticeGeneration) return;\n        currentNotice = undefined;\n        ui.setStatus(\"notice\", undefined);\n      }, 1000);\n    };\n    ui.setEditorText(\"Review the task shortcuts.\");\n    ui.setWidget(\"hint\", [theme.fg(\"muted\", \"Shortcut notice expires after 1s\")]);\n    notice(\"Shortcut copied\");\n    action(\"replace\", () => {\n      notice(\"New shortcut ready\");\n      // Cross the old deadline (1000ms) but not the new one (1400ms).\n      proofTimer = setTimeout(() => {\n        if (currentNotice !== \"New shortcut ready\") throw new Error(\"Old expiry erased replacement\");\n      }, 650);\n    });\n    return () => {\n      noticeGeneration++;\n      if (timer !== undefined) clearTimeout(timer);\n      if (proofTimer !== undefined) clearTimeout(proofTimer);\n    };\n  },\n};\n",
    "lang": "ts",
    "path": "stories/patterns/lifecycle/notice-fuse.ts"
  },
  "states": [
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Notice Fuse, Notice shown state, 40 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-40-dark.anim.9c4d3e6d1bb6.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-40-dark.755e678f5a68.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Notice Fuse, Notice shown state, 40 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-40-light.anim.3e4ce3c9093e.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-40-light.d17f640c57b4.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Notice Fuse, Notice shown state, 60 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-60-dark.anim.64712b857caf.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-60-dark.939a489f3008.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Notice Fuse, Notice shown state, 60 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-60-light.anim.51fb7cd86e0f.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-60-light.99f3c4ea912d.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Notice Fuse, Notice shown state, 80 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-80-dark.anim.4b7c79584ab3.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-80-dark.fc1825de54b9.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Notice Fuse, Notice shown state, 80 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-80-light.anim.eda6fb4e351c.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-80-light.e1ac3f668ec3.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Notice Fuse, Notice shown state, 120 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-120-dark.anim.e3284eb7a674.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-120-dark.ed33cc19e899.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Notice Fuse, Notice shown state, 120 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-120-light.anim.f97cb58d6ebf.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/notice-120-light.ac4c09f30754.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a synthetic shortcut notice in a keyed slot.",
      "id": "notice",
      "label": "Notice shown",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Notice Fuse, New notice state, 40 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-40-dark.anim.de7a5b86f9a4.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-40-dark.755e678f5a68.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Notice Fuse, New notice state, 40 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-40-light.anim.a031e98f7150.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-40-light.d17f640c57b4.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Notice Fuse, New notice state, 60 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-60-dark.anim.0fefdba7bbd5.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-60-dark.939a489f3008.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Notice Fuse, New notice state, 60 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-60-light.anim.27c038e635bc.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-60-light.99f3c4ea912d.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Notice Fuse, New notice state, 80 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-80-dark.anim.37fe55cab627.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-80-dark.fc1825de54b9.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Notice Fuse, New notice state, 80 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-80-light.anim.776d31c84283.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-80-light.e1ac3f668ec3.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Notice Fuse, New notice state, 120 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-120-dark.anim.6366111e1c35.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-120-dark.ed33cc19e899.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Notice Fuse, New notice state, 120 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-120-light.anim.2f679d33b73d.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/replacement-120-light.ac4c09f30754.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Replace it before the old timer expires.",
      "id": "replacement",
      "label": "New notice",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Notice Fuse, Latest notice expires state, 40 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-40-dark.anim.8aeba0a9cf02.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-40-dark.fd93053b6b5f.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 40 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-40-light.anim.b11007fa6bc9.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-40-light.4182e39f30d9.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 60 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-60-dark.anim.326601a2a977.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-60-dark.fe18e3eeb9a9.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 60 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-60-light.anim.546371b8b91b.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-60-light.d56bdad0e7f6.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 80 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-80-dark.anim.0ce0fe107e98.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-80-dark.b365d1aef84d.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 80 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-80-light.anim.245773047232.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-80-light.9e072179646f.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 120 columns, dark theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-120-dark.anim.666987adbf5a.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-120-dark.cbbbe7703304.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Notice Fuse, Latest notice expires state, 120 columns, light theme, 10 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-120-light.anim.8e3e69aca047.webp",
          "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": 440,
          "rows": 10,
          "still": "https://pi-tui.ratstack.sh/frames/notice-fuse/expired-120-light.fcb37f97e799.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Keep the replacement through the old deadline and clear at its own deadline.",
      "id": "expired",
      "label": "Latest notice expires",
      "problems": []
    }
  ],
  "structure": "notice -> keyed slot + timer\nnew notice -> replace owned timer\nlatest deadline -> clear",
  "thumbnails": {
    "dark": {
      "animation": "https://pi-tui.ratstack.sh/thumbs/notice-fuse/dark.anim.baf3de3e8145.webp",
      "src": "https://pi-tui.ratstack.sh/thumbs/notice-fuse/dark.fa9e60463dfd.webp"
    },
    "light": {
      "animation": "https://pi-tui.ratstack.sh/thumbs/notice-fuse/light.anim.08c2208f1efc.webp",
      "src": "https://pi-tui.ratstack.sh/thumbs/notice-fuse/light.0f30512c3fcf.webp"
    }
  },
  "url": "https://pi-tui.ratstack.sh/patterns/notice-fuse/",
  "widths": [
    40,
    60,
    80,
    120
  ]
}
