Let C_L be the L-by-L binary matrix
(C_L)[i,j] = 1 when j=i or j=i-1 mod L,
0 otherwise.
Each row checks equality of two neighboring bits on a cycle. Unlike the open repetition parity map, C_L is square. It has rank L-1, a one-dimensional kernel generated by the all-one vector, and a one-dimensional transpose kernel for the same reason.
Use H1=C_L for the horizontal direction and H2=C_L^T for the vertical direction. The transpose is not decoration: it aligns the repository's x-major, then y index convention with the chosen orientation of vertical edges.
For H1 of shape m1-by-n1 and H2 of shape m2-by-n2, the Atlas HGP convention is
HX = [ H1 ⊗ I_n2 | I_m1 ⊗ H2^T ]
HZ = [ I_n1 ⊗ H2 | H1^T ⊗ I_m2 ].
With the square cyclic factors, both qubit blocks have size L². Identify the first block with horizontal edges h(x,y) and the second with vertical edges w(x,y).
A row (x,y) of HX touches horizontal edges h(x,y) and h(x-1,y) through H1, plus vertical edges w(x,y) and w(x,y-1) through H2^T. This is exactly the vertex star at (x,y).
A row (x,y) of HZ touches horizontal edges h(x,y) and h(x,y+1), plus vertical edges w(x,y) and w(x+1,y). This is exactly the face boundary used by the constructor. No row operation or qubit permutation is needed: under the stated orientation, the matrices are byte-for-byte equal.
The HGP logical-dimension formula is
k = (n1-r1)(n2-r2) + (m1-r1)(m2-r2).
For square cyclic factors, every ni and mi equals L and every ri equals L-1. The kernel-kernel term contributes one logical sector, and the transpose-kernel term contributes another. Their geometric representatives are the two independent winding directions.
For the open repetition matrix used by the Surface entry, m=L-1, n=L, and the map has full row rank. Its ordinary kernel has dimension one but its transpose kernel has dimension zero. HGP of two open factors therefore keeps only the first term and encodes one logical qubit. This is the algebraic form of the boundary-condition difference.
The repository's HGP operation accepts arbitrary binary factor matrices, but the current structured generator vocabulary exposes only the open rep_parity generator. Pretending that generator were cyclic would replay the Surface matrix, not Toric. T144 is not authorized to add a shared generator or construction API.
The card therefore carries a typed product_of: hgp scientific relation and a derived cyclic-HGP view, while reproduce.py constructs C_L locally and asserts exact equality for several sizes. This is executable provenance without a false structured recipe. A later shared-infrastructure task may add a cyclic generator and then migrate the result into a construction: facet.
For L=2,3,4, reproduce.py asserts all of the following:
rank(C_L)=L-1 and both kernel dimensions are one;HX and HZ arrays;rep_parity(L) has no transpose-kernel sector and its self-HGP has one logical qubit; andPrimary sources: tillich2009quantum for the HGP formula and kovalev2012improved for the periodic Toric/HGP lineage.