{
 "format": "LSC-1",
 "edition": 1,
 "cut": "2026-10-13",
 "header": "AI SKILL CARD · LSC-1",
 "house": "THE HOME GROUND",
 "wing": "THE MEETING HOUSE",
 "no": "Nº 1233",
 "name": "THE SECOND OPINION",
 "handle": "second-opinion-card",
 "role": "A person reads the work and signs: tickets, credentials, a hash chain, and no badge without a signature.",
 "description": "Use when AI-made work needs a named human reviewer's sign-off with a paper trail: intake, assignment by field, signature, verified badge. Not a substitute for licensed advice.",
 "wakes_when": {
  "face": "AI-made work needs a person's signed review.",
  "situations": [
   "A buyer wants a person to review AI-made work.",
   "A review is overdue.",
   "Someone asks whether a piece of work was reviewed by a person."
  ]
 },
 "loop": [
  "Take the work in; hash what was sent",
  "Assign a reviewer in the right field",
  "The reviewer signs with their own key",
  "Badge only what verifies, verdict shown"
 ],
 "never": [
  "Never says reviewed without a signature",
  "Never assigns outside the reviewer's field",
  "Never edits work after it is signed"
 ],
 "hand_off": [
  "Licensed advice → a licensed professional",
  "Listing claims → THE PROVENANCE FILE",
  "Scoring a studio's products → THE MOAT CARD"
 ],
 "in_the_box": [
  "SKILL.md",
  "CARD.md",
  "▣ scripts/secondopinion.py (machine)",
  "▣ scripts/evals.py (test runner)",
  "tests/EVALS.json (8 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/secondopinion.py",
  "usage": [
   "python3 scripts/secondopinion.py intake --ticket ID --field FIELD --scope TEXT --due-at YYYY-MM-DDTHH:MM --files F [F ...] [--submitted-at YYYY-MM-DDTHH:MM] [--tickets tickets.csv]  — new open ticket with a hash of the submitted files",
   "python3 scripts/secondopinion.py key <reviewer_id> [--keyring keys.json] [--tickets tickets.csv]  — makes the reviewer's secret key and stores it in the keyring (default keys.json beside tickets.csv); refuses to overwrite a key",
   "python3 scripts/secondopinion.py assign <ticket> <reviewer> [--tickets tickets.csv] [--reviewers reviewers.csv]  — assigns a reviewer; refuses one whose field does not match the ticket's",
   "python3 scripts/secondopinion.py sign <ticket> --reviewer ID --verdict approve|approve_with_changes|reject --notes FILE [--at YYYY-MM-DDTHH:MM] [--tickets ..] [--reviewers ..] [--signoffs signoffs.csv] [--keyring keys.json]  — writes the signoff with its hash chain and the reviewer's signature; refuses a reviewer not on file, not assigned, or with no key",
   "python3 scripts/secondopinion.py status [--now YYYY-MM-DDTHH:MM] [--tickets ..] [--reviewers ..] [--signoffs ..] [--keyring ..]  — every ticket: OVERDUE by due_at, due in, or signed (verified or not); exit 1 if any ticket is flagged",
   "python3 scripts/secondopinion.py badge <ticket> [--files F [F ...]] [--tickets ..] [--reviewers ..] [--signoffs ..] [--keyring ..]  — REVIEWED BY A PERSON — APPROVED or APPROVED WITH CHANGES (exit 0) only if a signoff exists and its chain and signature verify; REVIEWED BY A PERSON — REJECTED (not a pass, exit 1); otherwise NOT REVIEWED (exit 1)",
   "python3 scripts/secondopinion.py export [--tickets ..] [--reviewers ..] [--signoffs ..] [--keyring ..] [--out FILE]  — all records plus each ticket's verified badge state as JSON; never the keys",
   "python3 scripts/secondopinion.py selftest  — builds its own fixtures in a temporary folder and runs the numbered checks"
  ],
  "selftest": "24/24"
 },
 "punch": {
  "hex": "889611BDB7AE037279C914FE",
  "bits": "100010001001011000010001101111011011011110101110000000110111001001111001110010010001010011111110",
  "of": "SKILL.md",
  "method": "first 96 bits of SHA-256"
 },
 "proof": "Machine selftest 24/24 witnessed in Claude, 2026-10-13, on fictional fixtures. Tests in fresh chats and any run on real data are owed.",
 "seal": {
  "score": 96,
  "of": 100,
  "band": "LEGENDARY",
  "mark": "WITNESSED",
  "criteria": {
   "Trigger": 5,
   "Machinery": 5,
   "Law": 5,
   "Portability": 5,
   "Proof": 4
  },
  "scale": "five Skill Scale criteria, each out of 5, ×4, capped at 98; computed by the cutter from the packet",
  "computed": {
   "Trigger": "+2 description 175 characters with a trigger and an anti-trigger; +1 3 situations it wakes on; +2 8 tests of all three kinds aboard",
   "Machinery": "+3 a machine of its own, `secondopinion.py`, whose selftest passes (24/24); +1 eight or more selftest checks; +1 7 working commands besides the selftest",
   "Law": "+1 3 never-lines; +1 3 hand-offs; +1 a written law; +2 18 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-13, on fictional fixtures; +1 run from inside the packet itself; 0 of 1: the 8 tests asked in fresh chats with the card installed — owed"
  }
 },
 "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": [
  "Your roster of reviewers, their fields and credentials.",
  "A private key for each reviewer, kept by the desk.",
  "The work to review."
 ],
 "studio_edition": "Planned as a separate seat, not in this box and not yet on sale: a review desk with the studio's own reviewers.",
 "hold": null,
 "disclaimer": "not professional advice · 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."
}
