{
  "module": "library-privacy",
  "title": "Library privacy, for iSchools",
  "about": "The controls each worksheet names, by exhibit. Generated by tools/teach-build.js from the worksheet front matter; a lab whose build removes one of these breaks that worksheet.",
  "worksheets": [
    {
      "exhibit": "blind-relay",
      "repo": "systemslibrarian/crypto-lab-blind-relay",
      "url": "https://systemslibrarian.github.io/crypto-lab-blind-relay/",
      "worksheet": "https://crypto-lab.systemslibrarian.dev/teach/library-privacy/blind-relay/",
      "source_commit": "9de776c3565d",
      "checked": "2026-09-22",
      "anchors": [
        {
          "kind": "id",
          "value": "pipe-h"
        },
        {
          "kind": "id",
          "value": "query-input"
        },
        {
          "kind": "id",
          "value": "method-select"
        },
        {
          "kind": "id",
          "value": "run-btn"
        },
        {
          "kind": "id",
          "value": "next-btn"
        },
        {
          "kind": "id",
          "value": "all-btn"
        },
        {
          "kind": "id",
          "value": "step-status"
        },
        {
          "kind": "id",
          "value": "parties"
        },
        {
          "kind": "id",
          "value": "collude-h"
        },
        {
          "kind": "id",
          "value": "collude-switch"
        },
        {
          "kind": "id",
          "value": "collude-out"
        },
        {
          "kind": "id",
          "value": "corr-h"
        },
        {
          "kind": "id",
          "value": "crowd-btn"
        },
        {
          "kind": "id",
          "value": "crowd-pad"
        },
        {
          "kind": "id",
          "value": "crowd-join"
        },
        {
          "kind": "id",
          "value": "crowd-join-time"
        },
        {
          "kind": "id",
          "value": "crowd-out"
        },
        {
          "kind": "label",
          "value": "What padding does and does not fix"
        },
        {
          "kind": "id",
          "value": "break-h"
        },
        {
          "kind": "id",
          "value": "attack-wrongkey"
        },
        {
          "kind": "id",
          "value": "attack-tamper"
        },
        {
          "kind": "id",
          "value": "attack-leak"
        },
        {
          "kind": "id",
          "value": "attack-out"
        },
        {
          "kind": "id",
          "value": "cmp-h"
        },
        {
          "kind": "id",
          "value": "honesty-h"
        }
      ]
    },
    {
      "exhibit": "dp-noise",
      "repo": "systemslibrarian/crypto-lab-dp-noise",
      "url": "https://systemslibrarian.github.io/crypto-lab-dp-noise/",
      "worksheet": "https://crypto-lab.systemslibrarian.dev/teach/library-privacy/dp-noise/",
      "source_commit": "abca4df106c0",
      "checked": "2026-09-22",
      "anchors": [
        {
          "kind": "id",
          "value": "route-guided"
        },
        {
          "kind": "id",
          "value": "path"
        },
        {
          "kind": "id",
          "value": "seed-toggle"
        },
        {
          "kind": "label",
          "value": "Jargon, unpacked"
        },
        {
          "kind": "id",
          "value": "pr-aggregate"
        },
        {
          "kind": "id",
          "value": "leak-table"
        },
        {
          "kind": "id",
          "value": "leak-mode"
        },
        {
          "kind": "id",
          "value": "leak-run"
        },
        {
          "kind": "id",
          "value": "leak-out"
        },
        {
          "kind": "id",
          "value": "bound-hi"
        },
        {
          "kind": "id",
          "value": "bound-out"
        },
        {
          "kind": "id",
          "value": "bound-clip"
        },
        {
          "kind": "id",
          "value": "bound-reject"
        },
        {
          "kind": "id",
          "value": "bound-expand"
        },
        {
          "kind": "id",
          "value": "bound-decision-out"
        },
        {
          "kind": "id",
          "value": "pr-repeat"
        },
        {
          "kind": "id",
          "value": "avg-n"
        },
        {
          "kind": "id",
          "value": "avg-run"
        },
        {
          "kind": "id",
          "value": "avg-chart"
        },
        {
          "kind": "id",
          "value": "avg-out"
        },
        {
          "kind": "id",
          "value": "bud-budget"
        },
        {
          "kind": "id",
          "value": "ask-sum"
        },
        {
          "kind": "id",
          "value": "bud-out"
        },
        {
          "kind": "id",
          "value": "bud-ledger"
        },
        {
          "kind": "id",
          "value": "recap"
        },
        {
          "kind": "id",
          "value": "scope"
        }
      ]
    },
    {
      "exhibit": "patron-shield",
      "repo": "systemslibrarian/crypto-lab-patron-shield",
      "url": "https://systemslibrarian.github.io/crypto-lab-patron-shield/",
      "worksheet": "https://crypto-lab.systemslibrarian.dev/teach/library-privacy/patron-shield/",
      "source_commit": "93f3f7226fe7",
      "checked": "2026-09-22",
      "anchors": [
        {
          "kind": "id",
          "value": "book-0"
        },
        {
          "kind": "id",
          "value": "book-1"
        },
        {
          "kind": "id",
          "value": "book-2"
        },
        {
          "kind": "id",
          "value": "book-3"
        },
        {
          "kind": "id",
          "value": "catalog-toggle-btn"
        },
        {
          "kind": "id",
          "value": "selected-title-text"
        },
        {
          "kind": "id",
          "value": "query-btn"
        },
        {
          "kind": "id",
          "value": "simulation-note"
        },
        {
          "kind": "id",
          "value": "mask-s1"
        },
        {
          "kind": "id",
          "value": "mask-s2"
        },
        {
          "kind": "id",
          "value": "s1-indices"
        },
        {
          "kind": "id",
          "value": "s1-count"
        },
        {
          "kind": "id",
          "value": "s2-indices"
        },
        {
          "kind": "id",
          "value": "s2-count"
        },
        {
          "kind": "id",
          "value": "title-reveal"
        },
        {
          "kind": "id",
          "value": "correctness-badge"
        },
        {
          "kind": "id",
          "value": "final-book-title"
        },
        {
          "kind": "id",
          "value": "collude-btn"
        },
        {
          "kind": "id",
          "value": "collude-bit"
        },
        {
          "kind": "id",
          "value": "collude-title"
        },
        {
          "kind": "id",
          "value": "run-again-btn"
        },
        {
          "kind": "id",
          "value": "new-book-btn"
        },
        {
          "kind": "id",
          "value": "toggle-naive"
        },
        {
          "kind": "id",
          "value": "toggle-pir"
        },
        {
          "kind": "id",
          "value": "naive-display"
        },
        {
          "kind": "id",
          "value": "pir-display"
        },
        {
          "kind": "id",
          "value": "scaling-slider"
        },
        {
          "kind": "id",
          "value": "scaling-linear"
        },
        {
          "kind": "id",
          "value": "scaling-sqrt"
        }
      ]
    },
    {
      "exhibit": "shelf-oracle",
      "repo": "systemslibrarian/crypto-lab-shelf-oracle",
      "url": "https://systemslibrarian.github.io/crypto-lab-shelf-oracle/",
      "worksheet": "https://crypto-lab.systemslibrarian.dev/teach/library-privacy/shelf-oracle/",
      "source_commit": "66c860a4a312",
      "checked": "2026-09-22",
      "anchors": [
        {
          "kind": "id",
          "value": "tab-shelf"
        },
        {
          "kind": "id",
          "value": "tab-server"
        },
        {
          "kind": "id",
          "value": "tab-fold"
        },
        {
          "kind": "id",
          "value": "tab-versus"
        },
        {
          "kind": "id",
          "value": "tab-noise"
        },
        {
          "kind": "id",
          "value": "tab-scope"
        },
        {
          "kind": "id",
          "value": "shelf-item-0"
        },
        {
          "kind": "id",
          "value": "shelf-record-size"
        },
        {
          "kind": "id",
          "value": "shelf-size"
        },
        {
          "kind": "id",
          "value": "run-seed"
        },
        {
          "kind": "label",
          "value": "Pin this seed"
        }
      ]
    }
  ]
}
