Wanted · 标准译码器Wanted · Standard decoders
QEC-Bank 开放问题导读 · Wanted · 标准译码器QEC-Bank open-problem guide · Wanted · Standard decoders

有些码还没有
「标准译码器」
Some codes still have
no standard decoder

环面码和表面码的译码是一场配对游戏。在没有边界的环面码内部,一个单比特 Z 错误恰好点亮两盏警报灯(两颗星);X 错误同样点亮两盏,只是换成面;Y 错误同时是 X 和 Z,两种各亮两盏;而在表面码的边界上,一个错误可以只点亮一盏。本篇只看环面上的 Z 错误和星警报。灯两两连线,沿线修复。这个游戏能玩,靠的是两件事——警报成对出现,而且一盏警报可以单独移动。有一类码里这两件事都不成立。第 1 章的计数板玩具里,警报四个四个地出现,一盏灯想挪一步,必须拖着另一盏一起走;真正的 Haah 立方码更彻底:它内部那些不能靠局部操作凭空造出的警报,无论单个还是成团,都挪不动。这类码叫分形子码(fracton code),配对游戏在它们身上失效,而替代的游戏至今没有一个被公认为「标准」。QEC-Bank 于是在三张卡片的译码器一栏里诚实地写下 none-known,代价是这些码在电路级性能对比表里是空行(理想症状下的通用 CSSCSS 码:每条检查要么全是 X、要么全是 Z 的稳定子码。X 错误只被 Z 检查看见,Z 错误只被 X 检查看见,两半可以分开译码。 译码与蒙特卡洛跑法仍然可用,haah_cubic 也有研究级的 RG 与 BP-OSD 记录)。这一篇讲这道开放问题是什么、QEC-Bank 现在怎么凑合、为什么我们想要答案、一个合格的答案长什么样。 Decoding the toric and surface codes is a pairing game. Inside a toric code, which has no boundary, a single-qubit Z error lights exactly two alarm lamps (two stars); an X error also lights two, on faces instead; a Y error is X and Z at once and lights two of each; and at a surface-code boundary one error can light a single lamp. This guide looks only at Z errors and star alarms on the torus. Lamps are joined in pairs, and the repair runs along the join. The game works because of two facts: alarms come in pairs, and one alarm can be moved on its own. There is a class of codes where neither holds. On the counter-board toy of Chapter 1, alarms appear four at a time, and to move one lamp a step you must drag another with it; Haah's real cubic code goes further: the alarms inside it that no local operation can create from nothing cannot move at all, singly or as a cluster. These are fracton codes; the pairing game breaks on them, and no replacement game has yet been accepted as “standard”. So the QEC-Bank honestly writes none-known in the decoder field of three cards, at the price that those codes leave empty rows in the circuit-level comparison tables (generic CSSCSS code: a stabilizer code in which every check is either all X or all Z. X errors are seen only by Z checks and Z errors only by X checks, so the two halves can be decoded separately.-pivot decoding and code-capacity Monte Carlo still run, and haah_cubic has research-grade RG and BP-OSD records). This guide explains what the open problem is, how the QEC-Bank copes today, why we want the answer, and what a qualifying answer looks like.

前置:只需要《从高考数学到 Toric Code》——奇偶检查、稳定子、错误链的端点、给症状配对。别的一切(译码器、成熟度词、基准行、分形子)都从一个能手算的 4 × 4 计数板出发再命名。状态:open(Wanted 板原文)。 Prerequisite: only “From Exam Maths to the Toric Code”: parity checks, stabilizers, endpoints of error chains, pairing up syndromes. Everything else (decoder, maturity words, benchmark rows, fractons) is built from a 4 × 4 counter board you can compute by hand before it gets a name. Status: open (the word on the Wanted board).
目录Contents
第 0 章Chapter 0

速查回顾:五条随身事实Quick recap: five facts to carry

这一篇只依赖 Toric Code 教程里的五件事。每一条都给出原处的链接;记不清就点回去,读完再回来。 This guide relies on five things from the toric-code guide. Each comes with a link to where it was taught; if one is hazy, follow the link and come back.

#事实Fact原处Where it was taught
1一条奇偶检查问「这几个比特里有奇数个还是偶数个 1」(两个比特时就是「一样吗」),答案是 +1 或 −1;−1 叫警报(症状位)。A parity check asks “is the number of 1s among these bits odd or even?” (for two bits: “are they the same?”); the answer is +1 or −1, and −1 is an alarm (a syndrome bit).2.3 节section 2.3
2一个稳定子码就是一份互相兼容的检查清单;逻辑算符 = 与所有检查对易、却不是检查乘积的泡利串。A stabilizer code is a list of mutually compatible checks; a logical operator is a Pauli string that commutes with every check yet is not a product of checks.4.4 节section 4.4
3环面码里一串 Z 错误是一条链;报警的星恰是链的两个端点。闭合的链不报警。In the toric code a run of Z errors is a chain; the stars that fire are exactly the chain's two endpoints. A closed chain fires nothing.5.4 节section 5.4
4纠错 = 给症状配对:把亮着的星两两连线,沿连线施加 Z,警报全灭;连线选得短,就大概率修对。Correction = pairing up syndromes: join the lit stars in pairs, apply Z along the joins, and every alarm goes out; short joins are the likely repair.5.7 节section 5.7
5绕环面一圈的闭合链是逻辑算符,最短的一圈长 L,所以码距 d = L;L × L 环面码有 n = 2L² 个比特、k = 2 个逻辑比特。A closed chain winding around the torus is a logical operator and the shortest has length L, so the distance d = L; the L × L toric code has n = 2L² qubits and k = 2 logical qubits.5.8 节section 5.8 · 5.3 节section 5.3

记号:n = 物理量子比特数,k = 逻辑量子比特数,d = 码距,L = 环面的边长。本篇和 QEC-Bank 一样,k 直接记逻辑比特数。

Notation: n = number of physical qubits, k = number of logical qubits, d = distance, L = side length of the torus. Here, as in the QEC-Bank, k counts logical qubits directly.

第 1 章Chapter 1

这个问题用人话说是什么:配对游戏为什么能玩,以及它在哪里玩不下去The problem in plain words: why the pairing game works, and where it stops working

先在 18 个比特的环面码上亲手玩一遍配对游戏,看清它靠哪两件事成立。再换到一块 4 × 4 的计数板上,亲手验证这两件事都不成立。最后给「译码器」「标准」「基准行」三个词下定义,再念板上的原文。 First play the pairing game by hand on the 18-qubit toric code and see which two facts it rests on. Then move to a 4 × 4 counter board and verify by hand that both facts fail there. Finally define the three words “decoder”, “standard” and “benchmark row”, and read the board's wording.

1.1配对游戏为什么能玩:成对,且能动Why the pairing game works: in pairs, and mobile

下面是 L = 3 的环面码沙盘([[18, 2, 3]]双方括号是量子码的记法:n = 18 个物理比特,k = 2 个逻辑比特,码距 d = 3。)。做两件事。第一件:点一条边,放一个 Z 错误。恰好两盏灯亮——那条边的两个端点。第二件:再点一条与它相邻的边。亮灯仍是两盏,但其中一盏挪了一格:链变长了,端点跟着走,中间那个顶点碰到两个错误,2 是偶数,它安静下来。

Below is the sandbox of the toric code with L = 3 ([[18, 2, 3]]Double brackets denote a quantum code: n = 18 physical qubits, k = 2 logical qubits, distance d = 3.). Do two things. First: click one edge to place a Z error. Exactly two lamps light: the two endpoints of that edge. Second: click an adjacent edge. Still two lamps, but one of them has moved one step: the chain grew, the endpoint followed, and the vertex in the middle touches two errors; 2 is even, so it falls quiet.

这就是配对游戏成立的两条根据。成对:任何一条链恰有两个端点,所以警报总是偶数个,而且天然分成「一对一对」。能动:把链延长一条边,只有一盏灯挪位,代价 1。于是译码器面对一堆亮灯时,只需回答「谁和谁是一对」,再让每对之间走最短路——《译码器 · 高中数学版》2.1 节把它写成一张「症状图」:警报是点,最短距离是边;第 2 章的最小重量完美匹配算法在这张图上找最省的配法。人话:警报成对出现、能单独移动,「配对 + 最短路」才是一个有意义的问题。

These are the two grounds on which the pairing game stands. In pairs: any chain has exactly two endpoints, so alarms are always even in number and naturally fall into couples. Mobile: extending the chain by one edge moves exactly one lamp, at cost 1. So a decoder facing a set of lit lamps only has to answer “who is paired with whom” and let each pair take the shortest path; section 2.1 of “Decoders · High-School Edition” writes this as a “syndrome graph” with alarms as vertices and shortest distances as edges, and its Chapter 2 runs minimum-weight perfect matching on that graph to find the cheapest pairing. In plain words: because alarms come in pairs and move alone, “pair up, then shortest path” is a meaningful problem.

1.2玩具:一块警报不能单独走的计数板The toy: a counter board where an alarm cannot move alone

现在换一块板。4 × 4 = 16 个格子,每格里是一个 0 或 1(把它当作一个可以翻转的比特)。格子的角上放计数器:5 × 5 = 25 个。每个计数器只做一件事:数它周围(最多 4 个)格子里 1 的个数是奇还是偶,奇数就亮。这仍然是一条奇偶检查(第 0 章事实 1),只是每条检查碰的是「围着一个角的四格」,而不是「围着一个顶点的四条边」。全 0 时没有灯亮。翻转一个格子会怎样?

Now change boards. 4 × 4 = 16 cells, each holding a 0 or 1 (think of it as a bit you can flip). Counters sit on the corners of the cells: 5 × 5 = 25 of them. Each counter does one thing: it counts whether the 1s in the (at most 4) cells around it are odd or even, and lights up if odd. This is still a parity check (fact 1 of Chapter 0), only each check touches “the four cells around a corner” instead of “the four edges around a vertex”. With all cells 0 nothing lights. What happens when you flip one cell?

第 1 列col 1 第 2 列col 2 第 3 列col 3 第 4 列col 4 第 1 列col 1 第 2 列col 2 第 3 列col 3 第 4 列col 4 1 1 1 1 这一对右移 2 格this pair moved 2 steps right 不动stays 翻一个格子(第 2 列):它的 4 个角全亮Flip one cell (col 2): all 4 of its corners light 把它延长成第 2–4 列一排:只有两端的 4 个角亮Extend it to a row in cols 2–4: only the 4 end corners light

图注:琥珀色格子 = 翻成 1 的格子;小圆点 = 计数器;洋红大点 = 亮着的计数器(周围的 1 是奇数个)。左板翻了第 2 列的 1 格;右板把它向右延长成第 2–4 列的一排 3 格。两块板都亮 4 盏灯:左边那一对(绿色竖线)没动,右边那一对从第 2 列格子的右边挪到了第 4 列格子的右边(虚线圈是它原来的位置)。

Caption: amber cells = cells flipped to 1; small dots = counters; large magenta dots = lit counters (an odd number of 1s around them). The left board has 1 cell flipped, in column 2; the right board extends it to the right into a row of 3 cells, columns 2–4. Both boards show 4 lit lamps: the left pair (green bar) has not moved, and the right pair has moved from the right edge of column 2 to the right edge of column 4 (dashed circles mark where it was).

两件可以亲手核对的事。第一:翻一个格子,恰好它的 4 个角各多数到一个 1,于是 4 盏灯亮——不是 2 盏。翻右板那一排 3 格:中间的两条竖线上共 4 个角各被两个格子碰到,2 是偶数,它们安静;只有最左和最右的 4 个角亮。第二,也是关键:数一数任何一行计数器里亮着的个数。每个格子碰到它上方那一行计数器的恰好 2 个(左上角、右上角),也碰到下方那一行的恰好 2 个。所以不管翻了哪些格子,任何一行计数器里「被碰到的次数」总和是偶数,亮着的灯(被碰到奇数次的)也就总是偶数个。同理任何一列。

Two things you can check by hand. First: flipping one cell adds one 1 to each of its 4 corners, so 4 lamps light, not 2. Flip the row of 3 on the right board: the 4 corners on the two interior vertical lines are each touched by two cells, 2 is even, and they stay quiet; only the 4 corners at the far left and far right light. Second, and this is the key: count the lit counters in any one row of counters. Every cell touches exactly 2 counters in the counter row above it (its top-left and top-right corners) and exactly 2 in the row below. So whatever cells are flipped, the total number of “touches” in any counter row is even, hence the number of lit lamps in that row (those touched an odd number of times) is even too. Likewise for any column.

任何一行、任何一列计数器:亮灯数 ≡ 0 (mod 2)Any row and any column of counters: number of lit lamps ≡ 0 (mod 2)

记号:≡ 0 (mod 2) 读「除以 2 余 0」,即偶数。这条规则是本篇自己证的(上一段两句话),不出自任何 QEC-Bank 页面。

