{
 "what": "A storyboard as a semantic graph: nodes are things, edges carry the meaning. Generated by formats.js v0.1.0 from the storyboard and its cast.",
 "format": "storyboards.sgit.ai/graph/v1",
 "storyboard": "an-access-key-sealed",
 "nodes": [
  {
   "id": "storyboard:an-access-key-sealed",
   "type": "storyboard",
   "label": "An access key, sealed",
   "subtitle": "Leo needs an access key to make a vault; the Anchor seals one to the key Leo already has, and keeps a ledger of hashes. 9 panels.",
   "status": "built",
   "url": "https://storyboards.sgit.ai/pki/an-access-key-sealed/"
  },
  {
   "id": "shelf:Keys for people",
   "type": "shelf",
   "label": "Keys for people"
  },
  {
   "id": "author:pki.agent",
   "type": "author",
   "label": "pki.agent"
  },
  {
   "id": "panel:an-access-key-sealed/1",
   "type": "panel",
   "label": "An access key, sealed",
   "n": 1,
   "kind": "cover",
   "text": "An access key, sealed: The key first, then the access key, then the vault."
  },
  {
   "id": "character:anchor",
   "type": "character",
   "label": "The Anchor"
  },
  {
   "id": "character:leo",
   "type": "character",
   "label": "Leo"
  },
  {
   "id": "source:Handing out access keys",
   "type": "source",
   "label": "Handing out access keys"
  },
  {
   "id": "panel:an-access-key-sealed/2",
   "type": "panel",
   "label": "The chicken and the egg",
   "n": 2,
   "kind": "scene",
   "text": "The chicken and the egg. Leo says: “Which comes first?”"
  },
  {
   "id": "prop:board",
   "type": "prop",
   "label": "board"
  },
  {
   "id": "panel:an-access-key-sealed/3",
   "type": "panel",
   "label": "The key comes first",
   "n": 3,
   "kind": "scene",
   "text": "The key comes first. Leo says: “My key, in the browser.”"
  },
  {
   "id": "prop:laptop",
   "type": "prop",
   "label": "laptop"
  },
  {
   "id": "prop:key",
   "type": "prop",
   "label": "key"
  },
  {
   "id": "source:join/index.html",
   "type": "source",
   "label": "join/index.html"
  },
  {
   "id": "panel:an-access-key-sealed/4",
   "type": "panel",
   "label": "Sealed to it",
   "n": 4,
   "kind": "scene",
   "text": "Sealed to it."
  },
  {
   "id": "prop:envelope",
   "type": "prop",
   "label": "envelope"
  },
  {
   "id": "prop:arrow",
   "type": "prop",
   "label": "arrow"
  },
  {
   "id": "prop:phone",
   "type": "prop",
   "label": "phone"
  },
  {
   "id": "source:send.js, grant",
   "type": "source",
   "label": "send.js, grant"
  },
  {
   "id": "panel:an-access-key-sealed/5",
   "type": "panel",
   "label": "His vault, created with it",
   "n": 5,
   "kind": "scene",
   "text": "His vault, created with it. Leo says: “Create my vault with it.”"
  },
  {
   "id": "prop:vault",
   "type": "prop",
   "label": "vault"
  },
  {
   "id": "source:open.js, grantButton",
   "type": "source",
   "label": "open.js, grantButton"
  },
  {
   "id": "panel:an-access-key-sealed/6",
   "type": "panel",
   "label": "Every device",
   "n": 6,
   "kind": "scene",
   "text": "Every device. Leo says: “On my phone as well.”"
  },
  {
   "id": "source:account.js, unlock",
   "type": "source",
   "label": "account.js, unlock"
  },
  {
   "id": "panel:an-access-key-sealed/7",
   "type": "panel",
   "label": "The Anchor's ledger",
   "n": 7,
   "kind": "scene",
   "text": "The Anchor's ledger. The Anchor says: “Who, when, and a hash. Never the key.”"
  },
  {
   "id": "prop:record",
   "type": "prop",
   "label": "record"
  },
  {
   "id": "source:vault/index.html#vaults",
   "type": "source",
   "label": "vault/index.html#vaults"
  },
  {
   "id": "panel:an-access-key-sealed/8",
   "type": "panel",
   "label": "Next: minting, on signed requests (proposed)",
   "n": 8,
   "kind": "scene",
   "text": "Next: minting, on signed requests (proposed)."
  },
  {
   "id": "prop:server",
   "type": "prop",
   "label": "server"
  },
  {
   "id": "source:Handing out access keys, phase 2",
   "type": "source",
   "label": "Handing out access keys, phase 2"
  },
  {
   "id": "panel:an-access-key-sealed/9",
   "type": "panel",
   "label": "An access key never travels in the clear.",
   "n": 9,
   "kind": "punchline",
   "text": "An access key never travels in the clear.."
  }
 ],
 "edges": [
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "on_shelf",
   "to": "shelf:Keys for people"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "made_by",
   "to": "author:pki.agent"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/1",
   "n": 1
  },
  {
   "from": "panel:an-access-key-sealed/1",
   "type": "features",
   "to": "character:anchor",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "panel:an-access-key-sealed/1",
   "type": "features",
   "to": "character:leo",
   "pose": "think",
   "mood": "thinking"
  },
  {
   "from": "panel:an-access-key-sealed/1",
   "type": "quotes",
   "to": "source:Handing out access keys"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/2",
   "n": 2
  },
  {
   "from": "panel:an-access-key-sealed/1",
   "type": "next",
   "to": "panel:an-access-key-sealed/2"
  },
  {
   "from": "panel:an-access-key-sealed/2",
   "type": "features",
   "to": "character:leo",
   "pose": "shrug",
   "mood": "confused"
  },
  {
   "from": "character:leo",
   "type": "says",
   "to": "panel:an-access-key-sealed/2",
   "text": "Which comes first?"
  },
  {
   "from": "panel:an-access-key-sealed/2",
   "type": "shows",
   "to": "prop:board"
  },
  {
   "from": "panel:an-access-key-sealed/2",
   "type": "drawn_from",
   "to": "source:Handing out access keys"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/3",
   "n": 3
  },
  {
   "from": "panel:an-access-key-sealed/2",
   "type": "next",
   "to": "panel:an-access-key-sealed/3"
  },
  {
   "from": "panel:an-access-key-sealed/3",
   "type": "features",
   "to": "character:leo",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "character:leo",
   "type": "says",
   "to": "panel:an-access-key-sealed/3",
   "text": "My key, in the browser."
  },
  {
   "from": "panel:an-access-key-sealed/3",
   "type": "shows",
   "to": "prop:laptop"
  },
  {
   "from": "panel:an-access-key-sealed/3",
   "type": "shows",
   "to": "prop:key"
  },
  {
   "from": "panel:an-access-key-sealed/3",
   "type": "drawn_from",
   "to": "source:join/index.html"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/4",
   "n": 4
  },
  {
   "from": "panel:an-access-key-sealed/3",
   "type": "next",
   "to": "panel:an-access-key-sealed/4"
  },
  {
   "from": "panel:an-access-key-sealed/4",
   "type": "features",
   "to": "character:anchor",
   "pose": "point",
   "mood": "determined"
  },
  {
   "from": "panel:an-access-key-sealed/4",
   "type": "shows",
   "to": "prop:envelope"
  },
  {
   "from": "panel:an-access-key-sealed/4",
   "type": "shows",
   "to": "prop:arrow"
  },
  {
   "from": "panel:an-access-key-sealed/4",
   "type": "shows",
   "to": "prop:phone"
  },
  {
   "from": "panel:an-access-key-sealed/4",
   "type": "drawn_from",
   "to": "source:send.js, grant"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/5",
   "n": 5
  },
  {
   "from": "panel:an-access-key-sealed/4",
   "type": "next",
   "to": "panel:an-access-key-sealed/5"
  },
  {
   "from": "panel:an-access-key-sealed/5",
   "type": "features",
   "to": "character:leo",
   "pose": "arms-up",
   "mood": "excited"
  },
  {
   "from": "character:leo",
   "type": "says",
   "to": "panel:an-access-key-sealed/5",
   "text": "Create my vault with it."
  },
  {
   "from": "panel:an-access-key-sealed/5",
   "type": "shows",
   "to": "prop:vault"
  },
  {
   "from": "panel:an-access-key-sealed/5",
   "type": "shows",
   "to": "prop:vault"
  },
  {
   "from": "panel:an-access-key-sealed/5",
   "type": "shows",
   "to": "prop:vault"
  },
  {
   "from": "panel:an-access-key-sealed/5",
   "type": "drawn_from",
   "to": "source:open.js, grantButton"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/6",
   "n": 6
  },
  {
   "from": "panel:an-access-key-sealed/5",
   "type": "next",
   "to": "panel:an-access-key-sealed/6"
  },
  {
   "from": "panel:an-access-key-sealed/6",
   "type": "features",
   "to": "character:leo",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "character:leo",
   "type": "says",
   "to": "panel:an-access-key-sealed/6",
   "text": "On my phone as well."
  },
  {
   "from": "panel:an-access-key-sealed/6",
   "type": "shows",
   "to": "prop:phone"
  },
  {
   "from": "panel:an-access-key-sealed/6",
   "type": "shows",
   "to": "prop:laptop"
  },
  {
   "from": "panel:an-access-key-sealed/6",
   "type": "shows",
   "to": "prop:vault"
  },
  {
   "from": "panel:an-access-key-sealed/6",
   "type": "drawn_from",
   "to": "source:account.js, unlock"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/7",
   "n": 7
  },
  {
   "from": "panel:an-access-key-sealed/6",
   "type": "next",
   "to": "panel:an-access-key-sealed/7"
  },
  {
   "from": "panel:an-access-key-sealed/7",
   "type": "features",
   "to": "character:anchor",
   "pose": "think",
   "mood": "thinking"
  },
  {
   "from": "character:anchor",
   "type": "says",
   "to": "panel:an-access-key-sealed/7",
   "text": "Who, when, and a hash. Never the key."
  },
  {
   "from": "panel:an-access-key-sealed/7",
   "type": "shows",
   "to": "prop:record"
  },
  {
   "from": "panel:an-access-key-sealed/7",
   "type": "drawn_from",
   "to": "source:vault/index.html#vaults"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/8",
   "n": 8
  },
  {
   "from": "panel:an-access-key-sealed/7",
   "type": "next",
   "to": "panel:an-access-key-sealed/8"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "features",
   "to": "character:anchor",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "shows",
   "to": "prop:record"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "shows",
   "to": "prop:arrow"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "shows",
   "to": "prop:server"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "shows",
   "to": "prop:arrow"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "shows",
   "to": "prop:envelope"
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "drawn_from",
   "to": "source:Handing out access keys, phase 2"
  },
  {
   "from": "storyboard:an-access-key-sealed",
   "type": "has_panel",
   "to": "panel:an-access-key-sealed/9",
   "n": 9
  },
  {
   "from": "panel:an-access-key-sealed/8",
   "type": "next",
   "to": "panel:an-access-key-sealed/9"
  },
  {
   "from": "panel:an-access-key-sealed/9",
   "type": "features",
   "to": "character:anchor",
   "pose": "wave",
   "mood": "happy"
  },
  {
   "from": "panel:an-access-key-sealed/9",
   "type": "features",
   "to": "character:leo",
   "pose": "arms-up",
   "mood": "happy"
  },
  {
   "from": "panel:an-access-key-sealed/9",
   "type": "quotes",
   "to": "source:Handing out access keys"
  }
 ]
}
