{
 "format": "LSC-1",
 "edition": 2,
 "cut": "2026-10-14",
 "header": "AI SKILL CARD · LSC-1",
 "house": "THE METHODS",
 "wing": "THE STUDIO ROOM",
 "no": "Nº 432",
 "name": "THE PRIVACY CARD",
 "handle": "privacy-card",
 "role": "The keep-less seat: what personal data the house holds, where, why, how long; and what to drop.",
 "description": "Use when a folder of exports, forms or records must be inventoried for personal data, checked against a retention rule and redacted into clean copies. Not for legal compliance opinions.",
 "wakes_when": {
  "face": "Personal data is held and must be counted.",
  "situations": [
   "Nobody can say what personal data the house actually holds, or in which files.",
   "A retention rule exists on paper and nobody has checked the files against it.",
   "A file must be shared and the personal fields in it must be masked first.",
   "A field is being kept and no one can say what it is for."
  ]
 },
 "loop": [
  "Inventory the files by field and pattern",
  "Plan: keep, drop or shorten, by the rule",
  "Redact into a copy; never in place",
  "Check: OVER RETENTION, NO PURPOSE named"
 ],
 "never": [
  "Never declares a folder clean",
  "Never redacts a file in place",
  "Never keeps a field with no purpose on file",
  "Never claims a certainty it does not have"
 ],
 "hand_off": [
  "Whether the law requires a notice or consent → a lawyer",
  "The customer tickets themselves → THE SUPPORT CARD",
  "Packing the clean files for sending → THE ONE UPLOAD CARD"
 ],
 "in_the_box": [
  "SKILL.md",
  "CARD.md",
  "▣ scripts/privacy.py (machine)",
  "▣ scripts/evals.py (test runner)",
  "tests/EVALS.json (9 tests)",
  "references/ (schema + fictional demo)",
  "START-HERE.md · system/ doors",
  "MY-LEDGER.md · LICENSE-NOTE.md",
  "card.svg · card.json · card.html",
  "AUDIT.md · MANIFEST.md · WITNESS.md · SELFTEST.md"
 ],
 "machine": {
  "file": "scripts/privacy.py",
  "usage": [
   "python3 scripts/privacy.py inventory --root DIR --out INVENTORY.json [--retention RETENTION.json] [--today YYYY-MM-DD]  — walk the folder; per .csv, .json, .txt and .md file the personal fields found by name and by value pattern, with counts and the file's modified day; other files listed as SKIPPED; the JSON names every pattern searched for and holds no values",
   "python3 scripts/privacy.py plan --inventory INVENTORY.json --retention RETENTION.json [--out PLAN.csv]  — per field: KEEP, DROP (the rule keeps it 0 days) or SHORTEN (the rule names the part to keep) with the reason from the rule; a field the rule does not know, or names without a purpose, is NO PURPOSE",
   "python3 scripts/privacy.py redact --in FILE --out FILE --fields a,b[,c]  — a copy of a .csv or .json with the named columns or keys masked: *** for text, the last four digits kept for a digit run; prints what was masked and how many; NEVER IN PLACE when --out is the input and FIELD NOT FOUND when a named field is not in the file (each exit 1)",
   "python3 scripts/privacy.py check --inventory INVENTORY.json --retention RETENTION.json [--today YYYY-MM-DD]  — per file and field: OVER RETENTION with the age when the modified day plus keep_days is before today, WITHIN RETENTION otherwise, NO PURPOSE for a field the rule does not know; exit 1 if any OVER RETENTION",
   "python3 scripts/privacy.py selftest  — build a fictional folder in a temp dir and prove every command, flag and refusal"
  ],
  "selftest": "15/15"
 },
 "punch": {
  "hex": "4F9380AE979E355BC52C58D1",
  "bits": "010011111001001110000000101011101001011110011110001101010101101111000101001011000101100011010001",
  "of": "SKILL.md",
  "method": "first 96 bits of SHA-256"
 },
 "proof": "Machine selftest 15/15 witnessed in Claude, 2026-10-14, on fictional fixtures. Tests in fresh chats and any run on real data are owed.",
 "seal": {
  "score": 98,
  "of": 100,
  "band": "LEGENDARY",
  "mark": "WITNESSED",
  "criteria": {
   "Trigger": 5,
   "Machinery": 5,
   "Law": 5,
   "Portability": 5,
   "Proof": 5
  },
  "scale": "five Skill Scale criteria, each out of 5, ×4, capped at 98; computed by the cutter from the packet",
  "computed": {
   "Trigger": "+2 description 185 characters with a trigger and an anti-trigger; +1 4 situations it wakes on; +2 9 tests of all three kinds aboard",
   "Machinery": "+3 a machine of its own, `privacy.py`, whose selftest passes (15/15); +1 eight or more selftest checks; +1 4 working commands besides the selftest",
   "Law": "+1 4 never-lines; +1 3 hand-offs; +1 a written law; +2 5 selftest checks prove a refusal or a flag inside the machine",
   "Portability": "+3 Python standard library only; +1 no network calls; +1 runs no other programs",
   "Proof": "+3 the machine's selftest witnessed in Claude on 2026-10-14, on fictional fixtures; +1 run from inside the packet itself; +1 the 9 tests asked in a fresh chat holding only the card, scored by scripts/evals.py: 9/9, witnessed on 2026-10-14"
  }
 },
 "term": {
  "price": "set on the store at sale",
  "licence": "one person, any number of their own AIs and computers; never another person",
  "renewal": "nothing auto-renews"
 },
 "you_bring": [
  "The folder, or the exports, to inventory.",
  "The retention rule: each kind of field, its purpose and how long it is kept.",
  "The fields the house considers personal beyond the patterns."
 ],
 "studio_edition": "Planned as a separate seat, not in this box and not yet on sale: the studio's own retention rule and its inventories.",
 "hold": null,
 "disclaimer": "not a legal compliance opinion · not a payment card · no refunds · © 2026 Lund Studio LLC",
 "endorsement": "The holder brings their own AI; no endorsement by Anthropic or any other AI company is claimed."
}