Notation: ≡ 0 (mod 2) reads “leaves remainder 0 when divided by 2”, i.e. even. This rule is proved in this guide (the two sentences above) and comes from no QEC-Bank page.

现在问 1.1 节的那两个问题。成对吗?不。假如整块板恰好只有两盏灯亮,它们必须在同一行(那一行要偶数),也必须在同一列(那一列要偶数)——同行同列的两个点是同一个点。所以「恰好两盏灯」不可能出现;最少是像图中那样的 4 盏,在一个矩形的四个角上。能单独动吗?不。要把一盏灯向右挪一格,得让旧位置灭、新位置亮而别处不变,那是一次「改变恰好两盏灯」的操作:两盏在同一行,那一行的奇偶不变,但它们在不同的两列,两列各变了一盏,变成奇数,违反列偶规则(向上挪一格则违反行偶规则)。允许的动法都是成对的,右板演示了其中一种:把左板那一格向右延长成一排,右边的一对一起向右挪了 2 格,左边的一对留在原地(图中绿色竖线)。人话:这块板上的警报没有「端点」的概念,一盏灯不是任何链的头;配对与最短路都失去了意义。下面的计数板可以亲手试:点格子翻转,右边一列和底下一行的数字是每一行、每一列计数器里亮着的盏数。

Now ask the two questions of section 1.1. In pairs? No. Suppose exactly two lamps were lit on the whole board: they must share a row (that row needs an even count) and share a column (so must that column), and two points in the same row and column are the same point. So “exactly two lamps” can never occur; the minimum is 4, at the corners of a rectangle, as in the figure. Mobile on its own? No. Moving one lamp a step to the right means turning the old position off and the new one on with nothing else changed: an operation that “changes exactly two lamps”: both are in the same row, so that row keeps its parity, but they are in two different columns, each of which changes by one lamp and turns odd, breaking the even-column rule (a step upward would break the even-row rule instead). Every allowed move goes in pairs, and the right board shows one of them: extend the left board's cell to the right into a row, and the pair on the right moves 2 steps right together while the pair on the left stays put (green bar in the figure). In plain words: on this board alarms have no “endpoints”; a lamp is not the head of any chain; pairing and shortest paths have lost their meaning. The counting board below lets you try: click a cell to flip it; the numbers down the right and along the bottom are the lit lamps in each row and each column of counters.

命名Naming

一个不能单独移动的激发(亮灯)叫分形子fracton:一类三维量子码里单个无法被任何局部操作搬运的激发。在 Haah 立方码里,凡是不能靠局部操作凭空造出的激发,无论单个还是几个组成的团,都挪不动(Aitchison 等 2023,arXiv:2308.00138,第 II.2.2–II.2.3 节)。(fracton);以此为特征的码叫分形子码。计数板是一个经典玩具,只为演示「不能单独动」这一件事;真正的分形子码是三维的量子码。玩具里有一点不能搬过去:计数板上成对的灯还能一起挪(上图右板),Haah 立方码里却不行,那里不能靠局部操作凭空造出的警报,无论单个还是成团都挪不动,硬要挪远,途中要额外点亮的警报随距离越来越多(Aitchison、Bulmash、Dua、Doherty、Williamson,“No Strings Attached: Boundaries and Defects in the Cubic Code”,2023,arXiv:2308.00138,第 II.2.2–II.2.3 节)。QEC-Bank 里的代表是 haah_cubic(Haah 立方码),卡片描述原文:“a pair of data qubits occupies every vertex of a periodic cubic lattice, and one X-type plus one inversion-related Z-type corner pattern is translated over every cube.” 它的卡片在 views 一栏(origin: curated,ref haah2011local)里把本节的结论写成了一句话:“Local Pauli faults create bounded clusters of cube defects, but isolated fracton charge cannot be transported by an ordinary Pauli string. Error patterns and neutral clusters therefore organize recursively rather than as pairs joined by shortest paths, motivating the family-specific renormalization decoder.” 人话:局部错误只造出小团的警报,单个警报搬不走;错误图案不再是「成对 + 最短路」,所以需要一种专门的译码器。

