# Referee report: `docs/paper/new_srgs_twoorbit.tex`, version 2 (commit 39a35e2, 20 pp)

Paper: *Strongly regular graphs on 160, 232, 261 and 280 vertices from fusions of orbitals of PΓL(2,8) and 2^4:(S3×S3)*
(eight graphs: srg(160,54,18,18) ×3, srg(232,63,14,18), srg(261,64,14,16) ×2, srg(280,63,14,14) ×2).

Referee: Claude Fable 5.1 (verification role; different model family from the authoring sessions). Date: 2026-10-12.
Own code: `scripts/referee_twoorbit_fable/` (library `reflib.py`: graph6 codec, exact SRG check, GF(2^m);
`r1_files.py`, `r2_build.py`, `r2c_canon.py`, `r3_cliques.py`, `r4_skewlines.py`, `r5_groups.g`, `r5b_orbitals.g`,
`r6_controls.py`, `r7_pranks.py`, `cocl.c`). Logs: `out/referee_twoorbit_fable/*.log`, rebuilt graphs `ref_*.g6`,
generator files `ref_*.gens`. Nothing from `scripts/new_srgs_twoorbit_2026_10_11/` or `scripts/audit_twoorbit8_fable/`
was imported, called or read for algorithms; the constructions were re-implemented from the wording of Section 2 of the
paper with a different model of GF(64) (F2[x]/(x^6+x^5+1) instead of x^6+x+1), a different vertex order and a
different encoding of the 4×4 grid. External tools: nauty 2.8.8 (`nauty-labelg`, `dreadnaut`), GAP 4.12.1 + TomLib
1.2.11, all inside `srg-queue`. Resource rule respected (≤ 2 processes, `nice`; no `pkill`). Previous standard:
`docs/referee_new_srgs_multiorbit_v2_fable_2026_10_12.md`; audit of v1: `docs/audit_twoorbit8_fable_2026_10_12.md`.

## Recommendation

**ACCEPT with minor revision** (no major issues). Every hand-proved statement I checked (Lemmas 2.1, 2.2,
Propositions 2.4, 2.5, 2.9, the non-geometry arguments, the two-graph remark, the "why q = 8" paragraph) is correct;
one proof has a small gap in its wording (Lemma 2.2(2), R1), none has an error. Every number I recomputed agrees with the
paper: all eight files, their SHA-256 sums, parameters, spectra, |Aut| and vertex orbits of all eight graphs, the
canonical identity of all six prose constructions with the published files, the Delsarte clique counts (513, 46, 100),
the absence of 10-cliques in the five 160/280 graphs, the exact-cover infeasibility for 232, the 2-, 3- and 7-ranks of
Table 4.1, the local spectra, the symmetrised-orbital counts of Table 5.1, the TomLib class data of Tables 3.1 and
5.1, |Γ₈| = 21168 and |C₂×PΓL(2,8)| = 3024 on independently written generators, the 160 grid group (1728, primitive of
rank 3 on cells), the Hoffman coclique counts 158 / 242 / 186 / 0 / 0 / 252 and the exact 280 counts 37 / 289 by a third program, and the q = 4
family result (two srg(35,16,6,8), the quotient graph = skew-lines graph of PG(3,2) with |Aut| = 40320, the product
graph |Aut| = 1440). One remark of the paper can be upgraded from "plausible" to proved (R3), and the two Hoffman coclique lower
bounds for the 280 graphs can be replaced by the exact counts 37 and 289 that the audit's enumerator has since produced
(R9). The required changes are wording, one notation clash, one citation, the Zenodo placeholder, the small proof gap, and R9.

## 1. Mathematics checked by hand (Section 2 of the paper)

### Lemma 2.1 — correct
* (1) `[u,w] = [w,u]` in characteristic 2; swapping a,b (or c,d) inverts χ; χ(Y,X) = χ(X,Y). Correct.
* (2) Plücker: `[a,b][c,d] + [a,c][b,d] + [a,d][b,c] = 0` (signs irrelevant in char 2); χ = 1 iff `[a,b][c,d] = 0` iff
  a = b or c = d. Correct.
* (3) σ fixes PG(1,8) pointwise and swaps the two points of each member of E, so χ^σ = χ for X,Y ∈ L or X,Y ∈ E
  (two swaps or none), and χ^σ = χ^{-1}, i.e. χ^8 = χ^{-1}, χ^9 = 1, for X ∈ L, Y ∈ E. Correct; also verified
  numerically for all pairs (q = 8 and q = 4, `r2_build_q*.log`).
