How this is built
Lift. For a pair, lift = (nab+5)/(Eab+5), where Eab = nanb/N is the co-occurrence count expected if they were independent. The +5 shrinks rare pairs toward 1.
Filtration. Kt contains every edge with lift ≥ t. A triangle enters with its last edge, unless the trio's own count (95% upper bound) shows its lift is below t. 730 triangles enter later than their edges; at t = 1.5, 47 of 203,188 are still held back. Higher simplices are flag-filled. With this optimistic reading, persistence nearly matches the flag complex. The conservative reading has 1,571 H₁ bars against 1,199, most of them born at low lift.
Empty triangles are strict witnesses: all three pairs are significantly favored, and the trio is significantly below independence. 44 of the 46 stay significant after stratifying by website, course and dish. None stay significant inside a single dish fiber, so most non-flagness comes from mixing recipe contexts.
Cleaning.
H₂. Classes come from the persistence pairing of the same filtration (tetrahedra flag-filled). A representative is the class's birth triangle plus triangles that entered before it, which no older class can cancel; the small spheres shown were found by suspension search or local reduction and then shrunk.
Layout. UMAP on each ingredient's row of log-lifts (cosine), in three or two dimensions. The 3D view orbits with a quaternion trackball, so there is no gimbal lock; the axis that best separates sweet from savory starts out horizontal on wide screens. Color is the share of an ingredient's recipes that are desserts, breads or drinks.