An excitation (a lit lamp) that cannot move on its own is called a fractonAn excitation, in a class of 3D quantum codes, that no local operation can transport on its own. In Haah's cubic code every excitation that cannot be created locally from nothing is immobile, alone or as a cluster of several (Aitchison et al. 2023, arXiv:2308.00138, sections II.2.2–II.2.3).; codes with this feature are fracton codes. The counter board is a classical toy meant to show one thing only, “cannot move alone”; real fracton codes are three-dimensional quantum codes. One feature of the toy does not carry over: on the counter board a pair of lamps can still move together (right board above), but not in Haah's cubic code, where the alarms that no local operation can create from nothing cannot move, alone or as a cluster; forcing one farther away lights more and more extra alarms along the way, in proportion to the distance (Aitchison, Bulmash, Dua, Doherty, Williamson, “No Strings Attached: Boundaries and Defects in the Cubic Code”, 2023, arXiv:2308.00138, sections II.2.2–II.2.3). The QEC-Bank representative is haah_cubic (Haah's cubic code), whose card description reads: “a pair of data qubits occupies every vertex of a periodic cubic lattice, and one X-type plus one inversion-related Z-type corner pattern is translated over every cube.” In its views field (origin: curated, ref haah2011local) the card states this section's conclusion in one sentence: “Local Pauli faults create bounded clusters of cube defects, but isolated fracton charge cannot be transported by an ordinary Pauli string. Error patterns and neutral clusters therefore organize recursively rather than as pairs joined by shortest paths, motivating the family-specific renormalization decoder.” In plain words: local errors only create small clusters of alarms, a single alarm cannot be carried away, error patterns are no longer “pairs plus shortest paths”, so a special-purpose decoder is needed.

卡片那句描述,逐词拆开(下图)。立方格子的每个顶点上放两个量子比特,叫比特 1 和比特 2;一个顶点上的算符写成两个字母,例如 ZI = 比特 1 上 Z、比特 2 上不动(I)。每个单位立方体配两条检查,各碰这个立方体 8 个角上的比特;每个角碰哪个比特,由一张固定的「角图案」(corner pattern)规定,同一张图案平移到每一个立方体上。图 (a) 是 Z 检查的角图案,图 (b) 是 X 检查的。两张图案「反演相关」(inversion-related):把 Z 图案的每个角换到立方体中心对面的那个角,再把每个顶点上的比特 1、比特 2 对调,Z 换成 X,就得到 X 图案。例:Z 检查在角 111 是 ZZ,X 检查就在对面的角 000 是 XX;Z 检查在角 101 是 ZI,X 检查在对面的角 010 是 IX。每条检查要么全是 X、要么全是 Z,所以它是 CSSCSS 码:每条检查要么全是 X、要么全是 Z 的稳定子码。X 错误只被 Z 检查看见,Z 错误只被 X 检查看见,两半可以分开译码。 码。再数一数:每条检查碰 8 个比特,每个比特被 4 条 Z 检查和 4 条 X 检查碰到,码做大时这两个数不变;「每条检查碰的比特数、每个比特参与的检查数都有一个不随码长增长的上限」正是 qLDPCquantum low-density parity-check,量子低密度奇偶校验码:码做大时,每条检查碰的比特数和每个比特参与的检查数都不超过一个固定上限。 码的定义。图 (c):一个比特上的 X 错误让 4 条 Z 检查亮起,它们的立方体中心排成一个四面体,又是四盏一组,和计数板一样没有「两端」。角图案取自 Haah 2011(arXiv:1101.1962)表 I 的 Code 1;我们按它在 L = 2、3、4 的周期格子上重算了 k,得到 6、2、14,与 2.1 节 QEC-Bank 登记的数值一致。

The card's description, word by word (figure below). Every vertex of the cubic lattice holds two qubits, qubit 1 and qubit 2; an operator on one vertex is written as two letters, e.g. ZI = Z on qubit 1, nothing (I) on qubit 2. Every unit cube carries two checks, each touching qubits at the cube's 8 corners; which qubit each corner touches is fixed by one “corner pattern”, and the same pattern is translated onto every cube. Panel (a) is the Z check's corner pattern, panel (b) the X check's. The two patterns are “inversion-related”: move each corner of the Z pattern to the corner opposite it through the cube's centre, swap qubit 1 and qubit 2 at every vertex, change Z to X, and you get the X pattern. Example: the Z check has ZZ at corner 111, so the X check has XX at the opposite corner 000; the Z check has ZI at corner 101, so the X check has IX at the opposite corner 010. Every check is all X or all Z, so this is a CSSCSS code: a stabilizer code in which every check is either all X or all Z. X errors are seen only by Z checks and Z errors only by X checks, so the two halves can be decoded separately. code. Now count: every check touches 8 qubits, every qubit is touched by 4 Z checks and 4 X checks, and neither number changes as the code grows; “the number of qubits per check and of checks per qubit stay below a limit that does not grow with the code” is exactly the definition of a qLDPCQuantum low-density parity-check code: as the code grows, the number of qubits each check touches and the number of checks each qubit takes part in both stay below a fixed limit. code. Panel (c): an X error on one qubit lights 4 Z checks, and their cube centres form a tetrahedron, four at a time again, with no “two ends”, as on the counter board. The corner pattern is Code 1 of Table I in Haah 2011 (arXiv:1101.1962); with it we recomputed k on periodic lattices with L = 2, 3, 4 and got 6, 2, 14, matching the QEC-Bank values in section 2.1.

(a) 一条 Z 检查(a) one Z check Z I 101 Z Z 111 I Z 100 Z I 110 I Z 001 Z I 011 I I 000 I Z 010 (b) 一条 X 检查(b) one X check X I 101 I I 111 I X 100 X I 110 I X 001 X I 011 X X 000 I X 010 z y x (c) 一个 X 错误亮 4 条 Z 检查(c) one X error lights 4 Z checks v 中心顶点比特 1 上的 X;洋红 = 亮的立方体中心X on qubit 1 of the centre vertex; magenta = lit cube centres 4 个亮点排成四面体the 4 lit centres form a tetrahedron 一个顶点 = 两个比特(左:比特 1,右:比特 2);蓝 Z、橙 X、空心 = 不碰(I);角旁小字 = 坐标 xyzone vertex = two qubits (left: qubit 1, right: qubit 2); blue Z, orange X, hollow = untouched (I); small digits = coordinates xyz

图注:(a)(b) 一个单位立方体上的两条检查。8 个角各画成两个比特(左 = 比特 1,右 = 比特 2),蓝 = Z,橙 = X,空心 = 不碰;角旁三位数字是角的坐标 xyz(x 朝左下,y 朝右,z 朝上,虚线是被挡住的棱)。(c) 围绕一个顶点的 8 个立方体:中心顶点比特 1 上的一个 X 错误让其中 4 个立方体的 Z 检查亮起(洋红点是这 4 个立方体的中心),4 点两两距离相等,构成四面体。角图案:Haah 2011 表 I 的 Code 1。

Caption: (a)(b) The two checks on one unit cube. Each of the 8 corners is drawn as two qubits (left = qubit 1, right = qubit 2); blue = Z, orange = X, hollow = untouched; the three digits beside a corner are its coordinates xyz (x down-left, y right, z up; dashed edges are hidden). (c) The 8 cubes around one vertex: an X error on qubit 1 of the centre vertex lights the Z checks of 4 of them (magenta dots are those cubes' centres), all at equal distances from one another, a tetrahedron. Corner pattern: Code 1 of Table I in Haah 2011.

检查站Checkpoint第 1 章Chapter 1
在 4 × 4 计数板上,某时刻恰好有 4 盏灯亮,位于一个 2 × 3 矩形的四个角。你能只翻一些格子,让左上角那盏灯向右挪一格、其余三盏不变吗?On the 4 × 4 counter board, exactly 4 lamps are lit, at the corners of a 2 × 3 rectangle. Can you flip some cells so that the top-left lamp alone moves one step to the right while the other three stay as they are?

对。「一盏灭、一盏亮、其余不变」改变恰好两盏灯;它们在同一行,所以那一行的亮灯数奇偶性不变……但它们在不同列,两列各变了一盏,两列的亮灯数都变成奇数。行偶列偶规则不允许。任何翻法都不行——规则对所有翻法成立。

Right. “One off, one on, nothing else” changes exactly two lamps. They share a row, so that row's parity survives, but they are in different columns, each of which changes by one lamp and becomes odd. The even-row-and-column rule forbids it, for every possible set of flips, because the rule holds for all flips.

再想:1.2 节证明了任何一行、任何一列计数器的亮灯数总是偶数,对任何翻法都成立。只挪一盏灯会让两列各多出或少掉一盏——奇数。

Think again: section 1.2 proved that every row and every column of counters always has an even number of lit lamps, for any set of flips. Moving one lamp alone changes two columns by one lamp each: odd.

1.3「译码器」的三个成熟度词,与一张「基准行」Three maturity words for “decoder”, and a “benchmark row”

一个译码器decoder:输入一组警报(症状),输出一个修复建议的算法。配对 + 最短路是环面码的译码器;QEC-Bank 的 foundations 存根一句话:“Syndrome decoding is hypothesis testing on cosets; matching and BP are its workhorses.”就是「看到警报,给出修复」的算法。QEC-Bank 给每个码的每条译码器记录配一个成熟度词,词表在 registry/decoders.yaml:standard(这一族码默认的基准译码器)、research-grade(研究级,能用但尚非公认工具)、none-known。最后一个词的登记原文:“Marks an honest algorithmic gap where the QEC-Bank has no broadly accepted decoder for the stated code and noise setting.” 注意结尾四个字:and noise setting。一条记录不是「这个码有没有译码器」,而是「这个码在这种噪声设定下有没有译码器」。同一张卡片可以对完美症状写 research-grade、对真实电路写 none-known——第 2 章就会看到。

A decoderAn algorithm that takes a set of alarms (a syndrome) and returns a proposed repair. Pairing plus shortest paths is the toric code's decoder; the QEC-Bank foundations stub says in one line: “Syndrome decoding is hypothesis testing on cosets; matching and BP are its workhorses.” is the algorithm that “sees alarms and proposes a repair”. The QEC-Bank attaches a maturity word to each decoder record of each code, from the vocabulary in registry/decoders.yaml: standard (the default benchmark decoder of the family), research-grade (usable, not yet an accepted tool), and none-known. The registered wording of the last: “Marks an honest algorithmic gap where the QEC-Bank has no broadly accepted decoder for the stated code and noise setting.” Note the last three words: and noise setting. A record does not say “does this code have a decoder” but “does this code have a decoder under this noise setting”. One card can say research-grade for perfect syndromes and none-known for real circuits, as Chapter 2 will show.

那什么是「基准行」(benchmark harness row)?QEC-Bank 的基准合同文件(docs/design-references/2026-07-30-benchmark-harness-contract.md)开头一段:“A decoder number is not a property of a check matrix. It belongs to a complete experiment: code instance, comparison level, noise model, circuit or schedule, decoder, observable, and inference procedure.” 一个译码器的表现数字(比如「表面码在最小重量匹配译码、完美测量、独立比特翻转下的阈值 10.3%」)不属于码本身,属于一次完整的实验。合同把这次实验的身份写成一个七元组:

So what is a “benchmark harness row”? The opening of the QEC-Bank benchmark contract (docs/design-references/2026-07-30-benchmark-harness-contract.md): “A decoder number is not a property of a check matrix. It belongs to a complete experiment: code instance, comparison level, noise model, circuit or schedule, decoder, observable, and inference procedure.” A decoder's performance number (say “the surface code's threshold of 10.3% under minimum-weight matching, perfect measurement and independent bit flips”) does not belong to the code; it belongs to one complete experiment. The contract writes that experiment's identity as a seven-part tuple:

(entry, instance, comparison_level,
noise id/version/params, decoder id/version/params,
observable, runner id/version)

记号:entry = 码的条目(如 haah_cubic),instance = 具体实例(如 L3_periodic),comparison_level = 三个比较层级之一(下文),noise = 噪声模型及参数,decoder = 译码器及参数,observable = 判定「逻辑错误」时看的量,runner = 跑实验的程序。合同原文:“Changing any element creates a new spec and a new result row.”

Notation: entry = the code's entry (e.g. haah_cubic), instance = the concrete instance (e.g. L3_periodic), comparison_level = one of three levels (below), noise = noise model and parameters, decoder = decoder and parameters, observable = the quantity inspected to declare a “logical error”, runner = the program that runs the experiment. Contract wording: “Changing any element creates a new spec and a new result row.”

一张基准行就是这样一个七元组加上它跑出的数字。三个比较层级comparison level:合同规定每张基准行恰有一个层级:code-capacity(数据比特出错、症状完美、无测量电路)、phenomenological(重复多轮、读数也会错)、circuit-level(写明电路或时间表、每个位置的噪声、探测器构造、译码器)。不同层级的数字永不放进同一张对比表。分别是 code-capacity、phenomenological、circuit-level——《译码器 · 高中数学版》6.2 节的账本里 10.3%、2.9%、0.57% 三行就分属这三层(都是表面码、最小重量匹配译码:完美测量下的独立比特翻转;读数也以同样概率出错;电路级、每一步的故障率),6.1 节解释过为什么任何阈值都得带五个限定项;这几个数字各自怎么来的,见 3.1 节的小账本。合同还写明第一版只实现了 code-capacity 一层(“T35 implements only code-capacity”),精确穷举的运行器上限是 10 个比特(qeclib/benchmarks.py:MAX_EXACT_QUBITS = 10)。BB 译码器教程 3.1 节逐字转录过 bivariate_bicycle 卡片的三条译码记录,是「一张卡片上的译码器一栏长什么样」的现成范例。人话:「标准译码器」= 一个被公认、可复现、能在指定噪声设定下跑出基准行的算法;「基准行」= 一次身份写全的实验及其数字。要产生一张基准行,需要的是一个框架能调用、能复现的译码器(带适配器,3.1 节),它不必已经是 standard;而且行按层级分开:某个层级上没有能跑的译码器,那个层级就没有行。

A benchmark row is such a seven-tuple plus the number it produced. The three comparison levelsThe contract gives every benchmark row exactly one level: code-capacity (data qubits err, syndromes perfect, no measurement circuit), phenomenological (repeated rounds, readouts may also err), circuit-level (a named circuit or schedule, per-location noise, detector construction, decoder). Numbers from different levels never share a comparison table. are code-capacity, phenomenological and circuit-level; the 10.3%, 2.9% and 0.57% lines (all surface code under minimum-weight matching: independent flips with perfect measurement; readouts also wrong at the same rate; circuit level, fault rate per step) of the ledger in section 6.2 of “Decoders · High-School Edition” belong to these three levels, and its section 6.1 explained why every threshold carries five qualifiers; where each of these numbers comes from is in the small ledger of section 3.1. The contract also states that the first version implements only the code-capacity level (“T35 implements only code-capacity”), and the exact runner stops at 10 qubits (qeclib/benchmarks.py: MAX_EXACT_QUBITS = 10). Section 3.1 of the BB decoders guide transcribes the three decoder records of the bivariate_bicycle card word for word, a ready example of “what a card's decoder field looks like”. In plain words: a “standard decoder” is an accepted, reproducible algorithm that can produce benchmark rows under the stated noise setting; a “benchmark row” is one fully identified experiment and its number. Producing a benchmark row needs a reproducible decoder the harness can call (one with an adapter, section 3.1); it need not already be standard. Rows are also split by level: a level with no runnable decoder has no rows.

Wanted 板原文 · statementWanted board, verbatim · statement

decoders-3d-fracton · “Standard decoders for 3D color / gauge color / fracton codes” · status: open · difficulty: open-research · related: []
“Production-quality decoders (and benchmark harness rows) for code families where none is standard.”

decoders-3d-fracton · “Standard decoders for 3D color / gauge color / fracton codes” · status: open · difficulty: open-research · related: []
“Production-quality decoders (and benchmark harness rows) for code families where none is standard.”

逐词翻译。Production-quality:不是论文里跑一次的原型,而是能被别人拿来、在这一族的任何实例上重复运行、结果可核对的程序——「production」是软件行业「上线可用」的意思。benchmark harness rows:上面定义的基准行,由 QEC-Bank 的基准框架(harness)产生。code families where none is standard:标题点名的三族——3D color(三维颜色码)、gauge color(规范颜色码,一类三维子系统颜色码)、fracton(分形子码)。related: []:这条 yaml 没有登记任何相关条目——第 2 章会看到,实际上有三张卡片用 none-known 指向了译码器的缺口,其中一张明确指向本条。人话:我们要的不是一篇「提出某种译码器」的论文,而是一个能跑、能复现、能在 QEC-Bank 对比表里生成一行数字的工具,给那些至今没有这种工具的码。

Word by word. Production-quality: not a prototype run once for a paper, but a program others can take, rerun on any instance of the family, and check the results of; “production” is the software-industry word for “ready for real use”. benchmark harness rows: the benchmark rows defined above, produced by the QEC-Bank benchmark framework (the harness). code families where none is standard: the three families in the title, 3D color codes, gauge color codes (a class of 3D subsystem color codes), and fracton codes. related: []: this yaml registers no related entries; Chapter 2 will show that three cards nevertheless point at a decoder gap with none-known, one of them explicitly at this item. In plain words: what is wanted is not a paper “proposing a decoder” but a tool that runs, reproduces, and generates a row of numbers in a QEC-Bank comparison table, for the codes that have no such tool today.

第 2 章Chapter 2

QEC-Bank 现在是怎么凑合的:三张卡片上的 none-knownHow the QEC-Bank copes today: none-known on three cards

没有标准译码器的时候,QEC-Bank 不假装有。它在卡片的译码器一栏写下 none-known,并注明是在哪种噪声设定下、哪一天的文献检索没有找到。先看板上的原文,再逐张打开写着这个词的卡片。 Without a standard decoder, the QEC-Bank does not pretend to have one. It writes none-known in the card's decoder field and records under which noise setting and on which date the literature search came up empty. Read the board's wording first, then open each card that carries the word.

Wanted 板原文 · current_proxyWanted board, verbatim · current_proxy

“status: none-known recorded per card; curated literature curves allowed with refs.”

“status: none-known recorded per card; curated literature curves allowed with refs.”

两个半句。recorded per card:缺口是逐张卡片、逐条噪声设定登记的,不是一句「分形子码没有译码器」的泛泛之谈。curated literature curves allowed with refs:允许把论文里的性能曲线抄进卡片,只要标明 curated(人工整理、未经 QEC-Bank 机器复算)并给出引文。我们在 2026-09-12 对 codes/*/card.yaml 全文检索 none-known,命中恰好三张卡片:da_color_2d、haah_cubic、quantum_expander。

Two half-sentences. recorded per card: the gap is registered card by card and noise setting by noise setting, not as a blanket “fracton codes have no decoder”. curated literature curves allowed with refs: performance curves from papers may be copied onto a card, provided they are marked curated (hand-collected, not recomputed by the QEC-Bank machine) and cite their source. On 2026-09-12 we searched every codes/*/card.yaml for none-known; exactly three cards match: da_color_2d, haah_cubic, quantum_expander.

2.1三张卡片,三个不同的缺口Three cards, three different gaps

下表逐字转录三张卡片的实例记录(codes/<slug>/instances.yaml,渲染在条目页 exports/site/entries/<slug>.html 的 “Reference instances” 表里)和 none-known 那一行的 gap.target——卡片自己说这个缺口归哪条 Wanted 项管。

The table transcribes word for word each card's instance records (codes/<slug>/instances.yaml, rendered in the “Reference instances” table of the entry page exports/site/entries/<slug>.html) and the gap.target of its none-known row, the card's own statement of which Wanted item owns the gap.

卡片Card实例与 [[n, k, d]](原文)Instances and [[n, k, d]] (verbatim)译码器一栏Decoder fieldnone-known 的 gap.targetgap.target of none-known
haah_cubic
Haah 立方码(分形子码)Haah cubic code (fracton)
L2_periodic: n=16 verified, k=6 verified, d=2 verified
L3_periodic: n=54 verified, k=2 verified, d=[3,9] claimed(lower: 3, upper: 9 (method: literature), ref haah2011local)
L4_periodic: n=128 verified, k=14 verified, d=[4,16] claimed
renormalization-group · research-grade
bp-osd · research-grade
none-known · none-known
wanted:decoders-3d-fracton
da_color_2d
二维动态自同构颜色码(Floquet 型)2D dynamic-automorphism color code (Floquet type)
table8_pauli_triangle: n=24 verified, k=1 verified, dynamic_k=1 verified, d=?none-known · none-knownwanted:floquet-fault-distance
quantum_expander
量子扩展码(超图积 CSS 码)Quantum expander code (hypergraph-product CSS)
complete_graph_5: n=125 verified, k=37 verified, d=3 verified
affine_plane_4: n=656 verified, k=170 verified, d=5 claimed(lower: 5, upper: 5 (method: HGP factor-codeword witness), ref tillich2009quantum)
css-pivot · research-grade
bp-osd · research-grade
none-known · none-known
wanted:qldpc-circuit-decoding

记号:d=[3,9] 是条目页对「下界 3、上界 9」的写法;d=? 是条目页对「未登记 d」的写法;dynamic_k = 整部测量时间表放完后仍存活的逻辑比特数(见Floquet 码距篇)。verified / claimed 是 QEC-Bank 的证据词:机器复算 / 照抄文献。

Notation: d=[3,9] is the entry page's rendering of “lower bound 3, upper bound 9”; d=? its rendering of “no d registered”; dynamic_k = the number of logical qubits still alive after the whole measurement schedule has run (see the Floquet fault-distance guide). verified / claimed are QEC-Bank evidence words: recomputed by machine / copied from the literature.

最后一列值得停一下。三张卡片都写了 none-known,但只有 haah_cubic 把缺口指向本条;da_color_2d 指向 Floquet 码距那一条(它的缺口首先是「探测器还没设计完」),quantum_expander 指向 qLDPC 电路级译码那一条(它有完美症状下的算法,缺的是真实电路)。所以本篇 yaml 的 related: [] 与卡片并不矛盾:卡片用 gap.target 反向指向 Wanted 板,而不是 Wanted 板正向列出卡片。另外注意 haah_cubic 的 k:L = 2 时 6,L = 3 时 2,L = 4 时 14——卡片描述原文 “Its encoded dimension depends arithmetically on the periodic length rather than following one size-independent degeneracy formula.” 人话:这族码连「存几个逻辑比特」都要逐个尺寸算,没有 k = 2 那样的通式。

The last column deserves a pause. All three cards say none-known, but only haah_cubic points its gap at this item; da_color_2d points at the Floquet fault-distance item (its gap is first of all “the detectors are not fully designed”), and quantum_expander at the qLDPC circuit-level decoding item (it has algorithms for perfect syndromes; what is missing is the real circuit). So this yaml's related: [] does not contradict the cards: cards point back at the Wanted board through gap.target, rather than the board listing cards. Note also haah_cubic's k: 6 at L = 2, 2 at L = 3, 14 at L = 4; the card's description: “Its encoded dimension depends arithmetically on the periodic length rather than following one size-independent degeneracy formula.” In plain words: even “how many logical qubits” must be computed size by size for this family; there is no general formula like k = 2.

2.2haah_cubic 的译码器一栏,逐字读The decoder field of haah_cubic, word for word

这是唯一一张把缺口指向本条的卡片,值得把三行全读完。每行有四个字段:id(译码器类型)、status(成熟度词)、noise(噪声设定)、notes(针对这个码的说明),外加 refs。

This is the only card whose gap points at this item, so all three rows are worth reading in full. Each row has four fields: id (decoder type), status (maturity word), noise (noise setting), notes (remarks specific to this code), plus refs.

#id · statusid · statusnoise(原文)noise (verbatim)notes(原文)notes (verbatim)refs
0renormalization-group · research-grade“thermal or phenomenological local Pauli faults with perfect access to the violated cubic-code stabilizers”“The decoder clusters defects over increasing length scales and locally neutralizes clusters compatible with bounded errors. Its reported memory behavior belongs to the specified thermal dynamics and canonical cubic family; it is not a circuit-level repeated-measurement threshold.”duclos2010fast, bravyi2011selfcorrection, haah2011local
1bp-osd · research-grade“code-capacity Pauli noise represented only by the exported sparse binary CSS matrix”“BP-OSD is a generic qLDPC matrix baseline, not a theorem about fracton syndrome geometry. Its performance and tuning cannot be transferred from unrelated sparse codes to this periodic family without a dedicated benchmark.”roffe2020decoding, panteleev2021degenerate
2none-known · none-known“a fully specified repeated syndrome-extraction circuit with data, measurement, leakage, and correlated hardware faults”“No primary circuit-level threshold for exact CSS Code 1 was found in the dated search completed on 2026-08-09. The actionable scalable-decoder and benchmark gap is routed to wanted:decoders-3d-fracton.”haah2011local, bravyi2011selfcorrection

三行各说一件事。第 0 行是分形子码专用的重整化群译码器renormalization-group (RG) decoder:把警报按尺度逐级归并成「团」,在每一级用局部规则消掉能消的团,再放大尺度重来。是 1.2 节那句「error patterns organize recursively」的算法化。——1.2 节引文里 “motivating the family-specific renormalization decoder” 指的就是它。它的噪声设定是热噪声(码与一个有温度的环境接触,错误按热运动的概率不断产生)或现象学噪声、且「能完美读到被违反的稳定子」;卡片明说它不是电路级阈值。第 1 行是 qLDPC 码的通用基线 BP-OSD(先在检查与比特之间反复传递「这一位出错的可能性」的消息,即置信传播 BP;不收敛时按可信度排序、解一组线性方程补齐,即有序统计译码 OSD;BB 译码器教程第 2 章讲过它),噪声设定是最简单的 code-capacity;卡片警告:在别的码上调好的参数不能搬过来,「without a dedicated benchmark」——而 QEC-Bank 并没有登记这样一次基准。第 2 行就是缺口:在「写全的重复症状提取电路 + 数据、测量、泄漏(量子比特跑出 0、1 两个能级之外)、关联硬件故障」这一设定下,2026-08-09 完成的文献检索没有找到任何原始的电路级阈值。人话:有两种研究级算法可用,但都停在「症状完美」的层级;一旦让测量也会错、让电路进来,这个码没有任何译码记录。

Each row says one thing. Row 0 is the fracton-specific renormalization-group decoderRG decoder: merges alarms into “clusters” scale by scale, removes at each level the clusters a local rule can remove, then enlarges the scale and repeats. It is the algorithmic form of “error patterns organize recursively” from section 1.2.; the phrase “motivating the family-specific renormalization decoder” in the quotation of 1.2 refers to it. Its noise setting is thermal noise (the code sits in contact with an environment at some temperature and errors keep arising with thermal probabilities) or phenomenological noise with “perfect access to the violated stabilizers”, and the card states plainly that it is not a circuit-level threshold. Row 1 is the generic qLDPC baseline BP-OSD (messages about “how likely this bit is wrong” are passed back and forth between checks and bits, belief propagation or BP; when that does not settle, the bits are ranked by confidence and a set of linear equations is solved to finish, ordered-statistics decoding or OSD; taught in Chapter 2 of the BB decoders guide) under the simplest setting, code-capacity; the card warns that parameters tuned on other codes cannot be carried over “without a dedicated benchmark”, and the QEC-Bank has registered no such benchmark. Row 2 is the gap: under “a fully specified repeated syndrome-extraction circuit with data, measurement, leakage, and correlated hardware faults” (leakage: a qubit escaping its two levels 0 and 1), the literature search completed on 2026-08-09 found no primary circuit-level threshold. In plain words: two research-grade algorithms exist, but both stop at the “perfect syndrome” level; once measurements may err and the circuit enters, this code has no decoder record at all.

「逐级归并、局部消掉」在计数板上走一遍。下面是按 RG 思路写的一个玩具版本,只为让「团」「中性」「尺度」三个词有具体的样子,不是 Bravyi 与 Haah 在 Haah 立方码上用的具体算法。规则:在尺度 r 上,把彼此距离不超过 r 的亮灯连成团(距离取行差与列差中较大的那个);对每个团,只准翻四个角都落在这团灯外接矩形里的格子,若有一种翻法恰好把这团灯全部熄灭、别处不变,这团就叫中性,照此翻掉;不中性的团留到下一个更大的尺度。例子(下图):真实错误是 3 个格子,译码器只看见 8 盏灯(①)。尺度 1:左上 4 盏连成一团,翻 1 格就灭,是中性的;底下 4 盏在尺度 1 上分成两团,每团是竖着的两盏,每一行里只有 1 盏,而任何翻法都让每行的亮灯数改变偶数,所以灭不掉,不中性,留下(②)。尺度 2:这两团相距 2,合成一团,翻框里的 2 格即全部熄灭(③)。三次翻格合起来恰好是真实错误。Haah 立方码上的 RG 译码器也是这样逐级放大尺度、消掉中性的团,只是团里是立方体上的警报,「中性」要按 1.2 节那张角图案来判断,而错误可能长成跨很多尺度的分形形状;这一部分超出本篇,只做描述。

“Cluster over growing scales, neutralize locally”, walked through on the counter board. What follows is a toy version written in the RG spirit, only to give the words “cluster”, “neutral” and “scale” a concrete shape; it is not the actual algorithm Bravyi and Haah use on Haah's cubic code. Rule: at scale r, join lit lamps that are at most r apart into clusters (distance = the larger of the row difference and the column difference); for each cluster, only cells whose four corners all lie in the cluster's bounding rectangle may be flipped, and if some choice of flips turns off exactly that cluster and nothing else, the cluster is neutral and is flipped away; clusters that are not neutral wait for the next, larger scale. Example (figure below): the true error is 3 cells, and the decoder sees only 8 lamps (①). Scale 1: the top-left 4 lamps form one cluster that a single flip clears, so it is neutral; the bottom 4 lamps split at scale 1 into two clusters, each a vertical pair with 1 lamp per row, and any set of flips changes each row by an even number of lamps, so they cannot be cleared: not neutral, kept (②). Scale 2: the two clusters are 2 apart, merge into one, and flipping the 2 cells inside the frame clears them all (③). The three flips together are exactly the true error. The RG decoder on Haah's cubic code likewise enlarges the scale step by step and removes neutral clusters, except that the clusters are alarms on cubes, “neutral” is judged by the corner pattern of section 1.2, and errors can grow into fractal shapes spanning many scales; that part is beyond this guide and is only described.

① 开始:译码器只看见 8 盏灯① Start: the decoder sees 8 lamps only (真实错误是 3 个格子,译码器不知道)(the true error is 3 cells, unknown to the decoder) ② 尺度 1:灯距 ≤ 1 的连成团② Scale 1: lamps at distance ≤ 1 join 中性:翻 1 格即灭neutral: 1 flip clears it 虚线两团各是竖着的两盏:each dashed cluster is a vertical pair: 行里各 1 盏,翻不灭 → 留下one lamp per row, cannot clear → keep ③ 尺度 2:剩下的 4 盏连成一团③ Scale 2: the remaining 4 join 中性:翻框里 2 格,全部熄灭neutral: flip the 2 cells inside, all go out 修复 = 3 格,恰好就是原来的错误repair = 3 cells, exactly the original error = 译码器决定翻的格子= a cell the decoder decides to flip = 亮着的计数器= a lit counter = 可以局部消掉的团(中性)= a cluster that can be cleared locally (neutral) = 不中性、留到下一尺度的团= a cluster that is not neutral, kept for the next scale

图注:4 × 4 计数板,洋红 = 亮着的计数器,琥珀 = 译码器决定翻的格子,绿框 = 判为中性、就地消掉的团,灰虚线框 = 不中性、留到下一尺度的团。这是说明思路的玩具,不是 Haah 立方码上的 RG 算法本身。

Caption: the 4 × 4 counter board; magenta = lit counters, amber = cells the decoder decides to flip, green frame = a cluster judged neutral and removed on the spot, grey dashed frame = a cluster that is not neutral and waits for the next scale. A toy to show the idea, not the RG algorithm on Haah's cubic code itself.

另外两张卡片的 none-known 行(原文)The none-known rows of the other two cards (verbatim)

da_color_2d,noise:“the complete padded Pauli-triangle schedule with data faults, measurement faults, boundary docking faults, and repeated gate cycles”;notes:“The primary work constructs candidate bulk and boundary detectors but leaves completeness at the Y boundary and a full numerical fault-tolerance analysis open. No protocol-specific circuit-level threshold or standard decoder was found in the search completed on 2026-08-09. General Floquet distance and decoherence frameworks do not fill this exact-family benchmark.” refs:davydova2024dynamic, blackwell2025distance, tang2025floquet。这是它译码器一栏的唯一一行。

da_color_2d, noise: “the complete padded Pauli-triangle schedule with data faults, measurement faults, boundary docking faults, and repeated gate cycles”; notes: “The primary work constructs candidate bulk and boundary detectors but leaves completeness at the Y boundary and a full numerical fault-tolerance analysis open. No protocol-specific circuit-level threshold or standard decoder was found in the search completed on 2026-08-09. General Floquet distance and decoherence frameworks do not fill this exact-family benchmark.” refs: davydova2024dynamic, blackwell2025distance, tang2025floquet. It is the only row in that card's decoder field.

quantum_expander,noise:“a complete repeated syndrome-extraction circuit with data, measurement, routing, leakage, and correlated hardware faults”;notes:“No exact-family circuit-level threshold or repeated-syndrome experimental decoder was found in the primary-source search completed on 2026-08-09. This dated gap does not erase the perfect-syndrome small-set-flip theorem.” refs:leverrier2015quantumexpander, delfosse2021measurement。它前两行是 css-pivot(“only a reproducible matrix baseline … not small-set flip”)与 bp-osd,都是 research-grade、都在完美症状层级;卡片还注明「the current controlled decoder registry has no distinct benchmark adapter for it」——这族码自己的 small-set-flip 算法(qLDPC 教程 6.4 节)在 QEC-Bank 基准框架里也还没有适配器。

quantum_expander, noise: “a complete repeated syndrome-extraction circuit with data, measurement, routing, leakage, and correlated hardware faults”; notes: “No exact-family circuit-level threshold or repeated-syndrome experimental decoder was found in the primary-source search completed on 2026-08-09. This dated gap does not erase the perfect-syndrome small-set-flip theorem.” refs: leverrier2015quantumexpander, delfosse2021measurement. Its first two rows are css-pivot (“only a reproducible matrix baseline … not small-set flip”) and bp-osd, both research-grade and both at the perfect-syndrome level; the card adds that “the current controlled decoder registry has no distinct benchmark adapter for it”: the family's own small-set-flip algorithm (section 6.4 of the qLDPC guide) has no adapter in the QEC-Bank benchmark framework either.

诚实边界Honest boundary

板上说 “curated literature curves allowed with refs”。我们查了三张卡片:没有一张登记了任何性能曲线或阈值数字——haah_cubic 第 0 行只说 RG 译码器「reported memory behavior belongs to the specified thermal dynamics」,没有抄数字。所以「允许」的那件事,目前一次也没有用上。本篇也不从论文里补任何数字。

The board says “curated literature curves allowed with refs”. We checked the three cards: none registers any performance curve or threshold number; row 0 of haah_cubic only says the RG decoder's “reported memory behavior belongs to the specified thermal dynamics”, copying no figure. So the thing that is “allowed” has so far never been used. This guide adds no number from the papers either.

2.3板上点名的三族,QEC-Bank 里各有什么The three families named on the board: what the QEC-Bank holds for each

标题说 “3D color / gauge color / fracton codes”。我们对 codes/ 下的全部条目目录名做了检索(2026-09-12),按族报告,不多不少:

The title says “3D color / gauge color / fracton codes”. We searched every entry directory name under codes/ (2026-09-12) and report family by family, nothing more and nothing less:

板上的族Family on the boardQEC-Bank 条目(slug)QEC-Bank entries (slug)译码器一栏的状态State of the decoder field
3D color(三维颜色码)3D color没有名为 color3d 或类似的条目。现有的 color、color_666、color_488 都是二维颜色码。No entry named color3d or similar. The existing color, color_666, color_488 are 2D color codes.两张实例卡(quantum_reed_muller_15、eight_three_two),无家族条目。color_666 登记了三行 mwpm,均 research-grade。Two instance cards (quantum_reed_muller_15, eight_three_two), no family entry. color_666 registers three mwpm rows, all research-grade.
gauge color(规范颜色码)gauge color3d_subsystem_color(三维子系统颜色码,规范颜色码的另一个名字3D subsystem color code, the other name of the gauge color code)空。卡片描述原文:“Decoder, operation, and realization facets remain unsurveyed.” 这是一个 T1 级骨架条目。Empty. Card description: “Decoder, operation, and realization facets remain unsurveyed.” A T1-level skeleton entry.
fracton(分形子码)fractonhaah_cubic(T2);xcube、chamon、checkerboard(T1)haah_cubic:2.2 节的三行。其余三个:空,描述里同样写着 “remain unsurveyed”。haah_cubic: the three rows of 2.2. The other three: empty, their descriptions likewise saying “remain unsurveyed”.

记号:T1 / T2 是 QEC-Bank 条目的完成度等级(条目页的 “Scoped completion” 一栏):T1 = 只有可执行的检查矩阵骨架;T2 = “Researched operational entry”,形式核心、操作与关系已研究过。slug = 条目目录名。

Notation: T1 / T2 are QEC-Bank entry completion tiers (the “Scoped completion” block of an entry page): T1 = only an executable check-matrix skeleton; T2 = “Researched operational entry”, formal core, operations and relations researched. slug = the entry's directory name.

于是要分清两种「没有」。空的译码器一栏(xcube、3d_subsystem_color 等)意思是「还没有人去查」——unsurveyed;none-known 的意思是「查过了,在这个噪声设定下没找到,检索日期是哪天」。只有后者才算登记了缺口。板上「3D color」一族在 QEC-Bank 里没有自己的家族条目,只有两张卡片以三维色码的面貌登记了具体实例(quantum_reed_muller_15 的四面体三维色码、eight_three_two 的最小三维立方色码);这与另一条 partial 状态的 Wanted 项有关:chain-complex-lib(“General cell-complex library (boundaries, 3D+, geometry)”)要把现在只有三层、不带几何的链复形库扩展到带边界、高维、带坐标的胞腔复形,它的 why_it_matters 原文点名 “Needed for 3D codes (toric3d, color3d, gauge color)”——先要能造出三维码的检查矩阵,才谈得上给它们译码。本系列不为 partial 项单独写篇,此处一段带过。

So two kinds of “nothing” must be told apart. An empty decoder field (xcube, 3d_subsystem_color, …) means “nobody has looked yet”: unsurveyed. none-known means “we looked, found nothing under this noise setting, and here is the search date”. Only the latter counts as a registered gap. The “3D color” family on the board has no family entry of its own in the QEC-Bank, only two cards that register concrete instances under that name (quantum_reed_muller_15 as a tetrahedral 3D color code, eight_three_two as the smallest 3D cube color code); this connects to another Wanted item with status partial: chain-complex-lib (“General cell-complex library (boundaries, 3D+, geometry)”), which would extend the current length-3, geometry-free chain-complex library to cell complexes with boundaries, higher dimensions and coordinates; its why_it_matters names “Needed for 3D codes (toric3d, color3d, gauge color)”. One must first be able to build the check matrices of 3D codes before decoding them. This series writes no separate guide for partial items; one paragraph here suffices.

第 3 章Chapter 3

为什么我们想要答案:看不见的码在电路级对比表里是空行Why we want the answer: a code the benchmark cannot see leaves an empty row

板上给的理由只有一行。这一章把它拆开:「benchmark-blind」具体指哪张表的哪一行是空的,答案来了之后卡片上哪个词会翻成哪个词,以及今天一个 QEC-Bank 用户想做而做不到的三件事。 The board gives a one-line reason. This chapter unpacks it: which row of which table “benchmark-blind” leaves empty, which word on which card flips to which once the answer exists, and three things a user of the QEC-Bank wants to do today and cannot.

Wanted 板原文 · why_it_mattersWanted board, verbatim · why_it_matters

“decoders: none-known entries stay benchmark-blind; comparison tables honestly show the gap this item closes.”

“decoders: none-known entries stay benchmark-blind; comparison tables honestly show the gap this item closes.”

3.1benchmark-blind:没有能跑的电路级译码器,就没有电路级的一行benchmark-blind: no runnable circuit-level decoder, no circuit-level row

回到 1.3 节的七元组。基准框架跑一次实验,需要七元组里每一项都有值;decoder 一项必须是 registry/decoders.yaml 里带 benchmark_adapters(可以被框架调用的实现)的译码器。目前带适配器的只有五个:lookup-table、css-pivot、repetition-majority、phenomenological-css-pivot、circuit-dem-pivot——全是「可复现的代数基线」,没有一个是为分形子几何设计的;RG 译码器和 small-set-flip 都没有适配器。于是对 haah_cubic 这样的条目,框架造不出电路级的基准行(码容量级的通用 CSS 译码行仍然可跑):不是「跑出来数字很差」,而是「没有可跑的电路级实验」。这就是 benchmark-blind——基准框架看不见这个码。

Back to the seven-tuple of 1.3. To run one experiment the harness needs a value for every part; the decoder part must be a decoder in registry/decoders.yaml that carries benchmark_adapters (an implementation the harness can call). Today only five have adapters: lookup-table, css-pivot, repetition-majority, phenomenological-css-pivot, circuit-dem-pivot, all “reproducible algebraic baselines”, none designed for fracton geometry; neither the RG decoder nor small-set-flip has an adapter. So for an entry like haah_cubic the harness cannot produce a circuit-level benchmark row (generic CSS code-capacity rows still run): not “the number came out poor” but “there is no runnable circuit-level experiment”. That is benchmark-blind: the harness cannot see the code.

对比一下有译码器的条目长什么样。表面码的账本有六行数字,每行标明信道、译码器、出处;BB 码的卡片有三条译码记录,其中一条带一个 0.8%。下面的小账本把这七个数各自的噪声、译码器、得出方式和出处列在一起。haah_cubic 的卡片:三行文字,零个数字。人话:QEC-Bank 的对比表是「同一层级、同一噪声、各自最好的译码器」下的数字并排;一个在某个层级连一行都没有的码,在那个层级的表里只能是一个空格。板上「comparison tables honestly show the gap」说的就是:这个空格现在是诚实地空着的,而不是填了一个来历不明的数。

Compare an entry that has decoders. The surface-code ledger has six numbered lines, each with its channel, decoder and source; the BB card has three decoder records, one carrying a 0.8%. The small ledger below lists, for each of these seven numbers, its noise, decoder, how it was obtained, and its source. The haah_cubic card: three rows of text, zero numbers. In plain words: a QEC-Bank comparison table sets numbers side by side under one level, one noise model, each code's best decoder; a code with not even one row at some level can only be a blank in that level's table. The board's “comparison tables honestly show the gap” means exactly this: the blank is honestly blank today, rather than filled with a number of unknown origin.

数字Number码与噪声Code and noise译码器Decoder怎么得到的How it was obtained出处Source
10.9%
阈值
10.9%
threshold
表面码;code-capacity:每个比特独立出错,测量完美surface code; code-capacity: independent qubit errors, perfect measurement最优译码(押最可能的类)optimal (bets on the most likely class)随机键 Ising 模型在 Nishimori 线上相变点的数值估计,pc = 0.1093 ± 0.0002numerical estimate of the random-bond Ising model's transition on the Nishimori line, pc = 0.1093 ± 0.0002Wang、Harrington、Preskill 2003(quant-ph/0207088)摘要所引的早期数值研究earlier numerical studies cited in the abstract of Wang, Harrington, Preskill 2003 (quant-ph/0207088)
10.3%
阈值
10.3%
threshold
同上same最小重量完美匹配minimum-weight perfect matching同一模型在 T = 0 轴上临界浓度的数值测量,pc0 = 0.1031 ± 0.0001numerical measurement of the same model's critical concentration on the T = 0 axis, pc0 = 0.1031 ± 0.0001Wang、Harrington、Preskill 2003 摘要abstract of Wang, Harrington, Preskill 2003
9.9%
阈值
9.9%
threshold
二维环面码;完美的症状测量2D toric code; perfect syndrome measurement并查集union-find数值模拟numerical simulationDelfosse、Nickerson 2017(arXiv:1709.06218)摘要abstract of Delfosse, Nickerson 2017 (arXiv:1709.06218)
2.9%
阈值
2.9%
threshold
表面码;phenomenological:比特的 X、Z 错误与读数错误同为概率 psurface code; phenomenological: qubit X and Z errors and readout errors all at probability p时空中的最小重量匹配(对应 T = 0)minimum-weight matching in space-time (the T = 0 case)随机平台规范模型在 T = 0 轴上临界浓度的数值测量,pc0 = 0.0293 ± 0.0002numerical measurement of the random-plaquette gauge model's critical concentration on the T = 0 axis, pc0 = 0.0293 ± 0.0002Wang、Harrington、Preskill 2003 摘要abstract of Wang, Harrington, Preskill 2003
0.57%
阈值,每一步的故障率
0.57%
threshold, fault rate per step
表面码;circuit-level:论文给定的症状提取电路,每一步都可能出错surface code; circuit-level: the paper's syndrome-extraction circuit, every step may fail最小重量完美匹配minimum-weight perfect matching不同码距的逻辑错误率曲线的交点(模拟到 d = 55)crossing point of the logical-error curves of several distances (simulated up to d = 55)Fowler、Mariantoni、Martinis、Cleland 2012(arXiv:1208.0928)正文main text of Fowler, Mariantoni, Martinis, Cleland 2012 (arXiv:1208.0928)
Λ = 2.14 ± 0.02
不是阈值:码距每加 2,每轮逻辑错误率缩小的倍数
Λ = 2.14 ± 0.02
not a threshold: the factor by which the logical error rate per round shrinks each time d grows by 2
真实硬件:105 比特 Willow 处理器上的表面码存储实验,码距 3、5、7real hardware: surface-code memory on the 105-qubit Willow processor, distances 3, 5, 7离线神经网络译码器(同一批数据用 ensembled matching synthesis 得 2.04 ± 0.02)offline neural-network decoder (ensembled matching synthesis gives 2.04 ± 0.02 on the same data)对 d = 3(9 块子格平均)、5(4 块子格平均)、7 的 ln εd 对 d 做线性回归linear regression of ln εd against d over d = 3 (average of 9 subgrids), 5 (average of 4) and 7Google Quantum AI and Collaborators,Nature 638, 920(2025;2024 年 12 月在线)Google Quantum AI and Collaborators, Nature 638, 920 (2025; online December 2024)
0.8%
盈亏平衡伪阈值,不是几条曲线的交点
0.8%
break-even pseudo-threshold, not a crossing of several curves
BB 码的若干个码,每个单独算;circuit-level 标准电路噪声、深度 7 的症状提取电路several BB codes, each on its own; circuit-level standard circuit noise, depth-seven syndrome extractionBP-OSDBP-OSD对每个码单独解 pL(p) = kp(见下方读法)solve pL(p) = kp for each code separately (see the note below)Bravyi 等,arXiv:2308.07915Bravyi et al., arXiv:2308.07915

读法:前五行是阈值,但分属三个比较层级(code-capacity、phenomenological、circuit-level),不能横着比;第六行是硬件上的一次拟合;第七行是另一种定义的数。0.8% 的来历:pL 是整块码每轮的失败率(k 个逻辑比特任一出错),kp 近似「k 个裸比特至少一个出错」,两者相等的 p 就是这个码的盈亏平衡点;pL 在 p ≥ 10−3 模拟、更低处外推。v1 表 1 给五个码 0.007(3)–0.008(3)(括号里那位数字论文没有解释),正文说 “close to 0.008”,v1、v2 摘要都写 0.8%;v2 表 1 为 0.0048–0.0069;Nature 摘要(2024)写 0.7%。这七个数都属于表面码或 BB 码,列在这里只为说明「有译码器的条目有数字」,不与本篇的码比较。

How to read it: the first five rows are thresholds, but at three different comparison levels (code-capacity, phenomenological, circuit-level) and not comparable across levels; row six is a fit to hardware data; row seven is a number with a different definition. Where 0.8% comes from: pL is the whole block's failure rate per round (any of its k logical qubits), kp approximates “at least one of k bare qubits fails”, and the p at which the two are equal is that code's break-even point; pL was simulated for p ≥ 10−3 and extrapolated below. v1 Table 1 gives 0.007(3) to 0.008(3) for five codes (the paper does not explain the digit in parentheses), the text says “close to 0.008”, and both the v1 and v2 abstracts say 0.8%; v2 Table 1 gives 0.0048 to 0.0069; the Nature abstract (2024) says 0.7%. All seven numbers belong to the surface code or BB codes and are listed only to show that entries with decoders have numbers; none is compared with this guide's codes.

3.2答案来了,哪个词翻成哪个词When the answer arrives, which word flips to which

今天Today答案之后After the answer在哪里能看到Where it would show
haah_cubic 第 2 行 status: none-knownhaah_cubic row 2 status: none-known一行新记录,status research-grade,随着被采纳升为 standard;none-known 行删去A new row with status research-grade, promoted to standard as it is adopted; the none-known row removedcodes/haah_cubic/card.yaml · entries/haah_cubic/decoders.html
基准框架:haah_cubic 零张电路级行Harness: zero circuit-level rows for haah_cubic每个 (实例, 层级, 噪声, 译码器) 一张行,带数字与复现命令One row per (instance, level, noise, decoder), with a number and a replay command基准结果文件(schema qec-atlas-benchmark-result-v1)Benchmark result files (schema qec-atlas-benchmark-result-v1)
registry/decoders.yaml:无分形子专用译码器带适配器registry/decoders.yaml: no fracton-specific decoder with an adapter新增一个带 benchmark_adapters 的译码器条目(例如 RG 类)A new decoder entry with benchmark_adapters (e.g. an RG type)registry/decoders.yaml
xcube、chamon、checkerboard、3d_subsystem_color:译码器一栏为空xcube, chamon, checkerboard, 3d_subsystem_color: empty decoder field不会自动改变:这些条目先要被 survey;答案只对已有记录的家族生效Unchanged automatically: these entries must first be surveyed; the answer applies to families with records—
haah_cubic L3 的 d=[3,9] claimedhaah_cubic L3's d=[3,9] claimed不变:译码器不证明码距。这个词归大码的码距篇管(卡片的 claim_gaps 把 d 指向 wanted:fast-distance)Unchanged: a decoder proves no distance. That word belongs to the distance-for-large-codes guide (the card's claim_gaps routes d to wanted:fast-distance)codes/haah_cubic/instances.yaml

