{
 "about": {
  "method": "restriction-cloning (src/lib/seq/restriction-cloning.ts)",
  "oracle": "Products worked out by hand; Bio.Restriction 1.88 (REBASE-derived, never shipped) digests the inputs and round-trips each hand product back into the input cores; reverse complements by Biopython.",
  "recordedOn": "2026-10-10",
  "generatedBy": "pipeline/plasmid-map/restriction-cloning.py",
  "convention": "Each product is a circular top strand, 5'->3', any rotation; the TS engine's output is compared up to rotation and strand. A product is correct when, cut by the same enzymes, it falls apart into the insert core and the vector backbone core. Material is conserved: product length = sum of core lengths + each shared overhang once.",
  "ruling": "CSO, 10 October 2026 (docs/board/memos/2026-10-10-cso-wave2-cloning.md §2.1 M5)."
 },
 "positive": [
  {
   "id": "ecori-hindiii-directional",
   "note": "Directional clone: pUC-style vector opened at EcoRI and HindIII, its GGG stuffer replaced by a 9 bp insert. Different overhangs (AATT, AGCT) allow one orientation only.",
   "vector": {
    "sequence": "GAATTCGGGAAGCTTTTTTTTTTTT",
    "circular": true
   },
   "insert": {
    "sequence": "AGAATTCCCCATGCCCAAGCTTA",
    "circular": false
   },
   "enzymes": [
    "EcoRI",
    "HindIII"
   ],
   "products": [
    "GAATTCCCCATGCCCAAGCTTTTTTTTTTTT"
   ],
   "vectorOverhangs": [
    {
     "polarity": "5'",
     "seq": "AATT"
    },
    {
     "polarity": "5'",
     "seq": "AGCT"
    }
   ],
   "insertOverhangs": [
    {
     "polarity": "5'",
     "seq": "AATT"
    },
    {
     "polarity": "5'",
     "seq": "AGCT"
    }
   ]
  },
  {
   "id": "bamhi-single-ambiguous",
   "note": "Single-enzyme clone: a vector opened once at its only BamHI site, a BamHI-flanked insert ligated in. Identical GATC overhangs allow both orientations: two products, surfaced as ambiguous.",
   "vector": {
    "sequence": "GGATCCAAAAAAAAAAAA",
    "circular": true
   },
   "insert": {
    "sequence": "TGGATCCAAACCCGTGGATCCT",
    "circular": false
   },
   "enzymes": [
    "BamHI"
   ],
   "products": [
    "GGATCCAAACCCGTGGATCCAAAAAAAAAAAA",
    "GGATCCACGGGTTTGGATCCAAAAAAAAAAAA"
   ],
   "vectorOverhangs": [
    {
     "polarity": "5'",
     "seq": "GATC"
    }
   ],
   "insertOverhangs": [
    {
     "polarity": "5'",
     "seq": "GATC"
    },
    {
     "polarity": "5'",
     "seq": "GATC"
    }
   ]
  },
  {
   "id": "smai-blunt-ambiguous",
   "note": "Blunt clone: a vector opened once at SmaI, a SmaI-flanked insert ligated in. Blunt ends allow both orientations: two products.",
   "vector": {
    "sequence": "CCCGGGAAAAAAAAAAAA",
    "circular": true
   },
   "insert": {
    "sequence": "TCCCGGGAAACCCGTCCCGGGT",
    "circular": false
   },
   "enzymes": [
    "SmaI"
   ],
   "products": [
    "CCCGGGAAACCCGTCCCGGGAAAAAAAAAAAA",
    "CCCGGGACGGGTTTCCCGGGAAAAAAAAAAAA"
   ],
   "vectorOverhangs": [
    {
     "polarity": "blunt",
     "seq": ""
    }
   ],
   "insertOverhangs": [
    {
     "polarity": "blunt",
     "seq": ""
    },
    {
     "polarity": "blunt",
     "seq": ""
    }
   ]
  }
 ],
 "refusals": [
  {
   "id": "incompatible-overhangs",
   "note": "Vector cut with EcoRI+HindIII (AATT, AGCT ends); insert cut with BamHI (GATC ends). No end anneals: refused, never blunted or shown as a product.",
   "vector": {
    "sequence": "GAATTCGGGAAGCTTTTTTTTTTTT",
    "circular": true
   },
   "insert": {
    "sequence": "TGGATCCAAACCCGTGGATCCT",
    "circular": false
   },
   "enzymes": [
    "EcoRI",
    "HindIII",
    "BamHI"
   ],
   "reason": "incompatible-ends"
  },
  {
   "id": "bsai-off-linear-end",
   "note": "A BsaI site near the end of a short linear insert: its cut (GGTCTC(1/5)) falls beyond the molecule, so no fragment with that end is produced. Refused, never wrapped.",
   "vector": {
    "sequence": "GGATCCAAAAAAAAAAAA",
    "circular": true
   },
   "insert": {
    "sequence": "AAAAAAGGTCTC",
    "circular": false
   },
   "enzymes": [
    "BamHI",
    "BsaI"
   ],
   "reason": "off-end"
  }
 ]
}
