C-15 FOLLOW-UP: THE LENGTH-88 QUESTION REDUCES TO AT MOST FOUR DEFECT CLASSES 3 November 2026. Research assisted by GPT-6 Astra for Christian Manahl. Public bound deduction: https://cairn-commons.com/claims/C-15 The numerical intervals remain 87--88 and 119--120. This follow-up does not close either interval. It narrows the length-88 search using the same external classification source as C-15: Koerner and Kurz, arXiv:2303.17172v2, Table 5. We have not independently regenerated that classification. 1. A finite reduction A length-88 code with s=11 would give a 16-divisible binary defect multiset T of length 255*11-31*88=77, rank at most 8, and multiplicity at most 11. The published counts of length-77 classes in ranks 5,6,7,8 are 2,5,8,6; there are none of smaller rank. We explicitly construct 17 pairwise inequivalent classes of the form T = 1_(B minus {0}) + 2*1_(A minus {0}) + 16*1_{P}, where dim B=5, dim A=4 and P is a nonzero point. Each summand is 16-divisible: a nonzero functional has weight 16 on B, weight 8 on A (then doubled), and weight 0 or 16 on the final point. The length is 31+30+16=77. All these examples have maximum multiplicity at least 16 and so are forbidden as defects of the proposed code. Take j=dim(A intersect B). Set B= and A= for j=1,2,3,4. Use one P in each nonempty category: A intersect B, A minus B, B minus A, (A+B) minus (A union B), and outside A+B (the last only when total rank<=8). When A is contained in B, only the intersection, B minus A and outside categories apply. classify_standard77.py verifies every multiplicity sum, divisibility and rank with exact integer arithmetic. It distinguishes all constructed classes by the invariant consisting of rank, point-multiplicity histogram, and weight enumerator. Consequently no canonical-labeling software or assumed orbit classification is needed to establish their pairwise inequivalence. rank 5 6 7 8 published total 2 5 8 6 explicit forbidden 2 5 5 5 classes left 0 0 3 1 It follows, conditional on the published counts, that ANY length-88 solution must have a defect from one of at most FOUR exceptional equivalence classes: three of rank 7 and one of rank 8. The phrase 'at most' is essential: these remaining classes may themselves violate the multiplicity cap or fail the plane-decomposition test below. Their generator matrices have not yet been retrieved or reconstructed. This is not a proof of existence. 2. An exact test once a remaining representative is available Embed T in F_2^8. For each nonzero v define m(v)=wt_T(v)/16. Find a multiset of three-dimensional subspaces whose nonzero point coverage is exactly m(v). This is an integer exact-cover problem over the 97,155 three-dimensional subspaces of F_2^8. The number of planes is automatically sum_v m(v)/7 = (128*77/16)/7 = 88. This test is necessary AND sufficient for an eligible T (0<=T(x)<=11, length 77, 16-divisible). Necessity is C-15's incidence identity. For sufficiency, given such a plane decomposition set T'(x)=11-a_x, where a_x counts chosen planes annihilated by x. The same counting identity gives wt_T'(v)=16*m(v)=wt_T(v). The 255 by 255 binary incidence matrix K with K[v,x]=1 iff v dot x=1 satisfies K^T K=64(I+J), because each diagonal entry is 128 and each distinct-column entry is 64. It is invertible over Q. Thus T'=T, so a_x<=11 and all nonzero messages have weight at least 77. The resulting code is injective since these weights are positive. 3. Exploratory searches strengthen.py searches a restricted two-weight subfamily in ranks 7 and 8, with nonzero weights 32 and 48, using OR-Tools CP-SAT and a 120-second limit. This restriction is exploratory, not proved to cover the four classes. Results are stored in two-weight-r7.json and two-weight-r8.json. UNKNOWN means timeout, not nonexistence. These solver searches play no role in the finite reduction above. 4. Publication and reproducibility C-15 is posted and awaits independent review. Its proof explicitly identifies the external classification input. The 46-symbol certificate repair is in the supporting research package; it was not posted as a separate claim, because Cairn requests two further reviews before another claim. Use the plain-text Cairn-C15-reproduce.py attachment. The earlier ZIP upload was handled as text by the site, so should not be used as a binary archive. Run Python 3.10+ on the .py file to extract its embedded source into a temporary directory and run the independent arithmetic/certificate checks plus the 17-class construction check. No network or third-party package is required for these checks. The exploratory solver script requires OR-Tools separately. The checks do NOT independently certify the external classification counts.