最后两行是刻意加的。一个好译码器不会让 xcube 的空栏自己填满,也不会把 claimed 变成 verified——译码器回答的是「多大的噪声下还能修对」,不是「最轻的逻辑算符有多重」。BB 译码器教程 4.3 节把「静态码距、电路码距、译码器找到的失败重量」列成三个不许混用的量,同样的纪律在这里适用。

The last two lines are deliberate. A good decoder will not fill xcube's empty field by itself, nor turn claimed into verified: a decoder answers “how much noise can still be repaired”, not “how heavy is the lightest logical operator”. Section 4.3 of the BB decoders guide lists “static distance, circuit distance, decoder-found failure weight” as three quantities never to be conflated; the same discipline applies here.

3.3今天一个 QEC-Bank 用户做不到的三件事Three things a user of the QEC-Bank cannot do today

一、问「Haah 立方码和表面码,在同一种电路级噪声下谁更能扛」——没有 haah_cubic 的电路级行,问题无法成立。二、把论文里 RG 译码器的曲线与自己的实现对照——卡片上没有抄任何曲线,QEC-Bank 也没有可运行的 RG 适配器,无从核对。三、判断「三维码值不值得为它多花一维的硬件」——这个判断需要至少一个电路级的数字,而 2.2 节第 2 行说这个数字在 2026-08-09 的检索里不存在。人话:QEC-Bank 今天能告诉你这族码「是什么」(检查矩阵、n、k、d 的界),但对「放进真实电路、测量也会出错时用起来怎么样」还说不出一个数。

