{
 "format": "LSC-1",
 "edition": 2,
 "cut": "2026-10-14",
 "header": "AI SKILL CARD · LSC-1",
 "house": "THE METHODS",
 "wing": "THE STUDIO ROOM",
 "no": "Nº 22",
 "name": "THE ONE UPLOAD CARD",
 "handle": "one-upload-card",
 "role": "The publishing seat: a folder packed once into one file with its manifest, checked before it leaves.",
 "description": "Use when a folder of files must leave the house as one upload: a manifest with hashes, a check for secrets and size, a deterministic pack, a verify on the other side. Not for building the files.",
 "wakes_when": {
  "face": "A folder must leave as one file.",
  "situations": [
   "A folder is about to be uploaded and nobody can say afterwards which files were in it.",
   "A packed file came back changed and nobody knows which file moved.",
   "An upload bounced for size and the line was not known in advance.",
   "A key file nearly went out inside a pack."
  ]
 },
 "loop": [
  "Write the manifest: every file, its hash",
  "Check: SECRET, OVER THE LINE, before packing",
  "Pack once, the same bytes every time",
  "Verify on the far side: MISSING, CHANGED"
 ],
 "never": [
  "Never packs a file matching a secret pattern",
  "Never packs without a manifest",
  "Never packs over the line the person set",
  "Never claims a certainty it does not have"
 ],
 "hand_off": [
  "Masking personal data before it leaves → THE PRIVACY CARD",
  "A card folder into the one file a loader reads → THE PACKAGE CARD",
  "Naming the files so they cannot be confused → THE NAMING CARD"
 ],
 "in_the_box": [
  "SKILL.md",
  "CARD.md",
  "▣ scripts/onepack.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/onepack.py",
  "usage": [
   "python3 scripts/onepack.py manifest --root DIR --out MANIFEST.json [--exclude PATTERN ...]  — every file under DIR with its relative path, size and sha256, sorted; the exclusion patterns and the files and folders they left out recorded; totals; INSIDE THE FOLDER (exit 1) when --out lies under DIR",
   "python3 scripts/onepack.py check --root DIR [--limit-bytes N] [--secret-pattern P ...] [--exclude PATTERN ...]  — SECRET per file whose name matches .env, .env.*, *.pem, *.key, id_rsa*, contains secret or token, or a pattern given, or whose contents hold -----BEGIN, sk_live or an AKIA key id (the pattern and line named, never the value); OVER THE LINE when the folder's bytes exceed N, UNDER THE LINE otherwise, NO LINE SET without N; exit 1 on SECRET or OVER THE LINE",
   "python3 scripts/onepack.py pack --root DIR --out X.zip --manifest MANIFEST.json [--limit-bytes N] [--secret-pattern P ...]  — the deterministic zip of the folder with MANIFEST.json inside and X.MANIFEST.json beside, its sha256 printed; refused on SECRET, OVER THE LINE (the finished zip over N; nothing is trimmed or written), STALE MANIFEST (the folder no longer matches the manifest), INSIDE THE FOLDER, NAME TAKEN (the folder holds its own MANIFEST.json), each exit 1; NO MANIFEST exit 2",
   "python3 scripts/onepack.py verify --root DIR --manifest MANIFEST.json  — the folder against the manifest, file by file, the manifest's exclusions re-applied: MISSING, CHANGED (both sizes and hashes), EXTRA; exit 1 on any",
   "python3 scripts/onepack.py inspect --zip X.zip  — every entry with its sizes and date; the manifest inside compared with the entries: MANIFEST MISMATCH per file, NO MANIFEST INSIDE when there is none, DATES VARY when any entry is not dated 1980-01-01; the zip's sha256; exit 1 on any flag",
   "python3 scripts/onepack.py selftest  — build a fictional folder in a temp dir and prove every command, flag and refusal, and that the same folder packs to the same bytes twice"
  ],
  "selftest": "16/16"
 },
 "punch": {
  "hex": "7249AC638434B1D01E59EEDD",
  "bits": "011100100100100110101100011000111000010000110100101100011101000000011110010110011110111011011101",
  "of": "SKILL.md",
  "method": "first 96 bits of SHA-256"
 },
 "proof": "Machine selftest 16/16 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 194 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, `onepack.py`, whose selftest passes (16/16); +1 eight or more selftest checks; +1 5 working commands besides the selftest",
   "Law": "+1 4 never-lines; +1 3 hand-offs; +1 a written law; +2 11 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 to pack.",
  "The size line the destination allows.",
  "The secret patterns the house adds to the defaults."
 ],
 "studio_edition": "Planned as a separate seat, not in this box and not yet on sale: the studio's own packs for its theme and kit uploads.",
 "hold": null,
 "disclaimer": "not a security review · 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."
}
