{
  "$schema": "https://pi-tui.ratstack.sh/schema/pattern.schema.json",
  "aka": [
    "Retained job view"
  ],
  "animated": false,
  "apis": [
    {
      "name": "ctx.ui.custom",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#use-custom-screens-and-overlays"
    },
    {
      "name": "ctx.ui.setWidget",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "custom",
      "url": null
    },
    {
      "name": "setWidget",
      "url": null
    },
    {
      "name": "Box",
      "url": null
    },
    {
      "name": "DynamicBorder",
      "url": null
    }
  ],
  "applicability": [
    "Use this when background output must remain inspectable for reattachment."
  ],
  "category": "lifecycle",
  "categoryLabel": "Lifecycle and mounting",
  "consequences": [
    "Background output can be inspected after its first view closes.",
    "Retention differs by streaming mode and needs separate session ownership."
  ],
  "family": "lifecycle",
  "familyLabel": "Lifecycle",
  "id": "output-vault",
  "implementation": [
    "The source's retention rules differ by streaming mode.",
    "Closing a view is not the same as releasing the background job.",
    "Pi does not provide a retained PTY-session store."
  ],
  "intent": "Keep completed job output available after its foreground view closes.",
  "jsonUrl": "https://pi-tui.ratstack.sh/patterns/output-vault.json",
  "kind": "screen",
  "knownUses": [
    {
      "example": "dispatch-session-retention",
      "moreRefs": 0,
      "refs": [
        {
          "file": "overlay-component.ts",
          "lines": "455-480",
          "sha": "77df9a81",
          "url": "https://github.com/nicobailon/pi-interactive-shell/blob/77df9a8142a2f731635a4c5a01d68feecb5cced4/overlay-component.ts#L455-L480"
        },
        {
          "file": "overlay-component.ts",
          "lines": "642-690",
          "sha": "77df9a81",
          "url": "https://github.com/nicobailon/pi-interactive-shell/blob/77df9a8142a2f731635a4c5a01d68feecb5cced4/overlay-component.ts#L642-L690"
        }
      ],
      "repo": "pi-interactive-shell",
      "repoUrl": "https://github.com/nicobailon/pi-interactive-shell",
      "title": "Retain dispatch terminals for later completion queries"
    },
    {
      "example": "reattach-session-list",
      "moreRefs": 0,
      "refs": [
        {
          "file": "reattach-overlay.ts",
          "lines": "18-115",
          "sha": "77df9a81",
          "url": "https://github.com/nicobailon/pi-interactive-shell/blob/77df9a8142a2f731635a4c5a01d68feecb5cced4/reattach-overlay.ts#L18-L115"
        },
        {
          "file": "reattach-overlay.ts",
          "lines": "311-448",
          "sha": "77df9a81",
          "url": "https://github.com/nicobailon/pi-interactive-shell/blob/77df9a8142a2f731635a4c5a01d68feecb5cced4/reattach-overlay.ts#L311-L448"
        }
      ],
      "repo": "pi-interactive-shell",
      "repoUrl": "https://github.com/nicobailon/pi-interactive-shell",
      "title": "Reattach overlay supports bounded selection and deferred refresh"
    }
  ],
  "linkedFrom": [
    {
      "how": "keeps output beyond the view",
      "id": "process-shell",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/process-shell.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/process-shell.md",
      "name": "Process Shell",
      "url": "https://pi-tui.ratstack.sh/patterns/process-shell/"
    }
  ],
  "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/output-vault.md",
  "motivation": "Interactive Shell's non-streaming dispatch retains completed sessions so output remains queryable after foreground completion.",
  "name": "Output Vault",
  "participants": [
    {
      "name": "ctx.ui.custom",
      "role": "Mounts one interaction and resolves through done.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#use-custom-screens-and-overlays"
    },
    {
      "name": "ctx.ui.setWidget",
      "role": "Mounts, replaces or clears one near-editor widget.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "Background owner",
      "role": "Retains completed output independently of the foreground interaction.",
      "url": null
    }
  ],
  "pi": "1.0.3",
  "related": [
    {
      "how": "owns the temporary foreground interaction",
      "id": "process-shell",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/process-shell.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/process-shell.md",
      "name": "Process Shell",
      "url": "https://pi-tui.ratstack.sh/patterns/process-shell/"
    }
  ],
  "sampleCode": {
    "code": "// Output Vault: retain synthetic completed output independently of its view.\nimport { Box, Text, matchesKey, Key } from \"@earendil-works/pi-tui\";\nimport { DynamicBorder } from \"@earendil-works/pi-coding-agent\";\nimport type { PatternStory } from \"../../../src/pattern.ts\";\n\nexport const story: PatternStory = {\n  id: \"output-vault\", title: \"Output Vault\", kind: \"screen\",\n  apis: [\"custom\", \"setWidget\", \"Box\", \"DynamicBorder\"],\n  states: [\n    { id: \"background\", label: \"Background ownership\" },\n    { id: \"completed\", label: \"Completed output retained\", steps: [{ type: \"action\", name: \"complete\" }] },\n    { id: \"reattached\", label: \"Inspect retained output\", steps: [{ type: \"action\", name: \"inspect\" }] },\n  ],\n  setup({ ui, theme, action }) {\n    // Non-streaming synthetic job. Closing a view does not clear its vault.\n    const backgroundOwner = { state: \"running\", output: [\"PASS parser tokens\"] };\n    ui.setEditorText(\"Keep reviewing while checks run.\");\n    const showJob = () => ui.setWidget(\"vault\", [\n      theme.fg(\"accent\", \"Parser checks · \" + backgroundOwner.state),\n      theme.fg(\"muted\", backgroundOwner.state === \"running\"\n        ? \"Detached · output owned in background\" : \"Output retained · ready to inspect\"),\n    ], { placement: \"belowEditor\" });\n    action(\"complete\", () => {\n      backgroundOwner.state = \"completed\";\n      backgroundOwner.output.push(\"PASS empty input\", \"2 checks passed · exit 0\");\n      showJob();\n    });\n    action(\"inspect\", () => {\n      void ui.custom<void>((_tui, theme, _keys, done) => {\n        // A fresh view reads retained data; dispose never mutates the owner.\n        const panel = new Box(1, 0, line => theme.bg(\"customMessageBg\", line));\n        panel.addChild(new DynamicBorder(line => theme.fg(\"borderAccent\", line)));\n        panel.addChild(new Text(theme.fg(\"accent\", \"Retained parser output\") + \"\\n\" +\n          theme.fg(\"toolOutput\", backgroundOwner.output.join(\"\\n\")) + \"\\n\" +\n          theme.fg(\"muted\", \"Esc closes only this view\"), 0, 0));\n        panel.addChild(new DynamicBorder(line => theme.fg(\"borderAccent\", line)));\n        return {\n          render: width => panel.render(width), invalidate: () => panel.invalidate(),\n          handleInput: data => { if (matchesKey(data, Key.escape)) done(); },\n        };\n      }, { overlay: true, overlayOptions: { width: \"90%\", anchor: \"top-center\", row: 1, margin: 1 } });\n    });\n    showJob();\n  },\n};\n",
    "lang": "ts",
    "path": "stories/patterns/lifecycle/output-vault.ts"
  },
  "states": [
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-40-dark.a37871035181.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-40-light.a1ff9116df97.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-60-dark.d2d91aa91fe9.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-60-light.f882b8de4b79.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-80-dark.dd022aa24952.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-80-light.036efc15ccc5.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-120-dark.eafd83a55389.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Output Vault, Background ownership 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/output-vault/background-120-light.8752f11ed719.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a synthetic job handed off from its foreground view.",
      "id": "background",
      "label": "Background ownership",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-40-dark.227d44e36da1.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-40-light.1d90a47411a6.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-60-dark.b523eade83ea.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-60-light.dfcd28ab5f6f.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-80-dark.f0e6e860d13b.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-80-light.11c8a90c7a36.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-120-dark.cff8169e2298.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Output Vault, Completed output retained 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/output-vault/completed-120-light.c0d01a5b5849.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a completed job still available in its background widget.",
      "id": "completed",
      "label": "Completed output retained",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-40-dark.75f15ea6f667.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-40-light.2f33af759460.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-60-dark.8b844da9f22b.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-60-light.68d78459705b.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-80-dark.e1afeb88ce47.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-80-light.a9959ecc7aa1.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-120-dark.266769d5bd8e.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Output Vault, Inspect retained output 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/output-vault/reattached-120-light.56d55ef865c0.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Open a fresh view of its stored synthetic output.",
      "id": "reattached",
      "label": "Inspect retained output",
      "problems": []
    }
  ],
  "structure": "foreground view -> background owner\ncompleted job -> retained output\nreattach -> fresh view",
  "thumbnails": {
    "dark": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/output-vault/dark.abfef90a0b1b.webp"
    },
    "light": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/output-vault/light.099868faf378.webp"
    }
  },
  "url": "https://pi-tui.ratstack.sh/patterns/output-vault/",
  "widths": [
    40,
    60,
    80,
    120
  ]
}