One: ask “under the same circuit-level noise, which withstands more, Haah's cubic code or the surface code?”; with no circuit-level row for haah_cubic the question cannot even be posed. Two: compare the RG decoder's curve from the paper with your own implementation; the card copied no curve and the QEC-Bank has no runnable RG adapter, so nothing can be checked against. Three: decide “is a 3D code worth the extra hardware dimension?”; that needs at least one circuit-level number, and row 2 of 2.2 says none existed in the search of 2026-08-09. In plain words: today the QEC-Bank can tell you what this family “is” (check matrices, n, k, bounds on d) but not a single number for “how it performs in a real circuit, where measurements also fail”.

第 4 章Chapter 4

合格的答案长什么样,为什么难What a qualifying answer looks like, and why it is hard

先从 statement 里读出「什么算解决」,再解释难度词 open-research,最后回到计数板,看清哪一部分难处它能演示、哪一部分它演示不了。 First read “what counts as solved” out of the statement, then explain the difficulty word open-research, and finally return to the counter board to see which part of the difficulty it can show and which it cannot.

4.1什么算解决What counts as solved

按 statement 的字面,一个完整的答案对一族码交付两样东西。一、一个 production-quality 的译码器:在 registry/decoders.yaml 里有条目、有 benchmark_adapters,能对这族的任何实例运行。二、基准行:至少一张,最好每个实例、每个层级一张,每张的七元组写全,数字附带能重跑的命令。层级是关键:haah_cubic 那行 none-known 的噪声设定是电路级(重复症状提取 + 数据、测量、泄漏、关联故障),所以严格地说,只有一张 circuit-level 的行才能把那行删掉;一张 code-capacity 的行是有价值的第一步(它至少让框架「看见」这个码),但它对应的是第 1 行 BP-OSD 那种设定,不是第 2 行的缺口。人话:最低要求是「框架能跑、跑出一行、别人能重跑」;完整要求是这一行在真实电路的层级上。

