The claim is that using N numbers per square will result in the pattern holding for N rows, for arbitrarily large N.
n = 14: fails on row 13, col 3
n = 20: fails on row 17, col 8
n = 30: fails on row 17, col 7
n = 38: fails on row 37, col 8
n = 44: fails on row 31, col 2
n = 50: fails on row 43, col 13
…
He's not claiming it holds for _all_ n, just for _many_ n.
[1095, 1108, 1121, 1134, 1147, 1160, 1173, 1186, 1199, 1212, 1225, 1238, 1251, 1264]
none of which are prime. cellToTerms(13, 14, binomialCoEfficient2, 3) in the observable gives the same list (though no such calls are made when generating the picture).
Https://GitHub.com/shaunxcode/a-pattern-in-the-primes