* (4) `[gu,gw] = det(g)[u,w]`, det cancels; φ is a field automorphism applied coordinatewise. Correct.

### Lemma 2.2 — correct, one wording gap (R1)
* (1) With π = {0,∞}, χ(π,{a,b}) = a/b; the pairs {a, a/x}, a ∈ F₈*, are 7 distinct unordered pairs because x ≠ x^{-1}
  (x ≠ 1 in a group of odd order). Correct.
* (2) χ(π,{ε,ε^8}) = ε^{-7}; a primitive cube root iff ord(ε) | 21 and ord(ε) ∤ 7: 21 − 7 = 14 elements, none in F₈,
  σ-closed, 7 members of E. Correct. **Gap:** "the second count follows by double counting" gives only the *average*
  number 9 of pairs per Y ∈ E; the exact value for every Y needs the transitivity of SL(2,8) on E (which preserves
  χ), proved only later in Proposition 2.4(3). One clause fixes it (R1). Both counts verified numerically.

### Proposition 2.4 — correct
* (1) Valencies: 6 + 14 + 42 + 2 = 64 and 8 + 56 = 64 (261); 14 + 42 + 7 = 63 and 9·7 = 63 (280); 2·27 + 9 = 63 and
  14 + 49 = 63 (232). The "two neighbours per disjoint pair" uses χ ≠ χ^{-1}, which holds because χ ∈ F₈* \ {1} has odd
  order (the paper cites Lemma 2.1(2), i.e. χ ≠ 1; fine). All splits reproduced (`r2_build_q8.log`).
* (2) Invariance: SL(2,8) preserves χ and the three point sets and commutes with σ; t fixes d = c'/c; φ squares χ and d
  simultaneously and fixes {ζ,ζ²}; ι inverts d, and all conditions are symmetric under d ↦ d^{-1}. For the product rule
  t multiplies d by ω² and is correctly excluded. Verified: each of the six generators is an automorphism of the quotient
  graphs, and all but t of the product graphs (`r2_build_q8.log`, 94 True / 4 False, the 4 being t on the product
  graphs with exponents 2 and 3). **φ has order 3 on the vertices:** φ³ = σ fixes every vertex; verified in GAP.
* **The order of Γ₈ (fibre-product argument):** the homomorphism γ ↦ (γ̄, γ̂) into PΓL(2,8) × AGL(1,7) is injective
  because Γ₈ is defined as a permutation group of the vertex set and an element with γ̄ = γ̂ = 1 fixes every vertex. The
  image lies in F = {(x,y) : ε₁(x) = ε₂(y)}, |F| = 1512·42/3 = 21168, since ε₁ and ε₂ are trivial on the images of
  SL(2,8), t, ι and agree on φ ↦ (Frob, ×2). The image contains PSL(2,8) × 1, 1 × D₁₄ (translations and negation, the
  kernel of ε₂) and (Frob, ×2); PSL(2,8) × D₁₄ has index 3 in F and (Frob, ×2) maps to a generator of the quotient, so the
  image is F. Correct. The 3024 argument (restrict γ̂ to ⟨×2, −1⟩: 1512·6/3) is correct; ι is central, ⟨SL(2,8),φ⟩ ≅
  PΓL(2,8) (projection onto the first coordinate is injective because y is determined by x), and ι ∉ ⟨SL(2,8),φ⟩ because
  −1 ∉ {1,2,4}. Correct. Faithfulness: on every one of the three vertex sets L is present, so the kernel argument via
  "a point is the intersection of two pairs" already suffices; the E-argument (a normal subgroup meeting PSL(2,8)
  trivially centralises it, and C_{PΓL(2,8)}(PSL(2,8)) = 1) is also correct.
  **GAP on my own generators** (`r5_groups.log`): |⟨shift, scale, invert⟩| = 504 = PSL(2,8); |Γ₈| = 21168, structure
  `C7 : (C2 x (PSL(2,8) : C3))`, centre 1, derived subgroup GL(2,8), Γ₈/Γ₈' = C₆; |t-free| = 3024, structure
  `C2 x (PSL(2,8) : C3)`, isomorphic to TomLib's `L2(8):3x2`; φ of order 3; ι central in the t-free group and not in
  ⟨SL(2,8), φ⟩ — all as claimed.
* (3) Orbits 252 + 9, 252 + 28, 196 + 36 for Γ₈ and 36 + 216 + 9, 36 + 216 + 28, 28 + 168 + 36 for the t-free
  group: reproduced in GAP. The stabiliser of a point of PG(1,64) \ PG(1,8) in PSL(2,8) is the non-split torus C₉
  (504/56): standard, and consistent with the orbit of length 28 on E.