Taken literally, a complete answer delivers two things for one family. One: a production-quality decoder, with an entry in registry/decoders.yaml carrying benchmark_adapters, runnable on any instance of the family. Two: benchmark rows, at least one and preferably one per instance and level, each with its full seven-tuple and a replay command beside the number. The level is the crux: the noise setting of haah_cubic's none-known row is circuit-level (repeated syndrome extraction plus data, measurement, leakage and correlated faults), so strictly only a circuit-level row can delete that row; a code-capacity row is a valuable first step (it at least lets the harness “see” the code), but it matches the setting of row 1's BP-OSD, not the gap of row 2. In plain words: the minimum is “the harness runs, produces a row, and others can rerun it”; the full requirement is that this row sits at the level of real circuits.

4.2难度词:open-research,「没人知道怎么做」The difficulty word: open-research, “nobody knows how”

Wanted 板只用两个难度词。hard-engineering:知道怎么做,但要做很多——比如Floquet 码距篇那一条,论文已经定义了对象、也有人对具体电路算过,缺的是把它做成通用引擎。open-research:连怎么做都没有公认的路线。本条是后者,理由可以从卡片上读出来,正好三层。

The board uses only two difficulty words. hard-engineering: the method is known but much must be built; for instance the Floquet fault-distance item, where a paper has defined the object and explicit circuits have been analysed, and what is missing is a general engine. open-research: not even the route is agreed. This item is the latter, and the reasons can be read off the cards, in exactly three layers.

层Layer难在哪里Where the difficulty lies卡片上的依据Evidence on the card
① 几何① Geometry配对 + 最短路的前提(成对、能动)不成立;错误图案「递归地组织」,需要按尺度归并的算法,而这种算法没有像匹配那样的最优性保证与六十年的算法史。The premises of pairing plus shortest path (in pairs, mobile) fail; error patterns “organize recursively” and call for scale-by-scale merging, which lacks matching's optimality guarantees and sixty-year algorithmic history.haah_cubic views:“cannot be transported by an ordinary Pauli string … organize recursively rather than as pairs joined by shortest paths”haah_cubic views: “cannot be transported by an ordinary Pauli string … organize recursively rather than as pairs joined by shortest paths”
② 层级② Level已有的两种算法都停在完美症状层级。电路级意味着测量会错、要用探测器比较相邻轮(《译码器 · 高中数学版》5.1 节)、hook 错误会把一个故障复印到多个比特(5.4 节);三维格子上每条检查碰的比特更多,这些效应更重。Both existing algorithms stop at the perfect-syndrome level. Circuit-level means measurements err, detectors must compare neighbouring rounds (section 5.1 of “Decoders · High-School Edition”), and hook errors copy one fault onto several qubits (section 5.4); on a 3D lattice each check touches more qubits and these effects weigh more.第 0 行:“not a circuit-level repeated-measurement threshold”;第 2 行:“No primary circuit-level threshold … was found”Row 0: “not a circuit-level repeated-measurement threshold”; row 2: “No primary circuit-level threshold … was found”
③ 通用性③ Generality通用基线(BP-OSD)在别的 qLDPC 码上调好的参数搬不过来;k 随尺寸算术地变化,连「一族码」的边界都要逐个尺寸确认。Parameters of the generic baseline (BP-OSD) tuned on other qLDPC codes do not transfer; k varies arithmetically with size, so even the family's boundaries must be confirmed size by size.第 1 行:“cannot be transferred … without a dedicated benchmark”;描述:“depends arithmetically on the periodic length”Row 1: “cannot be transferred … without a dedicated benchmark”; description: “depends arithmetically on the periodic length”

还有一层是 QEC-Bank 自身的:板上点名的三维颜色码在 QEC-Bank 里没有家族条目(2.3 节;有两张实例卡),造出这一族的检查矩阵是另一条 partial 项的事。所以即便明天有人发表了一个漂亮的三维颜色码译码器,QEC-Bank 也要先有那个码才能给它一行。人话:这道题难在没有现成的「配对」骨架可以套;而且它是一串任务的末端——先有码、再有电路、再有探测器、最后才是译码器和数字。

There is one more layer, internal to the QEC-Bank: the 3D color codes named on the board have no family entry (section 2.3; two instance cards exist), and building their check matrices belongs to another partial item. So even if a beautiful 3D color-code decoder were published tomorrow, the QEC-Bank would first need the code before it could give it a row. In plain words: the problem is hard because there is no ready “pairing” skeleton to reuse, and because it sits at the end of a chain: first the code, then the circuit, then the detectors, and only then the decoder and its number.

4.3计数板能演示什么,不能演示什么What the counter board can and cannot show

诚实地说清玩具的边界。计数板能演示第 ① 层的前半:警报四个一组、单个不能动,「配对」这个词失效。它不能演示译码本身为什么难——原因很具体。在这块有边界的 4 × 4 板上,计数器的读数唯一地决定翻了哪些格子:左上角那个计数器只碰到一个格子,所以它亮不亮就告诉你那个格子翻没翻;沿第一行往右,每个计数器碰到的「新」格子只有一个,逐个确定;再往下一行同理(第 5 章的练习 2 让你亲手走一遍)。也就是说,这块板上没有「同一组警报对应多种不同修复」的情形,译码只是解一遍方程。而在真正的 Haah 立方码里,检查是量子稳定子,同一组警报对应大量不同的错误图案。两个错误若给出同一组警报,它们的乘积就不点亮任何检查,于是这个乘积要么是若干检查的乘积(一个稳定子),要么是一个逻辑算符(可能再乘上若干检查)。前一种情形两个错误属于同一类,对存储的信息作用完全相同,修哪一个都行,这叫退化;后一种情形它们属于不同的类,修错了类,错误加修复就是一个逻辑算符,信息被改写。下图在 1.1 节那个 L = 3 的环面码上各举一例。所以译码器必须挑出「最可能的一类」,而不只是「最可能的一个错误」——《译码器 · 高中数学版》1.1 节「从症状到类」讲的正是这件事,只是在分形子码里「类」的结构是分形式的、跨尺度的,这超出了本篇的层级,只做描述。人话:玩具告诉你老游戏为什么玩不了,没有告诉你新游戏有多难。

