This flag qubit idea was introduced by Rui Chao and Ben Reichardt, last year when I read the paper [arXiv:1705.02329] I thought I understood fully. But today as I revisit I found myself still a bit confused with the construction.
I copied the flag circuit for measurement of $XZZXI$ for $[\![5,1,3]\!]$ code below.
Q1: I don't get why we need $\text{CNOT}(b)$. If we have $IZ$ error in $(a)$, yes, it would be propagated to the flag qubit through $(b)$ but it would also be carried on and passed through by $(e)$ and thus cancel out the error. This results in no detection of such a single fault. However, in the paper, it says the following
if a single fault spreads to a data error of weight $\geq2$ then the $X$ measurement will return $|-\rangle $
Q2: To measure stabilizers of e.g. 15 qubit code, the order of $\text{CNOT}$s are shuffled around slightly. Is there any pattern for the shuffling? Or do I have to do trial and error to make sure syndromes map to errors 1-to-1?
Q3: How should I devise such a scheme for concatenated codes? I can't find any good reference.
P.S. Surely we can treat everything in the logical level and use two logical ancilla qubits, but this is not what I want. I'm looking for a scheme that uses few ancilla qubits even if we concatenate. (https://arxiv.org/pdf/2006.03068.pdf) provides an example for [49,1,3]. I'm wondering if it's possible to extend to higher level concatenation.