# Blind audit of `docs/new_srgs_twoorbit_2026_10_11.md` (eight SRGs on four open rows) Auditor: Claude Fable 5.1 (verification role, different model family from the authoring lane). Date: 2026-10-12. Scripts: `scripts/audit_twoorbit8_fable/`. Outputs and logs: `out/audit_twoorbit8_fable/`. Everything below was computed with code written from the PROSE of the note (own GF(2^m), own cross ratios, own graph6 codec, own GAP orbital extractor `orbitals_lib.g`, own CP-SAT fusion enumerator `fuse.py`, own C clique/coclique enumerator `cliques.c`). Nothing from `scripts/new_srgs_twoorbit_2026_10_11/` was imported or called; I did not need to open those scripts to diagnose anything, because every construction matched at the first attempt. Canonical forms: `nauty-labelg -q` output hashed with SHA-256 (first 16 hex), dreadnaut for |Aut| and generators, all inside `srg-queue`. Resource rule respected: at most 3 of my processes at a time, `nice -n 5`; no `pkill` (one stale GAP process of my own was stopped by PID). ## 0. Summary * **All 8 constructions MATCH** the published graph6 files (canonical forms), including the five q = 8 graphs rebuilt from the cross-ratio rules alone, 160 #1 from the transversal-flag rule, and 160 #2/#3 from a from-scratch TomLib rebuild of the 25:60:105 action with my own fusion enumeration (4 fusions, 2 classes). * **All structural claims SOUND**, with two labelling corrections for the paper: the "rk₂(A)" column of the invariant table is really rk₂(A + I) for the 232 and 280 rows (A is invertible mod 2 there), and "every other local graph has ≥ 10 distinct eigenvalues" is false for the cell vertices of 160 #2 (6 eigenvalues). * **Family claims:** q = 4 CONFIRMED (two classes of srg(35,16,6,8), variant B = skew lines of PG(3,2), |Aut| = 8!, variant A |Aut| = 1440; 280- and 232-types give no srg at all, parameter-free). q = 16 and q = 32: all nine (type × q) verdicts and the six t-free q = 16 verdicts are **INFEASIBLE (complete)** in my own pipeline - CONFIRMED (§3). * **Novelty:** no construction of any of the four parameter sets found (Brouwer's live table re-fetched today: all four rows "?", complement rows uncommented; WebSearch; arXiv 2025-26). Standard caveat: MathSciNet/zbMATH and the full text of Brouwer-Van Maldeghem not searched. * The one genuine ambiguity in the prose is the third flag rule of 160 #1 (an ordered-pair rule stated as if symmetric); both readings give the same graph. Details in §1.3. ## 1. Constructions (MATCH / MISMATCH) Hashes of the published files (my run, `canon_rules_q8.log`; `sha256sum -c SHA256SUMS_8graphs.txt`: all OK): | file | canonical hash | my rebuild | hash of rebuild | verdict | |---|---|---|---|---| | G160.g6 (160 #1) | 51df48ef431ca0d6 | transversal-flag rule, `b2_flags160.py` (both orientations of rule 3) | 51df48ef431ca0d6 | **MATCH** | | G160b.g6 (160 #2) | b5f99f4d91c0e61f | TomLib 2⁴:(S3×S3) on classes 25:60:105, all fusions (`g160_tomlib.g`, `fuse.py`) | b5f99f4d91c0e61f (sols 0, 3) | **MATCH** | | G160c.g6 (160 #3) | 0067dada7b91f3a7 | same action, the other class | 0067dada7b91f3a7 (sols 1, 2) | **MATCH** | | G232.g6 | 5bb9f44b72c817e0 | 232 rule, variant B (quotient), `b1_rules.py 3 232 B` | 5bb9f44b72c817e0 | **MATCH** | | G261a.g6 (261 #1) | 8f942e64f9761138 | 261 rule, variant A (product) | 8f942e64f9761138 | **MATCH** | | G261b.g6 (261 #2) | 6e07027b471c1417 | 261 rule, variant B (quotient) | 6e07027b471c1417 | **MATCH** | | G280a.g6 (280 #1) | aa49a299a69037aa | 280 rule, variant A | aa49a299a69037aa | **MATCH** | | G280b.g6 (280 #2) | 5fda380267c5e91e | 280 rule, variant B | 5fda380267c5e91e | **MATCH** | All five rule-built q = 8 graphs pass the exact integer check A² = kI + λA + μ(J − I − A) with the stated parameters (`b1_rules_q8.log`); the valencies split exactly as the note says (261: 6 + 14 + 42 + 2 and 8 + 56; 280: 14 + 42 + 7 and 63 = 9 pairs × 7 scalars; 232: 54 + 9 and 14 + 49). The 232 rule with variant A (product) is NOT strongly regular, as the note states. Exponent m = 2 in d ∈ {χ^{±m}} gives the same five graphs (`rules_q8_expo2.log`). ### 1.1 How I read the rules (so the paper can be checked against this reading) * Points of PG(1,64) are t ∈ F₆₄ ∪ {∞}, vectors (1,t) and (0,1); [u,v] = det. χ({a,b},{x,y}) = [a,x][b,y]/([a,y][b,x]); the pair {χ, χ⁻¹} is what is used everywhere. For two pairs of PG(1,8) or two elements of E, χ ∈ F₈*; for a pair and an element of E, χ⁹ = 1 (checked: χ^8 = χ⁻¹). "Primitive cube root of unity" = χ ≠ 1, χ³ = 1. * d = c′/c (B) or d = c·c′ (A), c, c′ ∈ F₈* ⊂ F₆₄, F₈ = {t : t⁸ = t}. * 261: same pair, c ≠ c′ → adjacent; |π ∩ π′| = 1 → d = 1; disjoint → d ∈ {χ^{±1}}; (π,c) ~ p iff p ∈ π; P1 a clique. * 280: same as 261 on pairs but no same-pair edges; (π,c) ~ e iff χ(π;e) is a primitive cube root of unity; E a coclique. * 232: (e,c) ~ (e′,c′) iff e ≠ e′ and c′/c ∈ {χ(e,e′)^{±1}}; (e,c) ~ π iff χ(π;e) primitive cube root; T(9) on P2. Everything is exactly as written in the note; no hidden convention was needed. ### 1.2 The Γ₈ model and the TomLib actions (independent rebuild) My own generators of Γ_q = (PGL(2,q) × C_{q−1}) ⋊ (⟨φ⟩ × ⟨ι⟩) (`b3_gamma_gens.py`: t ↦ t+1, t ↦ ωt, t ↦ 1/t on PG(1,q²), φ = Frobenius on points and c ↦ c², ι: c ↦ c⁻¹, τ: c ↦ cω) give |Γ₈| = 21168 and |t-free subgroup| = 3024, orbits 252 + 9 / 252 + 28 / 196 + 36 and, for the t-free subgroup, 36 + 216 + 9 / 36 + 216 + 28 / 28 + 168 + 36 with 53 / 57 / 49 orbitals, as in the note's `act*.info`. Exhaustive fusion enumeration at the target parameters (`fuse_small.log`, all `OPTIMAL` = complete): | action | fusions | classes | |---|---|---| | Γ₈ on 261 | 3 | 1: 6e07027b (= G261b) | | t-free on 261 | 6 | 2: 8f942e64 (G261a) ×3, 6e07027b (G261b) ×3 | | Γ₈ on 280 | 3 | 1: 5fda3802 (= G280b) | | t-free on 280 | 6 | 2: aa49a299 (G280a) ×3, 5fda3802 (G280b) ×3 | | Γ₈ on 232 | 3 | 1: 5bb9f44b (= G232) | | t-free on 232 | 3 | 1: 5bb9f44b | | TomLib 2⁴:(S3×S3) on 25:60:105 (160) | 4 | 2: b5f99f4d (G160b) ×2, 0067dada (G160c) ×2 | This reproduces the note's 6 + 6 + 3 (+4) solutions and the five (+2) classes. TomLib facts re-checked: class 25 = C6 (index 96), class 60 = D12 (index 48), class 105 = S3 × S3 (index 16), the action is faithful, and H25 lies in exactly one conjugate of class 60 (`g160_tomlib.log`). ### 1.3 The 160 #1 prose rule: one ambiguity, no error The third flag rule ("|T∩T′| = 1, f ∈ T′, f′ ∉ T, f and f′ non-collinear: adjacent iff δ = 2") is a rule on ORDERED pairs; read literally together with "all other flag pairs are non-adjacent", the relation would not be symmetric. The intended reading is: apply the rule to the ordering in which f ∈ T′ (equivalently, for the mirror ordering f′ ∈ T, f ∉ T′, adjacency iff δ = 1). With this reading the graph is srg(160,54,18,18) and matches G160; the other orientation (δ = 1 ↔ δ = 2 swapped, i.e. z ↦ −z) gives the same canonical form (`b2_flags160.log`). The paper should state the rule symmetrically. Case counts over unordered flag pairs (|T∩T′|=1: collinear-both-outside 2592, non-collinear-both-outside 1296, f∈T′ 1296, f′∈T 1296, f = f′ 432; |T∩T′|=0: collinear 1296, non-collinear 1296) are consistent with 48·3 flags. Also note the first rule needs f ≠ f′; the case f = f′ (the common cell) is "other" and non-adjacent. ## 2. Structural claims (SOUND / FAIL) | claim | my result | verdict | |---|---|---| | \|Aut\| = 1728, 1728, 576, 21168, 3024, 21168, 3024, 21168 | dreadnaut: 1728, 1728, 576, 21168, 3024, 21168, 3024, 21168 (`dn_aut.log`) | SOUND | | Aut orbits 16+144, 16+144, 96+48+16, 196+36, 216+36+9, 252+9, 216+36+28, 252+28 | same (`aut_struct.log`) | SOUND | | Aut(160#1) = C3 × 2⁴:(S3×S3), centre C3 | GAP: `C3 x ((C2^4) : (S3 x S3))`, centre C3, G′ = A4 × A4 | SOUND | | Aut(160#2) = C3 : 2⁴:(S3×S3), centre 1, not ≅ Aut(160#1) | GAP: `C3 : ((C2^4) : (S3 x S3))`, centre 1, G′ = C3 × A4 × A4; IsomorphismGroups = fail | SOUND | | Aut(160#3) = 2⁴:(S3×S3) (TomLib group) | GAP: `(C2^4) : (S3 x S3)`, order 576; ≅ TomLib group: see `aut_struct2.log` | SOUND | | Aut(#4) ≅ Aut(#6) ≅ Aut(#8), derived subgroup GL(2,8), quotient C6 | pairwise isomorphic (GAP); G′ of order 3528 = `GL(2,8)`, G/G′ = C6; centre 1 | SOUND | | Aut(#5) = Aut(#7) = C2 × PΓL(2,8) | GAP `C2 x (PSL(2,8) : C3)`, centre C2, isomorphic to each other and to C2 × PΓL(2,8) (`aut_struct2.log`) | SOUND | | 9 points = Delsarte clique in both 261 graphs | Delsarte bound 1 − k/s = 9; the P1 tail is a 9-clique by the rule (both variants); the unique Aut-orbit of size 1 among the 9-cliques (46 = 36+9+1, 100 = 63+36+1) | SOUND | | 28 conjugate pairs = Hoffman coclique in both 280 graphs | Hoffman bound v(−s)/(k−s) = 28; E is a coclique of size 28 by the rule, and an Aut-orbit | SOUND | | 232: 513 Delsarte 8-cliques in two Aut-orbits 504 + 9 | own C enumeration: 513 8-cliques (complete), orbits [504, 9]; they cover 252 edges once and 7056 twice | SOUND | | 232: no Hoffman 29-coclique | own C enumeration with Hoffman pruning: 0 (complete, 130714 nodes) | SOUND | | 261 #2 local graph of a point ≅ 8×8 rook's graph | local graph at a point vertex: srg(64,14,6,2), canonical form = my own L₂(8) (cfa14539) | SOUND | | 261 #1: 46 9-cliques = 1 + 9 + 36; 261 #2: 100 = 1 + 63 + 36 | 46, orbits [36, 9, 1]; 100, orbits [63, 36, 1] | SOUND | | 261 #2: 252 Hoffman 29-cocliques = 126 + 126 (complete) | 252 (complete, 2.07 M nodes), orbits [126, 126] | SOUND | | 160: Hoffman 16-cocliques 158 / 242 / 186 in 7 / 10 / 12 orbits | 158 [48,36,36,16,12,9,1]; 242 [48,36,36,36,24,24,16,12,9,1]; 186 [36,32,24,24,16,12,12,12,8,6,3,1] | SOUND | | none geometric | 10-cliques: 0 in all three 160 graphs and both 280 graphs (complete; Delsarte bound 10); 261: 46 resp. 100 Delsarte 9-cliques < 232 lines needed by pg(8,7,2); 232: exact cover of the edge set by 8-cliques (the line set of a pg(7,8,2) would be one) is CP-SAT INFEASIBLE | SOUND | | pairwise non-isomorphic within rows | 8 distinct canonical hashes; invariants: rk₂(A) 54/34/44 (160), 116/44 (261), rk₂(A+I) 136/64 (280); coclique counts 158/242/186; clique counts 46/100; \|Aut\| 3024/21168 | SOUND | | rk₃(A − 6I) = 60 (160), rk₇(A − rI) = 59 / 87 / 88 | same | SOUND | | **"rk₂(A)" = 64 (232), 136 (280 #1), 64 (280 #2)** | rk₂(A) = 232, 280, 280 (A² ≡ I mod 2 for these parameters, so A is invertible over GF(2)); the quoted numbers are rk₂(A + I) | **mislabelled** (numbers right, name wrong) | | local-graph eigenvalue counts: 232 36-orbit 5, 196-orbit 6; 261#1 points 5; 280#2 E 8; "every other ≥ 10" | 5, 6, 5, 8 confirmed; but 160 #2 cell vertices: 6 distinct eigenvalues {−6,−3,0,3,6,18}; 160 #1 cells 10; 160 #3 cells 18 | one exception to "≥ 10" | Logs: `dn_aut.log`, `aut/*.dn`, `aut_struct.log`, `aut_struct2.log`, `cliques.log`, `cliques/*.txt`, `invariants.log`, `cocl_more.log`. ## 3. Family claims (CONFIRMED / UNDECIDED) Same generators and the same pipeline as the q = 8 control (which re-found all five classes). Target parameters pg(q+1,q−2,2), pg(q,q−1,2), pg(q−1,q,2); CP-SAT, 1 worker, `enumerate_all_solutions`. | q | 261-type | 280-type | 232-type | |---|---|---|---| | 4 | srg(35,16,6,8): Γ₄ 1 fusion, t-free 2 fusions, **2 classes**: 731ee950 = my own skew-lines graph of PG(3,2) (|Aut| = 40320 = 8!) = variant B; 87eca080 = variant A, |Aut| = 1440. Parameter-free search finds additionally only the complements srg(35,18,9,9). **CONFIRMED** | INFEASIBLE at srg(36,15,6,6) and parameter-free, both groups. **CONFIRMED** | INFEASIBLE at srg(28,15,6,10) and parameter-free, both groups. **CONFIRMED** | | 8 | 2 classes (controls) | 2 classes | 1 class | | 16 (v = 2057 / 2160 / 1936) | **INFEASIBLE (complete)** under Γ₁₆ (32 orbitals, 28 classes) and under the t-free subgroup C2 × PΓL(2,16) (5 orbits, 301 orbitals = 175 symmetrised classes). **CONFIRMED** | **INFEASIBLE (complete)** under Γ₁₆ (34 / 30) and t-free (319 / 185). **CONFIRMED** | **INFEASIBLE (complete)** under Γ₁₆ (31 / 27) and t-free (285 / 164). **CONFIRMED** | | 32 (v = 16401 / 16864 / 15904) | **INFEASIBLE (complete)** under Γ₃₂ (62 orbitals, 58 classes). **CONFIRMED** | **INFEASIBLE (complete)** under Γ₃₂ (68 / 62). **CONFIRMED** | **INFEASIBLE (complete)** under Γ₃₂ (65 / 59). **CONFIRMED** | Every family verdict above is a CP-SAT status INFEASIBLE (not UNKNOWN; `q16_fuse.log`, `q32.log`, `fuse_small.log`); the longest run was 11.8 s. The q = 16 and q = 32 runs use exactly the pipeline that re-found all five q = 8 classes and the PG(3,2) skew-lines graph at q = 4 (control). Not re-run by me: the note's "Γ₁₆ without φ" variant and the TomLib-type q = 16 actions with 8 copies (v = 1241, 1344, 1216), and the 48 direct monomial-rule tests at q = 16 (my Γ₁₆ / t-free fusion verdicts subsume every Γ₁₆-invariant or t-free-invariant rule, which includes all monomial rules d ∈ {χ^{±m}} with the same cube-root tail rule). The note's q = 32 claim is only "under Γ₃₂"; I confirm exactly that. The t-free subgroup at q = 32 (orbits 528 + 3·5280 + tail) was not searched by either lane: say so in the paper. Interpretation (agrees with the note): no infinite family in this model; the 280/232 rules need 3 | q+1 (q = 2^odd), the 261-type exists for q = 4 (classical) and q = 8 only among q ≤ 32. ## 4. Novelty * **Brouwer's live table, fetched 2026-10-12 by me** (`out/audit_twoorbit8_fable/brouwer/srgtab*.html`): rows `? 160 54 18 18` (comment "pg(9,5,3) does not exist (no 2-graph* for line graph)"), `? 232 63 14 18` ("pg(7,8,2)?"), `? 261 64 14 16` ("pg(8,7,2)?"), `? 280 63 14 14` ("pg(9,6,2)?"). The complement rows (105,68,70), (168,122,120), (196,147,147), (216,166,168) carry no comment. The references page `srgtabrefs.html` mentions none of the four sets. * **Two-graphs.** None of the four parameter sets is in the switching class of a regular two-graph and none is a descendant of one: v − 1 − 2k = 51, 105, 132, 153 is not in {−1−2r, −1−2s} = {−13, 11}, {−11, 17}, {−13, 15}, {−15, 13}, and k ≠ 2μ in all four cases. So no "related two-graph" row can hide a known construction. * **WebSearch (standard and extended), 2026-10-12**: queries on each parameter set (with and without spaces/commas), on pg(7,8,2)/pg(8,7,2)/pg(9,6,2)/pg(9,5,3), on PSL(2,8)/PΓL(2,8) SRG constructions, on Crnković-Švob 2024-25 and on arXiv 2025-26 new-SRG papers. **No construction of any of the four sets found.** Closest items: Brouwer-Crnković-Švob, directed srg(63,11,8,1,2) from L₂(8) (Discrete Math. 347 (2024) 114146) and the follow-up "Some directed strongly regular graphs constructed from linear groups" (AAECC 2025, doi 10.1007/s00200-025-00703-8, abstract not seen); van Dam-Guo, pseudo-geometric SRGs with a regular point (arXiv 2204.04755, rev. 2026; parameter sets 85 and 156); Muzychuk-Ryabov arXiv 2601.09955; Byzov-Pushkarev arXiv 2603.07707; arXiv 2606.10652 (120,56,28,24). None touches these rows. A packings-of-PG(3,2) paper (arXiv 2511.03040) confirms that the skew-lines graph is the unique rank-3 srg(35,16,6,8), consistent with §3 (variant A has rank > 3). * **Not searched:** MathSciNet, zbMATH, the full text of Brouwer-Van Maldeghem (2022) and of the AAECC 2025 paper. "New" must keep the note's meaning: not in Brouwer's live table and not found by these searches. ## 5. What the paper must say (gaps, ambiguities, overclaims) 1. **Rename the "rk₂(A)" column** or split it: for 232 and 280 the quoted values 64 / 136 / 64 are rk₂(A + I); rk₂(A) is 232 / 280 / 280 (A² ≡ I mod 2). For 160 and 261 the values 54 / 34 / 44 and 116 / 44 are rk₂(A) (there A + I has full rank). Either report both columns or say "2-rank of A, resp. of A + I when A is invertible mod 2". 2. **State the third flag rule of 160 #1 symmetrically** ("for the ordering with f ∈ T′, f′ ∉ T: δ = z′ − z = 2; equivalently δ = 1 for the opposite ordering"), and say explicitly that rule 1 requires f ≠ f′. 3. **"Every other local graph has ≥ 10 distinct eigenvalues"** is false for the 16 cell vertices of 160 #2 (6 distinct eigenvalues: −6, −3, 0, 3, 6, 18, not strongly regular). Correct the sentence or list all local spectra. 4. **Non-geometric, 261 row:** the short argument is a count (a pg(8,7,2) has 232 lines, but only 46 resp. 100 Delsarte 9-cliques exist); for 232 the argument is the exact-cover infeasibility (or the note's "252 edges once, 7056 twice" observation, which by itself does NOT exclude a sub-family: say why — every edge covered once forces its clique, and the CP-SAT exact cover is then infeasible). For 160 and 280 it is "no 10-clique" (160 also from pg(9,5,3) nonexistence). 5. **Hoffman cocliques:** 261 #1 has NONE (this audit, complete enumeration, §6) - the paper may replace "undecided" by 0 and use 0 vs 252 as a further invariant separating the two 261 graphs. For the 280 graphs keep "≥ 37" / "≥ 253, incomplete" unless a run in `cocl_more.log` finished. 6. **Family verdicts** must carry the solver status word: write "INFEASIBLE (complete)" only where the log says INFEASIBLE; any UNKNOWN/timeout is "undecided" (see §3 for the rows this audit could or could not settle). 7. **Γ₈ = Aut:** the argument (Γ₈ ≤ Aut by construction, |Γ₈| = |Aut| = 21168) is correct, but the paper should prove or cite |Γ₈| = 21168 (= 504·7·3·2) and state that φ acts on the vertex set with order 3 (the conjugation t ↦ t⁸ fixes every vertex). My `aut_struct2.log` checks Γ₈ ≅ Aut(261 #2) directly. 8. **Novelty wording:** "new as far as we can determine (Brouwer's live table 2026-10-12, web and arXiv searches; not MathSciNet/zbMATH/BvM full text)". Mention that the 232 and 280 rules need 3 | q+1, i.e. q = 2^odd, so q = 4, 16 are excluded by the rule itself and only q = 32 was tested (the note already says this; keep it). 9. **Completeness scope:** each verdict is "all fusions of this one action/group"; there is no classification claim for the rows, and the server's single-solution limitation (§3 of the note) should be stated as the reason three graphs were missed. 10. **Data:** publish the eight graph6 files with the SHA-256 list (verified here), the rule scripts, and the independent audit directory `out/audit_twoorbit8_fable/`. ## 6. Addenda (filled at the end of the run) * **261 #1 Hoffman cocliques: NONE** (new; the note had "undecided, CP-SAT UNKNOWN after 1800 s"). My C enumerator with Hoffman-count pruning finished completely: 0 cocliques of size 29 in G261a (1,552,209 nodes, 5 min; `cocl_more.log`). Controls for the same program: 252 for 261 #2, 158 / 242 / 186 for the 160 graphs (all equal to the note's complete counts) and 0 for 232 (equal to the note's CP-SAT INFEASIBLE). So the two 261 graphs are also distinguished by 0 vs 252 Hoffman cocliques, and the paper may upgrade this row. * **280 #1 / #2 Hoffman 28-cocliques:** my runs (`cocl_more.log`, 2400 s limit each) had not finished at hand-back time; see the file for the final line. Until a run finishes, the paper keeps "≥ 37" and "≥ 253, incomplete". * Γ₈ built from my generators is isomorphic to Aut(261 #2) (GAP), has StructureDescription `C7 : (C2 x (PSL(2,8) : C3))`, derived subgroup GL(2,8) and quotient C6; Aut(160 #2) has a normal C3 and is a split extension C3 : T with T ≅ TomLib 2⁴:(S3×S3) acting with orbits 96 + 48 + 16 (no NORMAL subgroup of order 576 is ≅ T — consistent with the note's "C3 : (...)" and with centre 1).