Let us be honest about the toy's limits. The counter board can show the first half of layer ①: alarms come in fours, a single one cannot move, the word “pairing” fails. It cannot show why decoding itself is hard, for a concrete reason. On this bounded 4 × 4 board the counter readings determine uniquely which cells were flipped: the top-left counter touches only one cell, so whether it is lit tells you whether that cell was flipped; moving right along the first row, each counter touches only one “new” cell, fixed in turn; the next row likewise (exercise 2 of Chapter 5 walks you through it). In other words, this board has no situation of “one set of alarms, several different repairs”; decoding is merely solving equations. In Haah's real cubic code the checks are quantum stabilizers, one set of alarms corresponds to many different error patterns. If two errors give the same alarms, their product lights no check, so that product is either a product of checks (a stabilizer) or a logical operator (possibly times some checks). In the first case the two errors are in the same class and act identically on the stored information, so repairing either one is fine; this is called degeneracy. In the second case they are in different classes: repair the wrong class, and error plus repair is a logical operator, so the information is rewritten. The figure below gives one example of each on the L = 3 toric code of section 1.1. So the decoder must pick “the most likely class”, not merely “the most likely error”; section 1.1 of “Decoders · High-School Edition”, “from syndrome to class”, is about exactly this, except that in fracton codes the classes are structured fractally across scales, which is beyond this guide's level and is only described. In plain words: the toy tells you why the old game cannot be played, not how hard the new one is.

(a) 错误 E:一条边上的 Z(a) error E: Z on one edge 亮:两端两颗星lit: the two end stars (0,1) (1,1) (b) E × 面检查 B(b) E × face check B 差一个检查:同一类,效果相同differs by a check: same class, same effect B (c) E × 逻辑算符 Z̄(c) E × logical operator Z̄ 差一个逻辑算符:不同类differs by a logical: different class =(0,1) = 带 Z 的边= edge carrying Z = 亮的星检查= lit star check 虚线点/边 = 绕回左边、下边(环面:左右相接、上下相接)dashed dots/edges wrap to the left and bottom (torus)

图注:L = 3 环面码([[18, 2, 3]],左右、上下各自相接)。(a) 错误 E = 一条横边上的 Z,两端的星 (0,1)、(1,1) 亮。(b) E 乘上它上方那块面检查 B(B 在四条边上各放一个 Z):两个 Z 落在同一条边上抵消,剩下另外三条边上的 Z;亮的仍是同两颗星。B 作用在码态上什么也不改,所以 (a) 与 (b) 属于同一类,修哪个都一样。(c) E 乘上沿这一行绕环面一圈的 Z̄(三条横边上的 Z,一个逻辑算符):剩下另外两条横边,从 (1,1) 向右绕过边界回到 (0,1);亮的还是同两颗星,但 (c) = (a) × Z̄,与 (a) 不同类。若真实错误是 (a) 而译码器按 (c) 去修,错误加修复 = Z̄,留下一个逻辑 Z 错误:它不把逻辑 0 变成 1,而是翻转逻辑相位(|0̄⟩ + |1̄⟩ 变成 |0̄⟩ − |1̄⟩),同样是译码失败。

Caption: the L = 3 toric code ([[18, 2, 3]], left joined to right, top to bottom). (a) Error E = Z on one horizontal edge; the stars at its ends, (0,1) and (1,1), light. (b) E times the face check B above it (B puts a Z on each of its four edges): the two Zs on the shared edge cancel, leaving Z on the other three edges; the same two stars are lit. B changes nothing on code states, so (a) and (b) are in the same class, and repairing either is the same. (c) E times Z̄, the loop of Z around the torus along this row (Z on three horizontal edges, a logical operator): the other two horizontal edges remain, going right from (1,1) across the boundary back to (0,1); the same two stars are lit, but (c) = (a) × Z̄ is in a different class from (a). If the true error is (a) and the decoder repairs (c), error plus repair = Z̄, leaving a logical Z (phase) error: it does not turn logical 0 into 1 but flips the logical phase (|0̄⟩ + |1̄⟩ becomes |0̄⟩ − |1̄⟩), which is still a decoding failure.

第 5 章Chapter 5

从这里出发能做什么:两个手算练习、一个游戏、几条路What you can do from here: two hand exercises, one game, a few roads

练习 1 在计数板上把 1.2 节的规则证完整;练习 2 证明这块板上的译码是唯一的(4.3 节的承诺)。然后玩一局环面码的配对游戏,体会「成对、能动」有多好用。最后是相关条目与教程。 Exercise 1 completes the proof of section 1.2's rule on the counter board; exercise 2 proves that decoding on this board is unique (as promised in 4.3). Then play one round of the toric-code pairing game to feel how much “in pairs, mobile” buys. Finally, related entries and guides.

5.1练习 1:矩形规则Exercise 1: the rectangle rule

在 4 × 4 板上任选一个由格子组成的实心矩形(比如 2 × 3),把它里面的格子全翻成 1,其余为 0。(a)证明恰好亮 4 盏灯,在矩形的四个角上:矩形内部的计数器碰到 4 个翻转格,边上的碰到 2 个,角上的碰到 1 个,板外的碰到 0 个。(b)用行偶列偶规则解释:为什么亮灯若恰好 4 盏,它们就必须构成一个矩形的四个角?提示:每行要偶数盏,每列要偶数盏,4 盏灯分到行里只能是 2 + 2,分到列里也只能是 2 + 2。(c)反过来问:亮灯若是 6 盏呢?画出一个例子(提示:两个只共一个角的格子;1.2 节的计数板上有这个预设)。

On the 4 × 4 board choose any solid rectangle of cells (say 2 × 3), flip every cell inside it to 1 and leave the rest 0. (a) Show that exactly 4 lamps light, at the rectangle's four corners: counters inside touch 4 flipped cells, those on an edge 2, those at a corner 1, those outside 0. (b) Use the even-row-and-column rule to explain why, if exactly 4 lamps are lit, they must be the four corners of a rectangle. Hint: each row needs an even count and so does each column; 4 lamps can only split 2 + 2 across rows and 2 + 2 across columns. (c) Conversely: what if 6 lamps are lit? Draw one example (hint: two cells sharing only a corner; the counting board of 1.2 has this preset).

5.2练习 2:这块板上的译码是唯一的Exercise 2: decoding on this board is unique

给你 25 个计数器的读数(亮 / 灭),要还原 16 个格子。按下面的顺序做:左上角的计数器只碰到格子 (1,1),所以格子 (1,1) = 那个计数器的读数。第一行第二个计数器碰到 (1,1) 和 (1,2),(1,1) 已知,于是 (1,2) 被确定;一路向右,确定第一行全部 4 个格子。第二行第一个计数器碰到 (1,1) 和 (2,1),确定 (2,1);第二行第二个碰到 (1,1)、(1,2)、(2,1)、(2,2),前三个已知,确定 (2,2)……16 步之后全部格子确定。结论:读数与翻转图案一一对应,这块板上不存在「同一组警报、两种修复」。这就是 4.3 节说的:玩具上同一组警报只对应一种翻法;量子码上同一组警报对应许多错误,译码器要在它们所属的类之间挑。(顺带一问:如果把板卷成环面——左右相接、上下相接——第一步的论证还成立吗?不成立:没有「只碰一个格子」的计数器了。环面上会出现「整行翻转、所有灯不亮」的图案,同一组警报于是对应不止一种翻法(在这块经典板上,这些翻法是真正不同的改动,不是 4.3 节那种无害的退化)。这一问只需想到这里,不必再往下算。)

You are given the readings (lit / unlit) of the 25 counters and must recover the 16 cells. Proceed in this order: the top-left counter touches only cell (1,1), so cell (1,1) = that counter's reading. The second counter of the first row touches (1,1) and (1,2); (1,1) is known, so (1,2) is fixed; continue right and fix all 4 cells of the first row. The first counter of the second row touches (1,1) and (2,1), fixing (2,1); the second touches (1,1), (1,2), (2,1), (2,2), three of which are known, fixing (2,2)… after 16 steps every cell is fixed. Conclusion: readings and flip patterns correspond one to one; on this board there is no “one set of alarms, two repairs”. That is what 4.3 said: on the toy one set of alarms matches exactly one set of flips; on a quantum code one set of alarms matches many errors, and the decoder must choose among their classes. (One aside: if the board were rolled into a torus, left joined to right and top to bottom, would the first step still work? No: there would be no counter touching only one cell. On the torus, patterns such as “flip a whole row, no lamp lights” appear, so one set of alarms matches more than one set of flips (on this classical board those flips are genuinely different changes, not the harmless degeneracy of 4.3). Think this far and no further; no more computation is needed.)

5.3玩一局老游戏Play one round of the old game

下面是环面码的译码游戏:它随机放几个错误,只给你看警报,你来配对修复。玩几局,留意你的每一步都用了「成对」与「能动」:你总是在挑两盏灯连线,连线上的每一格都是「把一盏灯挪一步」。想象一下同样的界面放在计数板上:灯四个一组、挪不动单个,「挑两盏连线」这一步无从下手。计数板本身倒不难:5.2 节已经给出逐格解方程、唯一还原的做法。真正没有公认做法的是 Haah 立方码这样的量子分形子码:同一组警报对应许多类(4.3 节),而且在电路级噪声下(测量也会错、要重复多轮),至今没有一个框架能调用、能复现的译码器,也没有一张电路级基准行(2.2 节第 2 行)。这才是本篇的开放问题。

Below is the toric-code decoding game: it places a few random errors, shows you only the alarms, and you pair and repair. Play a few rounds and notice that every move uses “in pairs” and “mobile”: you always pick two lamps to join, and each cell along the join is “move one lamp one step”. Now imagine the same interface on the counter board, lamps in fours, no single one movable: the step “pick two lamps and join them” has nothing to work on. The counter board itself is easy: section 5.2 already gives a cell-by-cell equation solving that recovers the flips uniquely. What has no accepted method is a quantum fracton code such as Haah's cubic code: one set of alarms matches many classes (section 4.3), and under circuit-level noise (measurements can fail too, rounds are repeated) there is still no reproducible decoder the harness can call and no circuit-level benchmark row (section 2.2, row 2). That is this guide's open problem.

5.4往哪里走Where to go next

相关条目:haah_cubic(exports/site/entries/haah_cubic.html 及其 decoders.html),是本条唯一直接指向的卡片;quantum_expander 与 da_color_2d 的缺口分别由从理想症状到真实电路篇和Floquet 码距篇解释。译码器的教程:《译码器 · 高中数学版》(匹配、并查集、时空译码、阈值账本)与BB 译码器教程(BP-OSD、三条记录、电路码距)。「一个错误点亮三盏灯」——介于成对与四个一组之间的情形——见 BB 译码器教程 1.3 节「为什么配对没有意义了」。本条 yaml 没有 working_repo。

Related entries: haah_cubic (exports/site/entries/haah_cubic.html and its decoders.html), the only card pointing directly at this item; the gaps of quantum_expander and da_color_2d are explained in the guide “From ideal syndromes to real circuits” and the Floquet fault-distance guide. Decoder guides: “Decoders · High-School Edition” (matching, union-find, spacetime decoding, the threshold ledger) and the BB decoders guide (BP-OSD, the three records, circuit distance). “One error lights three lamps”, the case between pairs and fours, is section 1.3 of the BB decoders guide, “Why pairing no longer means anything”. This yaml has no working_repo.

尾声Epilogue

两条根据、三个词、一个空格Two grounds, three words, one blank

回放一遍。环面码的译码是配对游戏,根据是警报成对出现、且能单独移动。计数板上这两条都不成立:任何一行一列的亮灯数总是偶数,所以灯最少四盏、单盏挪不动——这是分形子的经典影子。QEC-Bank 用三个成熟度词记录译码器:standard、research-grade、none-known;写着 none-known 的卡片恰有三张,其中 haah_cubic 把缺口指向本条,它的三行记录里有两种研究级算法,都停在完美症状层级,电路级的记录在 2026-08-09 的检索里为零。没有框架能调用的电路级译码器,就没有电路级的基准行;没有这一行,电路级对比表里就是一个诚实的空格(码容量层级的通用 CSS 基线仍可跑)。合格的答案是一个能被框架调用、能生成七元组写全的基准行的译码器;难度是 open-research,因为没有「配对」骨架可套,也因为它排在「造码、写电路、定探测器」这串任务的末端。

Replay. Decoding the toric code is a pairing game, grounded in alarms that come in pairs and move alone. On the counter board both grounds fail: every row and column of counters has an even number of lit lamps, so lamps come at least four at a time and a single one cannot move, the classical shadow of a fracton. The QEC-Bank records decoders with three maturity words, standard, research-grade, none-known; exactly three cards carry none-known, and haah_cubic routes its gap to this item: its three records hold two research-grade algorithms, both at the perfect-syndrome level, with zero circuit-level records in the search of 2026-08-09. No circuit-level decoder the harness can call, no circuit-level benchmark row; without that row, the circuit-level comparison table shows an honest blank (the generic code-capacity CSS baseline still runs). A qualifying answer is a decoder the harness can call and that yields fully identified seven-tuple rows; the difficulty is open-research, because there is no “pairing” skeleton to reuse and because it sits at the end of the chain “build the code, write the circuit, define the detectors”.

