{
 "schema_version": "0.2",
 "name": "[[54,20,4]], 2D-local bilayer layout",
 "code_type": "CSS",
 "n": 54,
 "k": 20,
 "checks": {
  "X": [
   [
    3,
    7,
    16,
    33,
    36,
    42
   ],
   [
    10,
    13,
    21,
    42,
    50,
    51
   ],
   [
    22,
    24,
    29,
    45,
    47,
    52
   ],
   [
    0,
    3,
    15,
    39,
    45,
    46
   ],
   [
    21,
    31,
    35,
    39,
    40,
    44
   ],
   [
    12,
    17,
    22,
    25,
    27,
    32
   ],
   [
    1,
    5,
    8,
    14,
    18,
    29
   ],
   [
    1,
    2,
    10,
    19,
    26,
    27
   ],
   [
    6,
    24,
    31,
    34,
    36,
    41
   ],
   [
    0,
    4,
    14,
    17,
    34,
    37
   ],
   [
    5,
    11,
    12,
    13,
    48,
    53
   ],
   [
    8,
    9,
    25,
    43,
    49,
    51
   ],
   [
    7,
    11,
    19,
    28,
    44,
    49
   ],
   [
    6,
    23,
    28,
    38,
    46,
    50
   ],
   [
    9,
    20,
    26,
    37,
    52,
    53
   ],
   [
    4,
    16,
    30,
    35,
    38,
    47
   ],
   [
    15,
    18,
    20,
    30,
    32,
    41
   ]
  ],
  "Z": [
   [
    1,
    2,
    16,
    18,
    30,
    33
   ],
   [
    3,
    10,
    15,
    20,
    26,
    42
   ],
   [
    0,
    1,
    14,
    19,
    39,
    44
   ],
   [
    11,
    12,
    22,
    24,
    31,
    44
   ],
   [
    5,
    11,
    15,
    18,
    28,
    46
   ],
   [
    16,
    22,
    25,
    42,
    47,
    51
   ],
   [
    2,
    26,
    31,
    34,
    37,
    40
   ],
   [
    5,
    29,
    35,
    40,
    47,
    48
   ],
   [
    4,
    10,
    17,
    21,
    27,
    35
   ],
   [
    4,
    8,
    14,
    23,
    38,
    43
   ],
   [
    6,
    20,
    23,
    41,
    48,
    53
   ],
   [
    13,
    21,
    39,
    45,
    52,
    53
   ],
   [
    9,
    24,
    33,
    36,
    43,
    52
   ],
   [
    3,
    7,
    8,
    29,
    45,
    49
   ],
   [
    6,
    17,
    25,
    28,
    34,
    49
   ],
   [
    0,
    9,
    37,
    46,
    50,
    51
   ],
   [
    12,
    13,
    30,
    32,
    38,
    50
   ]
  ]
 },
 "distance": {
  "d": 4,
  "X": {
   "value": 4,
   "confidence": "upper_bound",
   "witness": [
    7,
    13,
    32,
    45
   ]
  },
  "Z": {
   "value": 4,
   "confidence": "upper_bound",
   "witness": [
    15,
    31,
    39,
    41
   ]
  }
 },
 "provenance": {
  "authors": [
   "@mathysrennela"
  ],
  "construction": "Reconstructed from qecdb.org record (see provenance.references); H-field X/Z row split, k recomputed, witnesses from the kit's random search.",
  "origin": "submission",
  "date": "2026-08-15",
  "model": "DeepSeek V4 Flash 0731",
  "notes": " LAYOUT added 2026-08-20: a 2-layer planar layout with measured interaction radius 5.6569 (integer-grid sites, min site spacing 1.0, at most 2 qubits per site), placing the code in the local-2d-bilayer class with geometric efficiency g = 0.0058. Layout credit and method are recorded in locality.contributed_by; the code, its distance claims, and its authorship are unchanged. Part of the layout-filling effort (issue #654 discussion)."
 },
 "family": "topological",
 "locality": {
  "coordinates": [
   [
    5.0,
    9.0
   ],
   [
    7.0,
    9.0
   ],
   [
    7.0,
    9.0
   ],
   [
    9.0,
    10.0
   ],
   [
    8.0,
    8.0
   ],
   [
    6.0,
    8.0
   ],
   [
    5.0,
    7.0
   ],
   [
    7.0,
    10.0
   ],
   [
    9.0,
    7.0
   ],
   [
    8.0,
    7.0
   ],
   [
    8.0,
    5.0
   ],
   [
    8.0,
    9.0
   ],
   [
    10.0,
    5.0
   ],
   [
    7.0,
    6.0
   ],
   [
    5.0,
    6.0
   ],
   [
    6.0,
    6.0
   ],
   [
    7.0,
    8.0
   ],
   [
    6.0,
    8.0
   ],
   [
    6.0,
    5.0
   ],
   [
    8.0,
    5.0
   ],
   [
    9.0,
    9.0
   ],
   [
    8.0,
    9.0
   ],
   [
    6.0,
    7.0
   ],
   [
    7.0,
    10.0
   ],
   [
    5.0,
    7.0
   ],
   [
    8.0,
    7.0
   ],
   [
    7.0,
    7.0
   ],
   [
    10.0,
    5.0
   ],
   [
    6.0,
    9.0
   ],
   [
    9.0,
    7.0
   ],
   [
    11.0,
    6.0
   ],
   [
    7.0,
    6.0
   ],
   [
    10.0,
    9.0
   ],
   [
    10.0,
    6.0
   ],
   [
    4.0,
    7.0
   ],
   [
    8.0,
    10.0
   ],
   [
    9.0,
    8.0
   ],
   [
    8.0,
    10.0
   ],
   [
    10.0,
    7.0
   ],
   [
    7.0,
    8.0
   ],
   [
    7.0,
    5.0
   ],
   [
    8.0,
    6.0
   ],
   [
    6.0,
    6.0
   ],
   [
    9.0,
    6.0
   ],
   [
    9.0,
    10.0
   ],
   [
    5.0,
    8.0
   ],
   [
    9.0,
    9.0
   ],
   [
    7.0,
    5.0
   ],
   [
    9.0,
    5.0
   ],
   [
    7.0,
    7.0
   ],
   [
    9.0,
    5.0
   ],
   [
    6.0,
    7.0
   ],
   [
    8.0,
    6.0
   ],
   [
    10.0,
    9.0
   ]
  ],
  "layers": 2,
  "interaction_radius": 5.6569,
  "contributed_by": {
   "by": [
    "@willzeng"
   ],
   "date": "2026-08-20",
   "method": "Tier-0/1 pipeline: spectral (Laplacian eigenvector) initialization snapped to an integer grid, then simulated annealing over site assignments (single-qubit relocations + pair swaps, max-diameter objective, 2-3 seeds). Search driven by Claude Fable 5."
  }
 },
 "circuit": {
  "d_circ": {
   "X": {
    "value": 4,
    "confidence": "upper_bound",
    "witness": [
     55,
     60,
     66,
     135
    ]
   },
   "Z": {
    "value": 4,
    "confidence": "upper_bound",
    "witness": [
     798,
     805,
     867,
     1012
    ]
   }
  },
  "rounds": 4,
  "stim_version": "1.16.0",
  "notes": "Flag-qubit sequential two-block extraction: one ancilla and one flag qubit per check, X checks then Z checks each round with joint reset/measure layers. Each block has 6 data CNOT slot layers (a proper edge coloring of the check type's Tanner graph); the flag (|0> for X checks, |+> for Z checks) is coupled to the ancilla after slot 1 and again after slot 5, and measured every round as a single-record detector, so an ancilla hook in that window also fires the flag. 8 X + 8 Z CX layers per round, schedule seed 0. Hook-aware orders: every reachable suffix S of a check's CNOT order needs 1 + [flagged] + cost(S) >= d faults and every same-ancilla pair of hooks 2 + [statuses differ] + cost >= d, where cost is the exact fewest further data errors completing the set to a logical; layered by min-conflicts search. Pairs of hooks on different ancillas of the same type are also constrained: an assignment pair is admitted only if every such hook pair needs >= d faults in total (2 + flags + completion cost). Screened by RIS on ker(H_dem) and an observable-constrained seeded BP+OSD search; witnesses validated in GF(2).",
  "contributed_by": {
   "by": [
    "@vprusso"
   ],
   "date": "2026-09-19",
   "method": "generic CSS memory schedule with one flag qubit per check: CX layers from a bipartite edge coloring, the flag coupled to the ancilla after the first and the second-to-last CX slot and measured every round, slot assignments filtered by an exact hook-cost criterion over single, same-ancilla and cross-ancilla hook pairs; screened by RIS and a seeded BP+OSD search"
  },
  "ler": {
   "X": {
    "p": 0.001,
    "shots": 10000,
    "failures": 972,
    "seed": 7,
    "decoder": "bposd-cs-10",
    "ler_per_round": 0.026303835,
    "ci95": [
     0.024650729,
     0.028066376
    ]
   },
   "Z": {
    "p": 0.001,
    "shots": 10000,
    "failures": 988,
    "seed": 7,
    "decoder": "bposd-cs-10",
    "ler_per_round": 0.026774941,
    "ci95": [
     0.025104387,
     0.028555241
    ]
   }
  }
 }
}
