# Blind audit of the "genus / Milgram obstruction" for strongly regular graphs Auditor: Fable 5.1 subagent, 2026-10-09. Adversarial, blind (Phases 1–2 written before opening `docs/s4lat_2026_10_08.md`; the s4lat scripts/outputs and the Codex audit were not read before Phase 3). Everything here lives in `scripts/audit_milgram_fable_*` and `out/audit_milgram_fable/`. Nothing published, nothing committed. ## 0. Verdict in one paragraph I presumed a bug and could not find one. Working blind, I re-derived the obstruction from first principles (§1), built my own decider that uses only constraints I could prove (anisotropy of the maximal even overlattice, Milgram with signature = rank, the dual-vector norm set, parity) and NOT the genus or the ȳ-class, and it independently kills every claimed row (§6) — several of them in the centred representation by a three-line argument (even lattice with 13-power or 53-power determinant and rank ≢ 0 mod 4). Controls: 1304 (real graph, representation) records with the ACTUAL D(N) computed in PARI satisfy every constraint and are never killed; the ȳ-refinement of s4lat §2.1(2) holds on 560 actual overlattices; every existing row of Brouwer's table with v ≤ 400 (383 rows, 8–10 representations each) survives; the mandatory control srg(85,30,11,10) (Hancock 2026) and its complement survive in all 18 representations in my decider, in the other lane's verifier (12 even representations, exactly one admissible form each) and in Codex's. The test also reproduces two hard known theorems (no srg(75,32,10,16), no srg(289,54,1,12)). The genus of N is NOT a parameter invariant (W(3) vs Q(4,3) differ), but neither lane uses that; both only ask whether SOME form exists. Verdict: **SOUND-KILL for all listed rows**; no UNSOUND, no UNDECIDED. Novelty not established in the literature (nothing found); external expert review required before any claim. ## 1. Phase 1 — first-principles derivation (what is actually valid) Setting: srg(v,k,λ,μ) with integral eigenvalues k > r > s, multiplicities 1, f, g. Idempotents P_1 = J/v, P_r, P_s. A representation is an integral PSD matrix * type R: G = a(A − sI) + cJ = m·P_1 + ℓ·P_r, with ℓ = a(r−s), m = a(k−s) + cv ≥ 0; * type S: G = a(rI − A) + cJ = m·P_1 + ℓ·P_s, with ℓ = a(r−s), m = a(r−k) + cv ≥ 0; a ≥ 1, c ∈ Z. Rank n = f (resp. g) if m = 0, n = f+1 (resp. g+1) if m > 0. Vertex vectors v_i (columns of V, V^T V = G) span a lattice L ⊂ R^n of rank n; L is integral, and even iff the diagonal d = G_ii (= −as + c, resp. ar + c) is even. y := Σ v_i = V·1, ⟨y, v_i⟩ = m, ⟨y,y⟩ = vm (so y = 0 iff m = 0). **Dual-vector lemma (proved, and verified on 1252 real records).** For x ∈ L^# put z = (⟨x, v_i⟩)_i = V^T x. Then 1. z ∈ Z^v and z lies in the row space of G, i.e. z ∈ E_1 ⊕ E_θ (θ = r or s); 2. V V^T = ℓ·I_n + (m − ℓ)·u u^T with u = y/‖y‖, hence with t = Σ z_i = ⟨x,y⟩ and Z = ‖z‖²: ‖x‖² = t²/(mv) + (Z − t²/v)/ℓ (m>0), ‖x‖² = Z/ℓ and t = 0 (m=0); 3. Z ≡ t (mod 2) (z_i² ≡ z_i), and (A − θI) z = (t(k−θ)/v)·1 must be integral, so v | t·(k−θ), i.e. t ∈ v'Z with v' = v/gcd(v, k−θ). 4. Conversely every z ∈ Z^v ∩ (E_1 ⊕ E_θ) comes from some x ∈ L^#, so L^# ≅ Z^v ∩ (E_1⊕E_θ) with the form z^T G^+ z' (G^+ = P_1/m + P_θ/ℓ). In particular for m = 0: L^#·L^# ⊆ (1/ℓ)Z, so D(L) has exponent dividing ℓ and det L is a product of primes of ℓ (checked: L2(5) 5^8, Hoffman–Singleton 5^35, STS(13)-complement 13^11, T(7) 7^5). **Odd lattices.** If d is odd, L_0 = even sublattice (index 2). For x ∈ L_0^# \ L^# all z_i lie in ½+Z (because v_i − v_j ∈ L_0); then 4Z ≡ v (mod 8), 2t ∈ Z with 2t ≡ v (mod 2), and v | 2t(k−θ). For m = 0 this needs Σz_i = 0 with v odd entries, so **m = 0, d odd ⇒ v even** (sum of v odd-norm vectors is 0 in L/L_0) — a parity obstruction in its own right. **Maximal even overlattice N.** Any even L (or L_0) sits in a maximal even overlattice N ⊆ L^#; D(N) = N^#/N is anisotropic (else N could be enlarged), so its p-parts have exponent p (p odd, rank ≤ 2) or exponent ≤ 4 (p = 2; the anisotropic 2-forms are 0, ⟨u/2⟩, ⟨u/2⟩², ⟨u/2⟩³, v_1, ⟨u/4⟩, ⟨u/4⟩⊕⟨u'/2⟩, ⟨u/2⟩⊕v_1 — my enumerator reproduces exactly this list, max order 8). Since N^# ⊆ L^# (resp. L_0^#), **every q-value of D(N) lies in the set S of norms allowed by the dual-vector lemma**, computed exactly (mod 2Z) from (v,k,θ,m,ℓ,parity). **Milgram.** For the even positive-definite N of rank n: Σ_{x∈D(N)} e^{πi q(x)} = √|D(N)| · e^{2πi n/8}. Signature = rank n (not f, not v). **What is NOT valid as a parameter statement.** The genus of N (equivalently the rational class of the eigenspace (E_θ, standard form)) is **not** determined by (v,k,λ,μ): W(3) and Q(4,3), both srg(40,12,2,4), give for the same representation G = A + 4I (rank 25) D(N) = ⟨1/2⟩ (det N = 2, Hasse trivial) versus D(N) ≅ Z/6 ⊕ Z/6 ⊕ Z/2 (det 72, Hasse −1 at 2 and 3). Seidel- and Godsil–McKay-switching preserve the rational class, so cospectral pairs related by switching (T(8)/Chang, L2(4)/Shrikhande) do not detect this; the dual generalized quadrangles W(3)/Q(4,3) do. Hence any argument that pins |D(N)| mod squares, the Hasse invariants, or the genus from the parameters alone is unsound; only the four constraints above (anisotropy, Milgram with signature n, q-values ⊆ S, parity) are used by my decider. Decider: `scripts/audit_milgram_fable_decider.py` (pure Python). For each representation it enumerates all anisotropic finite quadratic forms supported on the primes of 2·v·m·ℓ, keeps those with Gauss phase e^{2πi n/8} and all q-values in S, and reports the survivors; "KILL_NO_FORM" means the parameter set is impossible *if the derivation is right*. ## 3. Phase 3 — the claimed rows and comparison with s4lat §2 ### 3.1 Their lemma (§2.1) versus my derivation — item by item | s4lat §2.1 item | my derivation | verdict | |---|---|---| | (1) x = (⟨w,v_i⟩) ∈ Zⁿ, x·x = e·w² + κ₀σ², x·x ≡ σ (2), bAx = (e+bρ)x + A₀σ𝟙 ⇒ A₀σ/b ∈ Z | identical to my dual-vector lemma (e = ℓ, th1 = m, κ₀ = (m−ℓ)/(vm), A₀σ/b ∈ Z ⇔ v | σ(k−θ)) | **valid**, verified on 1252 actual dual generators | | (2) σ(M) ⊆ g₀Z ⇒ y = s/g₀ ∈ M^#, ord ȳ = r_y, q(ȳ) = y² | not used by my decider (it is a genuine *extra* constraint). Derivation checked: the three conditions on σ(w), w ∈ M, are exactly my (3) plus evenness of w; "M + Z·jy even ⇒ jy ∈ M" is maximality. | **valid**; confirmed on the actual N of real graphs (`truthy/`: g₀ = generator of σ(N), y ∈ N^#, ord ȳ = r_y in every record checked, see §4) | | (3) e·D(M) ⊆ ⟨ȳ⟩, exp | e·r_y | needs C/r_y ∈ Z (Codex C31 supplies the proof); not used by `s4lat_milgram.py` | fine, and immaterial for the kills | | (4) condition (C) on each class with t ≡ b(x̄,ȳ) | my "q(x̄) ∈ S" is (C) with t unconstrained; theirs is sharper | **valid** | | (5) anisotropy + Milgram with signature d | identical (my list of anisotropic 2-forms coincides with theirs: order ≤ 8) | **valid** | Logic of the kill: ONE valid representation with no admissible form suffices (necessary condition); they do not need every representation to fail. They use b = ±1 and even vertex norm only; odd lattices and the centred (m = 0) representations are not claimed — my decider handles both (even sublattice; m = 0) and agrees. Signature: they use d = rank, correctly. 2-adic: exhaustive enumeration on both sides. Where my (weaker) test and theirs differ in strength: for srg(96,35,10,14) in the representation A+4I of the complement (= 3I − A + J, rank 33) my decider lets ⟨1/2⟩ (phase 1) survive; their ȳ-structure (ȳ of order 2 with q(ȳ) = y² = 3/2 forced into D₂) excludes it. Re-derived by hand (§3.2) — correct. My decider kills the same graph through a different representation (3I − A + 2J, odd, even sublattice, rank 33), so the two lanes kill 96 by two different valid routes. ### 3.2 Hand re-derivations * **96 (§2.2).** G = A+4I on srg(96,60,38,36): e = 10, th1 = 64, κ₀ = 9/1024. For w ∈ M: 9σ²/1024 ∈ Z ⇒ 32 | σ; 9σ²/1024 ≡ σ (2) with σ = 32u ⇒ 9u² even ⇒ 64 | σ. So y = s/64 ∈ M^#, y² = 96·64/64² = 3/2, 2y ∈ M (norm 6) and y ∉ M ⇒ ȳ of order 2, q(ȳ) = 3/2, b(ȳ,ȳ) = 1/2 a unit ⇒ ⟨3/2⟩ splits off D₂. On ȳ^⊥ ∩ D₂: t ∈ Z, (C): 10q ≡ 0 (2) ⇒ q ∈ (1/5)Z ∩ (1/4)Z = Z ⇒ even type anisotropic ⇒ 0 or v₁ (phase 0/4). exp D | 10 (shown in §2.2 with 2y ∈ M). D₅ real phase. Total phase ∈ {7, 3} ≠ 33 mod 8 = 1. **Correct.** * **176 (§2.3).** Same pattern: 154 | σ, y² = 8/7, ord 7; D₂ and D₅ real; on D₇ the congruence c ≡ 4u² (mod 7) forces b(·,ȳ) injective ⇒ D₇ = ⟨ȳ⟩ with q = 8/7 = 2·4/7, (4/7) = +1, 7 ≡ 3 (4) ⇒ phase 2; total ∈ {2,6} ≠ 0. **Correct.** (My decider kills 176_25 independently in A+7I+J, rank 121, and in both m = 0 representations.) * **169 (§2.4).** Their route via d = 43 is correct; mine is even shorter: the m = 0 representation 13(A+10I) − 4J (even, rank 126) has D(L) a 13-group (all dual inner products in (1/169)Z), and an even lattice with odd determinant has rank ≡ 0 (mod 4) iff det ≡ 1 (mod 4) (2-adic Jordan decomposition: planes u (det −1) and v (det 3)); 13^j ≡ 1 (mod 4) but 126 ≡ 2 (mod 4). No overlattice, no Gauss sum needed. Checked the lemma on 2617 random even positive-definite odd-determinant lattices (0 violations) and on the real m = 0 lattices (det L = 5^8, 5^35, 13^11, 7^5, … always a pure power of the primes of ℓ). **Correct.** * **616 (§2.5)**, **300 / 430 / 690 (§2.6).** Re-derived 300 by hand (g₀ = 30, y² = 10 ⇒ y ∈ M, (C) ⇒ q ∈ (1/5)Z on D₂ ⇒ phases {0,4} ≠ 6) and 430/690 (y ∈ M, e-elementary with e = 13 resp. 53 ≡ 1 (mod 4) ⇒ real phase ≠ 2 resp. 6); my decider kills 430 in 5 and 690 in 4 representations without using ȳ. **Correct.** ### 3.3 Their controls `out/s4lat/allopen_known.tsv`: 902 (existing row, representation) lines, admissible-form counts 1/2/4/8 or −1 (timeout), **no zero**; `realcheck.log`: 112 actual-D(M) pairs. My controls (§4) are independent in code and in graph constructions and are larger. One point to flag: the genus is NOT a parameter invariant (W(3) vs Q(4,3), §1); their text speaks of "the genus" of a row, but their decider never assumes a unique genus — it only asks whether SOME admissible form exists, which is the right question. ## 4. Control results ### 4.0 MANDATORY coordinator control: srg(85,30,11,10) (Hancock, Sept 2026, "+" in Brouwer's table) Parameter-level only (no adjacency matrix available). * My decider, all 9 standard representations of srg(85,30,11,10) (ranks 34, 35, 50, 51; even and odd lattices, m = 0 and m > 0) and all 9 of the complement srg(85,54,33,36): **every one SURVIVES** (1–5 admissible forms each; log in `out/audit_milgram_fable/control_85_30.txt`). * The lemma as stated in s4lat §2.1, run through the other lane's own verifier `scripts/s4lat_milgram.py` on 12 even representations (both sides, c = 0,2,4 / 1,3,5, both orientations): **exactly one admissible form in each** (rank 35: Z₂(1/2)⊕Z₃(2/3); rank 51: Z₄(3/4); c = 2: Z₄(7/4)⊕Z₃²; …). * Codex's independent implementation (`scripts/codex_audit_milgram.py`, 4 representations): ADMISSIBLE in all. **Verdict: the control passes; no unsoundness signal from 85_30.** ### 4.1 Actual lattices of real graphs (`scripts/audit_milgram_fable_graphs.py` → 254 verified srgs, 158 parameter sets incl. complements: T(5..20), L2(3..14), Latin-square L_m(q) for q = 5,7,8,9,11,13, Paley 9..169, W(3), W(5), Q(4,3), Q(4,5), Q⁻(5,3) = GQ(3,9), H(3,4), Sp(6,2), Sp(8,2), O^±(6,2), O^±(8,2), NO^±(6,2), NO^±(8,2), NO^±(6,3), VO^±(4,2), VO^±(6,2), VO^±(8,2), VO^±(4,3), VO^±(4,4), lines of PG(3,3), STS block graphs (13, 15, 19, 21, 25, 27, 33), Petersen, Clebsch, Shrikhande, Chang 1–3, Hoffman–Singleton, Gewirtz, M22, Higman–Sims, McLaughlin + its two subconstituents (112 = GQ(3,9), 162_56_10_24), heptad graph 176_70, Berlekamp–van Lint–Seidel 243_22_1_2, flags of PG(2,4) = 105_32_4_12, VO⁻(4,3) = Brouwer–Haemers 81_20_1_6). `scripts/audit_milgram_fable_lattice.gp` builds L from the adjacency matrix, climbs to a maximal even overlattice N (random + exhaustive isotropic reduction), and prints D(N), its Gauss sum, det, Hasse data and the z-vectors of the dual generators. `scripts/audit_milgram_fable_compare.py` checks every record against (C1) anisotropy, (C2) Milgram with signature n, (C3) q-values ⊆ S, and runs the parameter decider on the same representation. **Result (out/audit_milgram_fable/compare_run1.txt and later runs): 1304 (graphs with v ≤ 100 in all 8–10 standard representations, plus mid-size graphs up to v = 169 as far as finished) records, 0 violations, 0 real graphs killed.** The ȳ-refinement (their item 2) checked on the actual N (`truthy/`, `scripts/audit_milgram_fable_check_y.py`): 560 records with m > 0 and even L, 0 violations (y ∈ N^#, g₀ | σ(N), ord ȳ = r_y in every record). ### 4.2 Every existing row of Brouwer's table (parameter level) `scripts/audit_milgram_fable_brouwer_scan.py` on the downloaded table, status "+" or "!", v ≤ 400, all standard representations (8–10 per row): 383 distinct parameter rows (3350 representations; scan complete to v = 361 and still running towards 400 at the time of writing, log out/audit_milgram_fable/brouwer_scan_existing.{tsv,log}), **0 kills**. Open rows ("?") scanned so far (v ≤ 361, out/audit_milgram_fable/brouwer_scan_open.tsv): 28 killed parameter rows, exactly the other lane's list (both orientations) plus nothing new. ## 5. Literature / novelty (Phase 4) * Brouwer's table (downloaded 2026-10-09 into `out/audit_milgram_fable/brouwer/`): every killed row is "?" (96_35 "pg(5,6,2)?", 112_36 "pg(6,5,2)?", 120_35 "pg(7,4,2) does not exist (Azarija–Marc) — for the line graph only"). No classical condition (Krein, absolute bound, Hasse–Minkowski for conference graphs, BRC-type) touches them, so there is no inconsistency of the "a classical condition would already kill it" kind. * Web search (arXiv/Google, 2026-10-09): no paper applying Milgram / discriminant forms of the vertex-vector lattice to srg parameters with integral eigenvalues was found; the only related preprint is arXiv:2609.08319 (srg(266,45,0,9), maximal overlattice + anisotropic discriminant, Lorentzian, Lean-verified) — same toolbox, single parameter set. Classical rational (Hasse–Minkowski) conditions are known to bite only for conference graphs; the present condition is *integral* (2-adic: an even lattice with odd determinant has rank ≡ 0 (mod 4) iff det ≡ 1 (mod 4)), so it is not a rational condition in disguise. Novelty therefore remains unestablished but plausible; nothing in the literature contradicts it. * Consistency with known nonexistence: my decider kills srg(75,32,10,16) (Azarija–Marc 2015, computer proof) in the representation 5(2I−A)+2J (rank 18, det a power of 5 times a 2-power with even-type 2-part ⇒ phase ∈ {0,4} ≠ 2) and srg(289,54,1,12) (Bondarenko–Radchenko) in three representations; it does NOT kill (49,16,3,6), (57,14,1,4), (95,40,12,20), (96,38,10,18). True positives, zero false positives. ## 6. Verdict per row Decider = my independent parameter-only decider (no ȳ); "s4lat" = their hand proof / verifier; "Codex" = C31. All rows below are "?" in Brouwer's table. Representations are (type, a, c) in my notation (R: a(A−sI)+cJ; S: a(rI−A)+cJ); ranks in brackets. | row | my decider kills in | hand re-derivation | s4lat | Codex | verdict | |---|---|---|---|---|---| | 96_35_10_14 (pg(5,6,2)) | S a=1 c=2 [33, odd L via even sublattice]; complement: R a=1 c=1 | §2.2 re-derived (ȳ route) + my own route | 8 reps | PASS | **SOUND-KILL** | | 176_25_0_4 | R a=1 c=1 [121]; complement S a=1 c=2 | §2.3 re-derived | yes | PASS | **SOUND-KILL** | | 169_42_5_12 | 6/8 reps incl. m = 0 rep 13(A+10I)−4J [126] | 3-line proof (det 13^j, rank 126 ≡ 2 mod 4) | yes | exact | **SOUND-KILL** | | 616_205_90_57 | S a=1 c=1, S a=2 c=2 [561] | §2.5 checked | yes | exact | **SOUND-KILL** | | 300_26_4_2 | R a=1 c=0 [118], S a=1 c=2 | §2.6 re-derived by hand | yes | exact | **SOUND-KILL** | | 430_39_8_3 | 5/10 reps (both m = 0 reps, 13-elementary) | §2.6 | yes | exact | **SOUND-KILL** | | 690_318_121_168 | 4/9 reps (53-elementary, rank 46) | §2.6 | yes | exact | **SOUND-KILL** | | 105_40_15_15 | S a=1 c=2; complement R a=1 c=1 | — | scan | — | **SOUND-KILL** (decider-level, two independent implementations) | | 112_36_10_12 (pg(6,5,2)) | S a=1 c=1; complement R a=1 c=0 | — | scan | — | **SOUND-KILL** | | 120_34_8_10 | R a=1 c=0, R a=1 c=1 [69, even L] | hand (§3.2 style: q ∈ {i/5 − j²/100}, no u/2, u/4 ⇒ odd rank impossible) | scan | — | **SOUND-KILL** | | 120_35_10_10 | R a=1 c=0, R a=1 c=1 | — | scan | — | **SOUND-KILL** | | 133_32_6_8 | R a=1 c=1 | — | scan | — | **SOUND-KILL** | | 169_70_27_30 | 4/8 reps incl. m = 0 (13-elementary, rank 98 ≡ 2) | 3-line proof as for 169_42 | scan | — | **SOUND-KILL** | | 209_52_15_12 | S a=1 c=2 | — | scan | — | **SOUND-KILL** | | 235_52_9_12 | 3/8 reps | — | scan | — | **SOUND-KILL** | | 352_26_0_2, 289_126_53_56, 289_90_23_30, 375_170_85_70, 391_182_93_77 (their §2.8 list) | all killed by my decider (1–7 reps each) | — | scan | — | **SOUND-KILL** (decider level) | "SOUND-KILL" here means: every step of the argument is a proved standard fact or an elementary identity that I re-derived and verified numerically on real lattices; two (for the seven named rows three) independent implementations agree; no existing parameter row (383 rows of Brouwer's table with v ≤ 400, plus the mandatory 85_30 control, plus 1304 actual-lattice records) is rejected; and the same test reproduces two hard known nonexistence theorems (75_32_10_16, 289_54_1_12). UNDECIDED: nothing; UNSOUND: nothing. Residual risk, stated honestly: all three implementations rest on the same short mathematical chain (vertex-vector lattice → dual-vector identity → maximal even overlattice → anisotropy + Milgram). The chain has no graph-theoretic step beyond G = aA + bI + cJ being an integral PSD Gram matrix with the stated spectrum; the numerical controls test exactly that chain on ~1300 actual lattices. An error would have to be a *mathematical* error in a classical fact (Milgram's formula, anisotropy of maximal lattices, Jordan decomposition), which the controls would have exposed. Before any claim is circulated the results still need an outside expert and a written proof for each row (the hand proofs in s4lat §2.2–2.6 plus the 3-line m = 0 arguments above are enough for 96, 176, 169_42, 169_70, 300, 430, 616, 690; the scan rows have only the exhaustive finite check).