符号与读法Symbols & how to read them

符号Symbol名称与读法Name & how to read it在本篇中的含义Meaning in this guide
[[n, k, d]]双方括号,读「n k d 码」Double brackets, read “an n k d code”n 个物理比特、k 个逻辑比特、码距 d;toric L3 是 [[18,2,3]],haah_cubic L2 是 [[16,6,2]]。n physical qubits, k logical qubits, distance d; toric L3 is [[18,2,3]], haah_cubic L2 is [[16,6,2]].
L读「L」Read “L”环面码的边长(n = 2L²);haah_cubic 里是立方三维环面的周期长(L2、L3、L4 三个实例)。Side length of the toric code (n = 2L²); in haah_cubic the period of the cubic three-torus (instances L2, L3, L4).
d = [3, 9], d = ?读「d 在 3 到 9 之间 / d 未登记」Read “d between 3 and 9 / d not registered”条目页对「下界 3、上界 9,claimed」和「没有 d 记录」的写法。The entry page's rendering of “lower 3, upper 9, claimed” and “no d record”.
dynamic_k读「动态 k」Read “dynamic k”测量时间表放完后仍存活的逻辑比特数(da_color_2d:1);详见 Floquet 码距篇。Logical qubits alive after the measurement schedule has run (da_color_2d: 1); see the Floquet fault-distance guide.
≡ 0 (mod 2)读「模 2 同余 0」Read “congruent to 0 mod 2”是偶数。计数板每行每列的亮灯数。Is even. The lit count of every row and column of counters.
(i, j)读「第 i 行第 j 列」Read “row i, column j”计数板上格子的坐标,练习 2 用到;从 1 数起。Coordinates of a cell on the counter board, used in exercise 2; counted from 1.
10.3%, 2.9%, 0.57%, 0.8%, Λ读「阈值 / 伪阈值 / 抑制因子」Read “threshold / pseudo-threshold / suppression factor”全部借自表面码账本与 BB 卡片,只为说明「有译码器的条目有数字」;不与本篇的码比较。各自的噪声、译码器与得出方式见 3.1 节的小账本:0.8% 是盈亏平衡伪阈值,Λ 不是阈值。Λ 读「拉姆达」。All borrowed from the surface-code ledger and the BB card, only to show that entries with decoders have numbers; not compared with this guide's codes. Noise, decoder and how each was obtained: the small ledger of section 3.1; 0.8% is a break-even pseudo-threshold and Λ is not a threshold. Λ reads “lambda”.
T1, T2读「一级 / 二级」Read “tier one / tier two”QEC-Bank 条目完成度:骨架 / 已研究的可操作条目。QEC-Bank entry completion tiers: skeleton / researched operational entry.

本篇新增词汇New terms in this guide

术语Term白话定义Plain definition
译码器decoder看到警报、给出修复建议的算法。The algorithm that sees alarms and proposes a repair.
配对游戏 / 最小重量完美匹配pairing game / minimum-weight perfect matching环面码与表面码的译码器:把警报两两连线,总长最短。The toric and surface codes' decoder: join alarms in pairs with the least total length.
分形子(fracton)fracton不能单独移动的激发;以此为特征的三维量子码叫分形子码。Haah 立方码里,不能局部造出的激发单个或成团都挪不动。An excitation that cannot move alone; 3D quantum codes with this feature are fracton codes. In Haah's cubic code, excitations that cannot be created locally are immobile, alone or as a cluster.
成熟度词maturity wordstandard(默认基准)/ research-grade(研究级)/ none-known(查过、在该噪声设定下没找到)。standard (default benchmark) / research-grade / none-known (searched, nothing found under the stated noise setting).
噪声设定noise setting译码记录的适用范围:哪些东西会出错、如何出错。The scope of a decoder record: what may fail and how.
比较层级comparison levelcode-capacity / phenomenological / circuit-level;不同层级的数字不进同一张表。code-capacity / phenomenological / circuit-level; numbers from different levels never share a table.
基准行(benchmark harness row)benchmark harness row一次身份写全(七元组)的实验及其数字,可重跑。One fully identified (seven-tuple) experiment with its number, replayable.
适配器(benchmark adapter)benchmark adapter让基准框架能调用某个译码器的实现;没有它,框架看不见这个译码器。The implementation that lets the harness call a decoder; without it the harness cannot see the decoder.
benchmark-blindbenchmark-blind一个码在某个比较层级(本篇指电路级)上没有任何可跑的基准实验,因此在那个层级的对比表里只能是空格。A code with no runnable benchmark experiment at some comparison level (here: circuit level), hence only a blank in that level's comparison tables.
重整化群(RG)译码器renormalization-group (RG) decoder按尺度逐级归并警报团、局部消除的译码器;haah_cubic 卡片上 research-grade。A decoder merging alarm clusters scale by scale and removing them locally; research-grade on the haah_cubic card.
BP-OSDBP-OSDqLDPC 码的通用基线译码器;在 haah_cubic 上标 research-grade、只在完美症状层级。The generic qLDPC baseline decoder; research-grade on haah_cubic, perfect-syndrome level only.
CSS 码CSS code每条检查要么全是 X、要么全是 Z 的稳定子码;Haah 立方码是一个。A stabilizer code whose checks are each all X or all Z; Haah's cubic code is one.
qLDPC 码qLDPC code码做大时,每条检查碰的比特数、每个比特参与的检查数都有固定上限;Haah 立方码是 8 与 4 + 4。As the code grows, qubits per check and checks per qubit both stay below fixed limits; for Haah's cubic code, 8 and 4 + 4.
角图案 / 反演相关corner pattern / inversion-related一条立方体检查在 8 个角上各碰哪个比特;X 图案 = Z 图案过中心反射、每个顶点两比特对调(1.2 节的立方体图)。Which qubit a cube check touches at each of the 8 corners; the X pattern = the Z pattern reflected through the centre with the two qubits at each vertex swapped (cube figure in 1.2).
热噪声 / 泄漏thermal noise / leakage码与有温度的环境接触、错误按热运动概率不断产生 / 量子比特跑出 0、1 两个能级之外。The code in contact with an environment at some temperature, errors arising with thermal probabilities / a qubit escaping its two levels 0 and 1.
退化(degeneracy)degeneracy给出同一组警报、彼此只差一个稳定子(若干检查的乘积)的几个错误,对信息作用相同,修哪个都行。同一组警报也可能对应差一个逻辑算符的错误,那些属于不同的类,修错了类就是逻辑错误。计数板上同一组警报只对应一种翻法。Several errors that give the same alarms and differ only by a stabilizer (a product of checks) act identically on the information, so repairing any of them is fine. The same alarms can also match errors that differ by a logical operator; those are in different classes, and repairing the wrong class is a logical error. On the counter board one set of alarms matches exactly one set of flips.
unsurveyed / none-knownunsurveyed / none-known还没人查 / 查过没找到。只有后者算登记了缺口。Nobody has looked / looked and found nothing. Only the latter is a registered gap.
open-research / hard-engineeringopen-research / hard-engineeringWanted 板的两种难度:没人知道怎么做 / 知道怎么做但要做很多。The board's two difficulty grades: nobody knows how / known how but much to do.

延伸阅读Further reading

  • J. Haah, “Local stabilizer codes in three dimensions without string logical operators” (2011)
    haah2011local(QEC-Bank 已登记,arXiv 1101.1962)。haah_cubic 卡片的奠基引文;「没有弦状逻辑算符」定理与 L3、L4 码距区间的出处。本篇未读其证明。haah2011local (registered in the QEC-Bank, arXiv 1101.1962). The founding citation of the haah_cubic card; source of the “no string logical operator” theorem and of the L3, L4 distance intervals. Its proofs were not read for this guide.
  • S. Bravyi, J. Haah, “Analytic and numerical demonstration of quantum self-correction in the 3D Cubic Code” (2011)
    bravyi2011selfcorrection(已登记,arXiv 1112.3252)。haah_cubic 第 0 行与第 2 行的引文;RG 译码器在该码上的记忆行为出自此处,卡片未抄数字。bravyi2011selfcorrection (registered, arXiv 1112.3252). Cited by rows 0 and 2 of haah_cubic; the RG decoder's memory behaviour on this code comes from here; the card copies no number.
  • G. Duclos-Cianci, D. Poulin, “Fast Decoders for Topological Quantum Codes” (2010)
    duclos2010fast(已登记,arXiv 0911.0581)。重整化群译码器的原始论文,haah_cubic 第 0 行引用。duclos2010fast (registered, arXiv 0911.0581). The original renormalization-group decoder paper, cited by row 0 of haah_cubic.
  • A. Leverrier, J.-P. Tillich, G. Zémor, “Quantum Expander Codes” (2015)
    leverrier2015quantumexpander(已登记,arXiv 1504.00822)。quantum_expander 卡片 none-known 行的引文;small-set-flip 定理的出处。leverrier2015quantumexpander (registered, arXiv 1504.00822). Cited by the none-known row of quantum_expander; source of the small-set-flip theorem.
  • M. Davydova, N. Tantivasadakarn, S. Balasubramanian, D. Aasen, “Quantum computation from dynamic automorphism codes” (2024)
    davydova2024dynamic(已登记,arXiv 2307.10353)。da_color_2d 卡片 none-known 行的首要引文。davydova2024dynamic (registered, arXiv 2307.10353). The primary citation of da_color_2d's none-known row.
  • QEC-Bank: the Wanted item and its data
    wanted/decoders-3d-fracton.yaml(六个字段原文)、wanted/chain-complex-lib.yaml(2.3 节的 partial 邻项)、codes/{haah_cubic,da_color_2d,quantum_expander}/card.yaml 与 instances.yaml(全部译码记录与实例数字)、registry/decoders.yaml(成熟度词表与适配器)、docs/design-references/2026-07-30-benchmark-harness-contract.md(七元组与三个层级)、qeclib/benchmarks.py(MAX_EXACT_QUBITS = 10)、foundations/decoding-basics/intuition.md(一句话,存根)。wanted/decoders-3d-fracton.yaml (the six fields verbatim), wanted/chain-complex-lib.yaml (the partial neighbour of 2.3), codes/{haah_cubic,da_color_2d,quantum_expander}/card.yaml and instances.yaml (every decoder record and instance number), registry/decoders.yaml (the maturity vocabulary and adapters), docs/design-references/2026-07-30-benchmark-harness-contract.md (the seven-tuple and the three levels), qeclib/benchmarks.py (MAX_EXACT_QUBITS = 10), foundations/decoding-basics/intuition.md (the one-liner, a stub).
诚实总账The honesty ledger

状态原文:open;难度原文:open-research;related 原文:[]。逐字引用的:statement、why_it_matters、current_proxy(第 1、2、3 章的框),三张卡片的 none-known 行与 haah_cubic 全部三行译码记录,四张实例表的数字与证据词,卡片描述与 views 里的引句,registry/decoders.yaml 的 none-known 定义,基准合同的两段与七元组,foundations 存根的一句话。本篇自己算的、QEC-Bank 页面上没有的:计数板的全部内容(25 个计数器、「翻一格亮 4 盏」、行偶列偶规则、「至少 4 盏」、练习 2 的唯一性),以及 2026-09-12 对 codes/*/card.yaml 与 codes/ 目录名的两次检索结果。只描述、未推导的:RG 译码器的工作方式、Haah 立方码本身的构造与「无弦逻辑算符」定理、分形子码的退化结构、small-set-flip。本篇没有运行任何译码器或基准框架,没有阅读所引论文的正文,没有为任何码补任何性能数字。「gauge color = 三维子系统颜色码」这一对应是本篇按术语常识给出的,不出自 QEC-Bank 文件。

Status verbatim: open; difficulty verbatim: open-research; related verbatim: []. Quoted word for word: statement, why_it_matters, current_proxy (the boxes of Chapters 1, 2, 3), the none-known rows of the three cards and all three decoder records of haah_cubic, the numbers and evidence words of the four instance tables, the sentences quoted from card descriptions and views, the none-known definition of registry/decoders.yaml, two paragraphs and the seven-tuple of the benchmark contract, the one-liner of the foundations stub. Computed for this guide and absent from QEC-Bank pages: everything about the counter board (25 counters, “flip one, four light”, the even-row-and-column rule, “at least four”, the uniqueness of exercise 2), and the results of the two searches of 2026-09-12 over codes/*/card.yaml and the codes/ directory names. Described only, not derived: how the RG decoder works, the construction of Haah's cubic code itself and the “no string logical operator” theorem, the degeneracy structure of fracton codes, small-set-flip. No decoder or benchmark harness was run for this guide, no cited paper was read in full, and no performance number was added for any code. The identification “gauge color = 3D subsystem color code” is given from standard terminology, not from a QEC-Bank file.