{
 "format": "LSC-1",
 "edition": 2,
 "cut": "2026-10-14",
 "header": "AI SKILL CARD · LSC-1",
 "house": "THE METHODS",
 "wing": "THE STUDIO ROOM",
 "no": "Nº 430",
 "name": "THE SUPPORT CARD",
 "handle": "support-card",
 "role": "The answering seat: every ticket answered in time, from the house's answers, within the policy.",
 "description": "Use when customer tickets must be triaged, answered from the house's own canned answers and timed against its reply policy. Not for writing the policy itself or for legal complaints.",
 "wakes_when": {
  "face": "A ticket is waiting for its answer.",
  "situations": [
   "Tickets have piled up and nobody knows which are oldest or overdue.",
   "A reply is needed now and the house has an answer written for exactly this.",
   "Someone wants to know how fast the house actually answers, week by week.",
   "A canned answer promises something the policy no longer allows."
  ]
 },
 "loop": [
  "Triage by age against the reply window",
  "Draft from a written answer, with the facts",
  "Refuse a promise the policy does not hold",
  "Log the closes; time to close, by week"
 ],
 "never": [
  "Never promises what the policy does not allow",
  "Never invents an answer not on file",
  "Never closes a ticket without a reply logged",
  "Never claims a certainty it does not have"
 ],
 "hand_off": [
  "Writing or changing the reply policy → the owner of the house",
  "A refund that needs a figure → THE PRICE CARD",
  "A complaint that names the law → a lawyer"
 ],
 "in_the_box": [
  "SKILL.md",
  "CARD.md",
  "▣ scripts/support.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/support.py",
  "usage": [
   "python3 scripts/support.py triage --tickets TICKETS.csv --policy POLICY.json [--now YYYY-MM-DDTHH:MM]  — open and waiting tickets oldest first: OVERDUE past the reply window, DUE inside the last quarter of it, FRESH otherwise; the counts",
   "python3 scripts/support.py draft --tickets TICKETS.csv --answers ANSWERS.json --policy POLICY.json --ticket ID --answer KEY [--out reply.txt]  — the written answer with {name}, {order_id} and {ticket_id} filled from the ticket, nothing added; PROMISE NOT IN POLICY or FIELD MISSING refused (exit 1); UNKNOWN TICKET or UNKNOWN ANSWER exit 2",
   "python3 scripts/support.py check --answers ANSWERS.json --policy POLICY.json  — every answer's promises against promises_allowed and its placeholders against the three fields; offenders listed; exit 1 if any",
   "python3 scripts/support.py close --tickets TICKETS.csv --ticket ID --at YYYY-MM-DDTHH:MM --answer KEY --out NEW.csv [--answers ANSWERS.json]  — a new tickets file with the ticket closed, the hour and the closing answer logged; NO REPLY LOGGED without --answer, NEVER IN PLACE when --out is the input, ALREADY CLOSED (each exit 1)",
   "python3 scripts/support.py log --tickets TICKETS.csv [--policy POLICY.json] [--weeks 8] [--now YYYY-MM-DDTHH:MM]  — per ISO week: tickets closed, median hours from received to closed, the share closed inside the reply window (NO POLICY without the policy file), n on every line; a close with no hour or no reply logged is named",
   "python3 scripts/support.py selftest  — build a fictional queue in a temp dir and prove every command, flag and refusal"
  ],
  "selftest": "18/18"
 },
 "punch": {
  "hex": "658DC90C9833B4EB14B7AA79",
  "bits": "011001011000110111001001000011001001100000110011101101001110101100010100101101111010101001111001",
  "of": "SKILL.md",
  "method": "first 96 bits of SHA-256"
 },
 "proof": "Machine selftest 18/18 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 182 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, `support.py`, whose selftest passes (18/18); +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 10 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 tickets, with the hour each arrived.",
  "The house's written answers.",
  "The reply policy: the window and the promises allowed."
 ],
 "studio_edition": "Planned as a separate seat, not in this box and not yet on sale: the studio's own answers for its cards and vessels.",
 "hold": null,
 "disclaimer": "not legal advice on a complaint · 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."
}