### Proposition 2.5 — correct
* Two points: 7 points + 7 copies of {p,p'} = 14. Point p and (π,c), p ∈ π: the other point of π, the other 6 copies, and
  one copy of each of the 7 pairs π' ∋ p, π' ≠ π (d = 1) = 14. Point p and (π,c), p ∉ π: 2 points of π, one copy of each
  {p,a} (a ∈ π), two copies of each of the 6 pairs {p,b}, b ∉ π: 2 + 2 + 12 = 16. Correct for both rules (the d = 1 copy
  is unique under either rule).
* Local graph of a point under Q: rows "point a and the 7 copies of {p,a}" are cliques (a ∈ {p,a}; copies of one pair
  adjacent), the column "all points" is a clique, the column "label c" is a clique (|{p,a} ∩ {p,b}| = 1 and c/c = 1);
  a point a and ({p,b},c), b ≠ a, are non-adjacent (a ∉ {p,b}); ({p,a},c) and ({p,b},c'), a ≠ b, c ≠ c', are
  non-adjacent (d ≠ 1). So the local graph is L₂(8). Correct; verified: my local graph is srg(64,14,6,2) with the
  canonical form of my own 8×8 rook's graph (`r2c_canon.log`). Under P the column relation is c' = c^{-1}, so the
  rook's-graph statement is rightly restricted to Q.

### Remark 2.7 — correct
9 points (clique by rule); 7 copies of a pair plus its 2 points (copies pairwise adjacent, each adjacent to both
points, the points adjacent): 9-cliques; under Q the column "p and ({p,a},c), 8 values of a" is a 9-clique; under P
only the label c = 1 gives such a clique (c·c = 1 iff c = 1), which is exactly the 9 "label-1 stars" counted in
Section 4.1. E is a coclique of size 28 = Hoffman bound in both 280 graphs; the 8 pairs through a point form an
8-clique of T(9) = Delsarte bound of Γ₂₃₂. Correct.

### Construction 2.8 and Proposition 2.9 — correct
* Two even transversals meet in 4, 1 or 0 cells (fixed points of a non-identity element of A₄: 1 or 0). "f ∈ T' and
  f' ∈ T cannot both hold" when |T ∩ T'| = 1 and f ≠ f'. The rule is symmetric under exchange of the two triples
  (δ ↦ −δ and the two memberships exchanged), and the mirror choice (δ = 1 for f ∈ T') is the image under z ↦ −z.
  Correct; I built both orientations and both have the canonical form of G160.g6 (`r2c_canon.log`).
* A cell lies on 12/4 = 3 even transversals; each of the 9 others meets the row and the column of x in two different
  cells, leaving 2 cells of T not collinear with x; 9·2·3 = 54. The 16 cells are a coclique of the Hoffman size
  160·6/60 = 16. Correct.
* |G| = 2·(24·24/2) = 576; (a,b) maps T_s to T_{a^{-1}sb} (same sign), τ maps T_s to T_{s^{-1}}; G is transitive on
  cells, even transversals and flags; the cell stabiliser {(a,b) ∈ S₃×S₃ : sgn a = sgn b}⋊⟨τ⟩ has order 36 and is
  indeed isomorphic to S₃×S₃ (the two actions of C₂² on C₃² are conjugate in GL(2,3), since the swap matrix is
  diagonalisable with eigenvalues ±1); its orbits on cells are 1 + 6 + 9, so rank 3 and primitive (the orbital graphs
  are the 4×4 rook's graph and its complement, both connected). G × C₃ preserves the rule (incidence, collinearity,
  intersection sizes and δ). All verified in GAP on my own generator permutations (`r5_groups.log`): |G × C₃| =
  1728 = `C3 x ((C2^4) : (S3 x S3))`, centre C₃, orbits 144 + 16, |G| = 576 and G ≅ TomLib `2^4:(S3xS3)`, G primitive of
  rank 3 on the 16 cells with cell stabiliser S₃×S₃, triple stabiliser D₁₂ of rank 27 on the triples, cell stabiliser
  C₃×S₃×S₃ in G × C₃ — exactly Table 3.2.

### Non-geometry arguments (Theorem 1.1(4), Section 4.1) — correct and sufficient
* 160 and 280: no clique of size 10 = Delsarte bound, so no edge is in a line of a putative pg(9,5,3) / pg(9,6,2)
  (lines of a partial geometry are Delsarte cliques of its collinearity graph). Reproduced: 0 cliques of size 10 (and 11)
  in all five graphs (`r3_cliques.log`). For 160 this also follows from the non-existence of pg(9,5,3).
* 261: a pg(8,7,2) has 261·8/9 = 232 lines, all Delsarte cliques; 46 < 232 and 100 < 232. Correct and sufficient.
  Edge counts: 36 + 36·35 + 9·28 = 1548 covered edges for P (8352 − 1548 = 6804), + 63·28 = 3060 for Q
  (8352 − 3060 = 5292): both reproduced.
* 232: 513 Delsarte 8-cliques cover 252 edges once (the T(9) edges, each in the unique star of the common point) and
  7056 twice; a partition would consist of 261 cliques and must contain the 9 stars; the remaining 7056 edges each lie
  in exactly two of the other 504 cliques, so a partition is a 2-colouring of the "clique-sharing graph", and the
  exact-cover search says none exists. Reproduced with my own Algorithm X: the 9 forced stars are pairwise
  edge-disjoint, and the exact cover of the remaining 7056 edges by the 504 compatible cliques does not exist (5 nodes).
  Controls: L₂(5), GQ(2,2), T(9) — lines found and partition found (`r6_controls.log`).
* Conventions paragraph: the outside-vertex counts |C|(k−|C|+1)/(v−|C|) and k|S|/(v−|S|) are the standard Delsarte
  and Hoffman equalities; verified to hold for all enumerated cliques (0 violations).

### Regular two-graph remark (Section 7) — correct
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μ
(54 ≠ 36, 63 ≠ 36, 64 ≠ 32, 63 ≠ 28); recomputed in `r1_files.log`.

### "Why q = 8" (Sections 6 and 7) — correct
Over PG(1,q), for X ∈ L, Y ∈ E, χ^q = χ^{-1} so χ^{q+1} = 1; a primitive cube root among these values needs 3 | q + 1,
i.e. q = 2^e with e odd. At q = 4 the cross-type edge sets are empty (verified: 0 cube-root values per pair,
`r2_build_q4.log`), and the 280/232-type vertex sets then carry no srg (my builds are not even regular: degrees
{0,12} and {6,10}). The vertex-number polynomials (q+1)(q²−q+2)/2, q(q−1)(q+2)/2, q(q²−q+2)/2 and the pg(q,q−1,2),
pg(q+1,q−2,2), pg(q−1,q,2) parameters, and all values quoted for q = 4, 16, 32 (35/36/28, 2057/2160/1936,
16401/16864/15904; 1241/1344/1216 for the TomLib-type actions with 1 + 2e = 9 copies) check. "2e + 1 = q − 1 iff
q = 8" is right (e = 3 only).

### Other hand-checkable statements
Table 1.1: eigenvalues, multiplicities (75/84, 144/87, 144/116, 135/144), complements, Delsarte and Hoffman bounds
all recomputed. A² ≡ 0 mod 2 for 160 and 261, A² ≡ I for 232 and 280 (from A² = kI + λA + μ(J−I−A)): verified on the
files. Table 3.1 indices 9, 36, 28, 216, 168 and the class structures; Table 3.2 stabiliser orders = |Aut|/orbit
length for all 19 entries. The exponent remark after Construction 2.3 (c ↦ c^m maps exponent ±1 to ±m for 7 ∤ m) is
correct and I verified its consequence (Section 2.4 below).

## 2. Computations reproduced (own programs)

| item | paper | referee |
|---|---|---|
| SHA-256 of the 8 files | Data availability list | all 8 equal (`r1_files.log`); each file one graph6 line + LF |
| parameters, complements | (160,54,18,18)/(160,105,68,70) etc. | all 8 exact (bitset A² check), complements as stated |
| spectra | 54¹ 6⁷⁵ (−6)⁸⁴; 63¹ 5¹⁴⁴ (−9)⁸⁷; 64¹ 6¹⁴⁴ (−8)¹¹⁶; 63¹ 7¹³⁵ (−7)¹⁴⁴ | same |
| \|Aut\| (dreadnaut) | 1728, 1728, 576, 21168, 3024, 21168, 3024, 21168 | same, orbits 144+16, 144+16, 96+48+16, 196+36, 216+36+9, 252+9, 216+36+28, 252+28 (`r2c_canon.log`; the stray "1"s in that log are a parser artefact of the dreadnaut text, not orbits) |
| prose constructions = files (nauty-labelg canonical forms) | Section 7.3 | ref_q8_261Q = G261b, 261P = G261a, 280Q = G280b, 280P = G280a, 232Q = G232, ref_160 (both orientations of rule (3)) = G160: all MATCH; the 8 published files have 8 distinct canonical forms |
| 232 product rule not srg | λ ∈ {14,18} | 63-regular, λ ∈ {14,18}, μ ∈ {14,18} |
| Delsarte cliques | 513 (252 once + 7056 twice), 46, 100; no 10-cliques in 160×3, 280×2 | 513 (252 once, 7056 twice; 9 cliques meet the 36-set in 8 vertices, 504 in 1), 46, 100, 0, 0, 0, 0, 0; no (c+1)-cliques anywhere; outside counts exact (`r3_cliques.log`) |
| 232 exact cover | INFEASIBLE (3 programs) | NONE (own Algorithm X; controls L₂(5), GQ(2,2), T(9) find the partition) |
| Hoffman cocliques | 158, 242, 186 (160); 0 (232); 0 (261P, audit); 252 (261Q); ≥ 37, ≥ 253 (280) | own C enumerator `cocl.c` with Hoffman pruning, all COMPLETE: 158, 242, 186, 0, 0, 252, **37**, **289** (Section 2.3 below); controls L₂(5): 120 permutation cocliques, GQ(2,2): 6 ovoids |
| p-ranks (Table 4.1) | rk₂ 54/34/44, (A+I) 64, 116/44, (A+I) 136/64; rk₃ = 60; rk₇ = 59/87/88 | same, own elimination mod p; rk(A−rI) = rk(A−sI) in each case (`r7_pranks.log`) |
| local spectra (Section 4.3) | 261P point 14,6,0,−2,−8; 232 pair 14¹ 5¹⁴ 2.873⁶ (−2)³⁶ (−4.873)⁶; 232 (Y,c) 14¹ 5¹⁶ 0⁹ (−1)¹² (−3)¹⁸ (−4)⁷; counts 40,15,5 / 14,3 / 36,12,12 / 14,8 / 6,5 | all reproduced on my rebuilt graphs (multiplicities 1,11,21,28,3 for the 261P point) |
| Table 5.1 symmetrised orbitals | 28, 31, 33 (t-free), 22, 22 (C3 actions), 43 (T3 160), 10, 10, 9 (Γ₈) | 28, 31, 33, 22, 22, 43, 10, 10, 9 (`r5b_orbitals.log`), from my own groups and from TomLib directly |
| TomLib data | classes 57/53/54/27/31 of `L2(8):3x2`: orders 336/84/108/14/18; D₁₄ ⊂ class 53, D₁₈ ⊂ class 54; classes 25/60/105 of `2^4:(S3xS3)` = C₆/D₁₂/S₃×S₃; C₆ in exactly one conjugate of class 60 (double cover); 414 tables | all confirmed; additionally class 66 is a second class of D₁₂ (not containing H₂₅) — see R6 |
| q = 4 family | two srg(35,16,6,8): Q = skew-lines graph of PG(3,2), \|Aut\| = 8!; P: \|Aut\| = 1440; no 280/232-type srg | own build over F2[x]/(x⁴+x³+1): Q and P are srg(35,16,6,8); Q has the canonical form of my own skew-lines graph (disjointness of the 35 lines of PG(3,2)), \|Aut\| = 40320, P \|Aut\| = 1440 with orbits 20 + 15; 280/232-type graphs not regular |
| exponents ±1, ±2, ±3 | "plausible explanation of the multiplicity 3, not checked" | the three graphs with m = 1, 2, 3 are pairwise distinct labelled graphs on the same vertex set, each invariant under Γ₈ (Q) resp. the t-free group (P), and have one canonical form per (type, rule) — so they ARE the 3 resp. 3 + 3 fusions of Table 5.1 (R3) |
| Brouwer's live table 2026-10-12 | rows "?" with the quoted comments | re-read: `? 160 54 18 18 ... 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)?`; complement rows uncommented; no author name on these rows |

### 2.3 Hoffman cocliques of the 261 graphs (own enumerator)
Own C enumerator `cocl.c` (bitsets, vertices in increasing order, Hoffman pruning: an excluded vertex u needs
cnt(u) ≤ e and cnt(u) + |N(u) ∩ Cand| ≥ e), run to completion (`r6_cocliques.log`):

| graph | paper v2 | referee (COMPLETE) | nodes | time |
|---|---|---|---|---|
| Γ₂₆₁^Q (G261b) | 252 = 126 + 126 | **252** | 113,707,942 | 275 s |
| Γ₂₆₁^P (G261a) | 0 (audit enumerator; CP-SAT UNKNOWN) | **0** | 84,250,656 | 210 s |
| Γ₂₃₂ | 0 | 0 | 7,209,314 | 17 s |
| Γ₁₆₀^(1), ^(2), ^(3) | 158, 242, 186 | 158, 242, 186 | ~0.56 M each | ~1 s |

So the counts 0 and 252 that separate the two 261 graphs (Section 4.4) are confirmed by a third, independent program,
as are all complete counts of Section 4.2. Controls: L₂(5) gives the 120 permutation cocliques, GQ(2,2) its 6 ovoids.

**The 280 graphs (new information received during this review).** The audit's enumerator has since finished both runs
within its 2400 s limit (`out/audit_twoorbit8_fable/cocl_more.log`, exit 0 = complete): Γ₂₈₀^P has exactly **37**
Hoffman 28-cocliques (8,431,987 nodes) and Γ₂₈₀^Q exactly **289** (12,635,254 nodes). The paper v2 states "≥ 37" and
"≥ 253 (126 + 126 + 1)"; 289 − 253 = 36 further cocliques of Γ₂₈₀^Q were not found within the CP-SAT limit, presumably one
further Aut-orbit of length 36 (21168/36 = 588; not checked by the referee). Referee's own run on the 280 graphs
(`r6_cocliques_280.log`): **37** (449,691,688 nodes, 1173 s, COMPLETE) and **289** (686,619,527 nodes, 1462 s,
COMPLETE) — the audit's exact counts are confirmed by a third program, so R9 asks for exact counts, not bounds.

### 2.4 Not re-run by the referee
The q = 16 and q = 32 fusion enumerations (confirmed by the audit with its own pipeline; the controls described there
are the right ones), the TomLib-type q = 16 actions, the 48 monomial-rule tests, the server search pipeline, the Aut structure of Γ₁₆₀⁽²⁾ and Γ₁₆₀⁽³⁾ (orders and orbits confirmed;
the GAP structure strings are the audit's), MathSciNet/zbMATH.

## 3. Text, consistency, citations, hedges

* **Abstract / Theorem 1.1 / Tables 1.2, 4.1, 5.1 / status table** are mutually consistent (counts 3, 1, 2, 2; group
  orders; orbits; which results are hand vs computer). The status table correctly lists the λ, μ hand proof as absent,
  the 280 cocliques as lower bounds, q = 32 as "under Γ₃₂ only", and 160 #2/#3 as "no prose rule"; these hedges also
  appear where the claims are made (Section 4.2, Computation 6.2(3), Section 2.4, "What is proved by hand").
* **No sentence of the type "no human expert / referee has checked"**; the Acknowledgements name the author as the
  responsible expert and describe the AI use and the blind audit accurately. The data statement names every script
  I looked for; `verify_srg.py` is listed in the appendix (sha prefix 26954cc37ba0bc89 is the one quoted in the run log).
* **Can a reader rebuild each graph from the text alone?** Yes for the six graphs with a prose construction: I did so
  with a different field model, generator and vertex order, and obtained the published canonical forms at the first
  attempt. The two remaining 160 graphs are defined only through TomLib class numbers and an orbital list in a log
  file; the paper says so (R4 asks for the list to be printed).
* **Citations.** Brouwer's table URL and page range: correct. BvM: correct (CUP 2022, doi 10.1017/9781009057226).
  Burnside, 2nd ed. 1911: correct (tables of marks, Ch. XII). IKTS: Russian Math. Surveys 38:6 (1983) 123–124 —
  confirmed (Uspekhi 38:6 (1983) 115–116; doi 10.1070/RM1983v038n06ABEH003460 could be added). BCS24: arXiv 2404.03100,
  Discrete Math. 347 (2024) 114146, automorphism group L₂(8):3 — confirmed. nauty: McKay–Piperno JSC 60 (2014) 94–112,
  correct. TomLib bibitem has no year/URL (R7); OR-Tools bibitem has no version (R7).
* **Notation.** `G` denotes the grid group 2⁴:(S₃×S₃) in Sections 2.3–2.4 and C₂×PΓL(2,8) in Section 3.1 / Table 3.1
  (R2). `Γ₈` (a group) sits next to `Γ₂₃₂`, `Γ₁₆₀⁽¹⁾` (graphs) — readable but worth a word (R2). `P`, `L`, `E` are
  used in Table 1.2 before they are defined in Section 2.1 (R2).
* **Overclaims.** None found. "First graphs known with these parameters, as far as we can determine" is backed by the
  listed searches and the live table. "Both parameter sets are classical" (Computation 6.2(1)) is imprecise: there is one
  parameter set, srg(35,16,6,8), and all its graphs are known (R5). The abstract's one-line description of adjacency
  ("the quotient or the product of the labels must equal the cross ratio or its inverse") omits the d = 1 rule for
  pairs sharing a point and the cube-root rule; "essentially" or "in the main case" would be exact (R8).

## 4. Required changes (minor revision)

* **R1 (Lemma 2.2(2), proof, last sentence).** Replace "The second count follows by double counting, 36·7 = 28·9" by
  "The number of such π is the same for every Y, since SL(2,8) is transitive on E (Proposition 2.4(3)) and preserves χ;
  double counting, 36·7 = 28·9, gives 9." (Or move the transitivity of SL(2,8) on E into Lemma 2.2.)
* **R2 (notation).** (a) Rename one of the two groups called G: e.g. write `G₁₆₀` or `W` for the grid group in
  Sections 2.3–2.4 and Table 1.2, or write `C₂×PΓL(2,8)` instead of `G` in Section 3.1 and the caption of Table 3.1.
  (b) Add "(notation of Section 2.1)" to the caption of Table 1.2, where P, L, E first appear. (c) Optionally say once that
  Γ_q denotes a group and Γ_v with v ≥ 160 a graph, or rename the group (e.g. `𝔊_q`).
* **R3 (Section 5.3, paragraph "We have not identified the fusions within one class...").** This can now be stated as
  a fact: the graphs with exponents m = 1, 2, 3 are pairwise distinct as labelled graphs on the common vertex set, each
  is invariant under Γ₈ (quotient rule) resp. under C₂×PΓL(2,8) (product rule) by the argument of Proposition 2.4(2)
  (which holds verbatim for every exponent), and they are isomorphic via (X,c) ↦ (X,c^m). Since Table 5.1 lists exactly
  3 fusions for the Γ₈-actions and 3 + 3 for the t-free actions, these are the fusions. Replace "plausible explanation ...
  not checked it fusion by fusion" accordingly (this review: `r2_build_q8.log`, `r2c_canon.log`).
* **R4 (Section 2.4, Γ₁₆₀⁽²⁾ and Γ₁₆₀⁽³⁾).** The two graphs are defined only by "the orbital lists recorded in the
  data (`rerun/fuse_160c.log`)". Print the two fusions in the paper (a list of orbital indices together with a
  deterministic description of the orbital numbering, e.g. by representative pairs of cosets, or by a GAP snippet of a
  few lines), so that the graphs are reconstructible from the paper and TomLib without the author's files. Also say which
  of the two D₁₂ classes (60 or 66, see R6) the action uses.
* **R5 (Computation 6.2(1), "Both parameter sets are classical").** Write: "The parameter set is classical: all
  srg(35,16,6,8) are known — they are the complements of the 3854 descendants of the 227 regular two-graphs on 36 vertices
  (McKay and Spence 2001)." Add: B. D. McKay and E. Spence, Classification of regular two-graphs on 36 and 38 vertices,
  Australas. J. Combin. 24 (2001) 293–300. The same sentence in the abstract ("gives, for q = 4, the classical skew-lines
  graph") could add "and a second known srg(35,16,6,8)".
* **R6 (Section 2.4 and Table 5.1).** TomLib's `2^4:(S3xS3)` has two classes of D₁₂, numbers 60 and 66 (both of index
  48; H₂₅ = C₆ lies in exactly one conjugate of class 60 and in no conjugate of class 66). Section 2.4 says "D₁₂ (class
  60)" and "three copies of G/D₁₂", Table 5.1 lists both class 60 and class 66 as giving Γ₁₆₀⁽¹⁾. Say in Section 2.4
  that there are two classes of D₁₂ and that both C₃-actions give Γ₁₆₀⁽¹⁾.
* **R7 (bibliography / data).** Fill the Zenodo DOI placeholder `10.5281/zenodo.XXXXXXX` before submission; add
  year and URL to the TomLib entry (https://www.math.rwth-aachen.de/~Thomas.Merkwitz/ or the GAP package page) and the
  OR-Tools version used (CP-SAT, v9.x). Optionally add the doi of IKTS and the arXiv number 2404.03100 of BCS24.
* **R9 (Hoffman cocliques of the 280 graphs: now exact).** The audit's complete runs (`out/audit_twoorbit8_fable/cocl_more.log`,
  both exit 0 within 2400 s) give exactly 37 Hoffman cocliques in Γ₂₈₀^P and exactly 289 in Γ₂₈₀^Q. Change every dependent
  sentence: (a) Table 4.1, column "Hoff.": "≥ 37 (36+1)" → "37 (36+1)" and "≥ 253 (126+126+1)" → "289" with its orbit
  decomposition (to be computed by the author; 289 = 126 + 126 + 1 + 36 is the natural guess); (b) Section 4.2, fourth bullet
  ("for Γ₂₈₀^P and Γ₂₈₀^Q the enumeration did not finish ... neither did the audit's runs (2400 s each) ... these are lower
  bounds only, and the true numbers may be larger"): rewrite as "CP-SAT did not finish within 1800 s (25 resp. 47 cocliques
  listed); the audit's branch-and-bound enumerator finished both cases completely: 37 resp. 289 Hoffman cocliques"; (c) the
  first paragraph of Section 4 ("it also supplied the complete count 0 for the Hoffman cocliques of Γ₂₆₁^P") → add "and the
  complete counts 37 and 289 for the 280 graphs"; (d) Table 8.1 (status), row "Hoffman cocliques of Γ₂₈₀^⋆: lower bounds
  only (incomplete enumeration)" → "computer (audit enumerator, complete; CP-SAT incomplete)", and merge with the row for
  Γ₂₆₁^P; (e) Acknowledgements: "decided the Hoffman cocliques of Γ₂₆₁^P" → "... of Γ₂₆₁^P and of the two 280 graphs".
  No other statement depends on these numbers: the non-isomorphism of the two 280 graphs (Section 4.4) rests on |Aut| = 3024
  vs 21168 and on rk₂(A+I) = 136 vs 64 (the counts 37 ≠ 289 now give a third invariant that may be added there); Theorem 1.1
  and the abstract do not mention the 280 cocliques; "E is a Hoffman coclique by construction" remains correct (it is the
  orbit of length 1 in both counts); the invariants table's other columns are unaffected.
* **R8 (abstract, sentence "Adjacency is decided by cross ratios: ...").** Insert "for disjoint pairs" or "in the main
  case", since pairs sharing a point use d = 1 and the cross-type edges use a cube-root condition.

## 5. Optional suggestions
* Section 4.2, "each of the 252 cocliques contains exactly one point and 28 labelled pairs": this has a two-line hand
  proof (the points form a clique, so a Hoffman coclique S of Γ₂₆₁^Q has at most one point; with none, each of the 9
  points would have exactly 8 neighbours in S, but the 29 labelled vertices of S contribute only 2·29 = 58 < 72
  point-incidences; with one point p, the 28 labelled vertices lie on the 28 pairs avoiding p, one per pair).
* Table 3.2 could say in its caption that the ranks on the 216-orbits (30) exceed 20, which is why the two product
  graphs have no short invariant description beyond the rule.
* Section 4.1: the 232 exact-cover argument can be phrased as "every remaining edge lies in exactly two of the 504
  cliques, so a partition would be a 2-colouring of the graph on these 504 cliques in which two cliques are adjacent
  when they share an edge; this graph has odd cycles" — a reader can check that by hand from a few cliques.
* The remark after Construction 2.3 ("replacing χ^{±1} by χ^{±2}...") and Section 5.3 (R3) say the same thing twice;
  one cross-reference suffices.

## 6. Typos
* Line 293 "it has two values of λ" — also two values of μ (14 and 18); say "two values of λ and of μ".
* Table 1.2 caption: "proves the lower bounds |Aut| ≥ the given order" — fine, but "|Aut| ≥ the order listed" reads
  better.
* Computation 6.2(2): "with 2e = 8 copies of L or E in place of q − 1 = 15" is loose: the TomLib-type action has
  1 + 2e = 9 copies (one for the label 1, 2e = 8 for the other labels) in place of the q − 1 = 15 copies of the explicit
  model; v = 9·136 + 17 = 1241, 9·136 + 120 = 1344, 9·120 + 136 = 1216. Rephrase as "1 + 2e = 9 copies ... in place of
  q − 1 = 15".
* Appendix B docstring refers to "Constructions 2.3 and 2.8", consistent with the numbering; keep in sync if theorem
  numbering changes.

## 7. What I could not verify
MathSciNet / zbMATH / full text of BvM (the paper says it did not search them either); the q = 16, 32 solver verdicts
and the 280 coclique lower bounds (not re-run; the audit's independent pipeline covers q = 16, 32); the server-side
search statistics (414 groups confirmed, 1393 parameter sets not re-counted).
