Hilbert 16(a) for degree 8 — real schemes of plane octics
- Slug:
hilbert16-degree-8 - List: Hilbert 16 (first part), Smale 13 (1998)
- Solver: Claude Fable, then Claude Opus 5 (Claude Code)
- Status: open. Degree 8 is the first degree where the isotopy
classification is unfinished. Six M-schemes are algebraically
undecided. Certified dent (C), 2026-09-22: number of nonempty
degree-eight T-curve schemes ≥ 2,415 (
compute/q11/CLAIM.md). Forty-eight verified schemes are outside the paper's 2,367 (seventeen parent additions, the q8 scheme, nine q9 schemes, thirteen q10 schemes, and eight more). Residue, 2026-09-26: the leftover one-flip of the three unused q11 followup certificates finished with no further scheme (compute/q12/certs/coverage_leftover.json). Hilbert 16(a) itself is untouched. - Area: Real algebraic geometry / topology of real plane curves
- Sources: Orevkov GAFA 12 (2002); Itenberg–Viro (1996); Viro arXiv:math/0611382; Geiselmann–Joswig–Kastner–Mundinger–Pokutta– Spiegel–Wack–Zimmer arXiv:2602.06888 v4 and arXiv:2604.09221; Gabard arXiv:1310.1865
- Started: 2026-08-21
Statement
Classify the real schemes (ambient isotopy types in ) of nonsingular real plane projective curves of degree 8. A degree-8 curve has at most 22 ovals (Harnack); curves attaining the bound are M-curves. The classification is complete through degree 7 (Gudkov for 6, Viro for 7). For degree 8 it is not.
Current paper record, fetched as v4 on 2026-09-04; the published certificate archive was fetched and replayed on 2026-08-21 (see RESEARCH.md):
- M-schemes (22 ovals). After Gudkov–Rokhlin, Bezout-with-a-conic, and the Fiedler–Viro parity restrictions, 104 candidate M-schemes remain. Orevkov (GAFA 2002, Table 1) determined that exactly 89 are realizable by real pseudo-holomorphic (flexible) M-curves; 83 of those are realized by genuine algebraic curves, and six remain open: , (both ), and , , , (all ). All six are pseudo-holomorphically realizable (Orevkov Thm 1.2b), so no purely topological obstruction can kill them.
- T-curves (combinatorial patchworking). Geiselmann et al.,
arXiv:2602.06888 v4 (August 2026): 2,367 distinct nonempty degree-8
real schemes realized as T-curves (explicitly a lower bound, search
not exhaustive); certificates published in
dmg-lab/CombinatorialPatchworking. Of the 89 M-schemes, 38 are realized as T-curves, the 12 with — including four of the six open ones — are provably not T-curves (their Theorem 21), and 39 are undecided as T-curves, among them the two open deep-nest schemes.
What would count as a dent
(A) A certified combinatorial patchwork (primitive convex triangulation of plus signs, exact convexity certificate, independently computed isotopy type) realizing one of the two open M-schemes with . By Viro's theorem that would settle their algebraic realizability. The four open schemes are unreachable by this stack (Theorem 21 of arXiv:2602.06888v4).
(B) A certified exclusion of one of the six. Needs link-theory / braid-theoretic obstructions, not this stack; not attempted.
(C) A certified T-curve whose scheme is not among the published 2,367 — in particular any of the 39 M-schemes undecided as T-curves. That is a verified finite improvement of a documented lower bound.
Replaying known constructions is not a dent. Search residue is not an obstruction. SAT/annealing failure to find a scheme is not a bound.
Outcome (2026-08-21)
Replay. All 2,367 certificates of arXiv:2602.06888 v3 pass an exact from-scratch verifier (convexity certified in rational arithmetic, isotopy type recomputed via a double-cover argument), and the 22-oval subset reproduces exactly the 38 bold rows of their Table 1.
Dent (C). Seventeen real schemes are realizable as degree-8 T-curves and are not among their 2,367, so their §5.3 lower bound ("the search is not exhaustive") becomes ≥ 2,384:
⟨13 ⊔ 1⟨3 ⊔ 1⟨2⟩⟩⟩, ⟨3 ⊔ 1⟨4⟩ ⊔ 1⟨11⟩⟩, ⟨4 ⊔ 1⟨2⟩ ⊔ 1⟨13⟩⟩, ⟨4 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, ⟨4 ⊔ 1⟨4⟩ ⊔ 1⟨11⟩⟩, ⟨4 ⊔ 1⟨5⟩ ⊔ 1⟨10⟩⟩, ⟨5 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩, ⟨5 ⊔ 1⟨6 ⊔ 1⟨7⟩⟩⟩, ⟨5 ⊔ 1⟨6 ⊔ 1⟨8⟩⟩⟩, ⟨6 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩, ⟨6 ⊔ 1⟨4 ⊔ 1⟨8⟩⟩⟩, ⟨6 ⊔ 1⟨5 ⊔ 1⟨8⟩⟩⟩, ⟨6 ⊔ 1⟨6 ⊔ 1⟨6⟩⟩⟩, ⟨6 ⊔ 1⟨6 ⊔ 1⟨7⟩⟩⟩, ⟨6 ⊔ 1⟨8 ⊔ 1⟨4⟩⟩⟩, ⟨6 ⊔ 1⟨9 ⊔ 1⟨4⟩⟩⟩, ⟨7 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩.
Each witness sits on one of the paper's own triangulations with their
integer MIN_WEIGHTS, so nothing about the geometry is ours to get
wrong: the weights are re-certified exactly in rational arithmetic, the
scheme is recomputed from scratch, and absence is checked both against
our replay of the 2,367 and against the .pcom file names in their
archive. Certificate compute/certs/new_schemes.json, checked by
compute/verify_new.py (17/17).
Haas zone decompositions (new machinery). compute/haas.py
implements Harnack splits, zones, compatibility and surgical twists
for — 1,254 splits, 381,957 compatible pairs. Because a twist
adds a fixed vector, every maximal sign distribution
on a fixed triangulation lies in an affine subspace of dimension
, which compute/zone_search.py sweeps exhaustively. Checks:
each of the 1,254 splits alone gives a 22-oval curve, and all 38
published 22-oval certificates decompose into explicit split
collections (compute/certs/mcert_collections.json, rebuilt by
compute/prep.py).
No M-scheme dent. All 184 triangulations of the census are now
swept exhaustively (230,501,440 maximal sign distributions, all of them
22-oval M-curves): they realize exactly the paper's 38 M-schemes and
nothing else, so no census triangulation carries either open deep nest.
A further 4,609 certified regular triangulations outside the census,
each also swept exhaustively, add no M-scheme either
(compute/certs/outside_census_sweeps.json). Exhaustive per
triangulation, not exhaustive over triangulations — residue, not an
obstruction. Counts and certificates in ATTACK.md.
Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh
Close (2026-08-23)
The bound is unchanged. compute/verify_new.py replays 17/17, so the
census lower bound stays ≥ 2,384, and compute/check_rokhlin.py
replays with it.
Two searches were in flight when the machine restarted and neither
finished. Thickening the whole Haas maximal stratum
(compute/thickc.c) completed 4 of the 164 census triangulations in
scope, 12,058,624 sign distributions, and found one scheme outside the
census — ⟨4 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, already one of the seventeen. No new
candidate, so nothing to certify: residue
(compute/certs/thick_summary.json). The search in Haas collection
space for the two open deep nests (compute/dn_sweep.py) lost its run
directory in the restart and left no data at all; none is claimed.
What committed data still yielded: all 38 published 22-oval
certificates re-verify through the collection pipeline rather than the
sign-vector one (compute/dn_charac.py), and laminar zone depth turns
out not to bound nesting depth usefully — zone depth 2 reaches a triple
nest, zone depth 8 does not — which is why that searcher had no
traction. For a depth-3 M-scheme ⟨a ⊔ 1⟨b ⊔ 1⟨c⟩⟩⟩ Rokhlin forces
; the published 38 realize
and the missing is exactly the class their
Theorem 21 excludes from T-curves. Both open nests have , a row
that already contains two published T-curves, so the target is a move
along an occupied row rather than a new class. Details in ATTACK.md.
Hilbert 16(a) in degree 8 remains open.
Close (2026-08-27)
The bound is unchanged. Parent verify_new.py still replays 17/17, so
the census lower bound stays ≥ 2,384. q1 produced no candidate
for a new scheme.
The leftover whole-stratum thicken is no longer 4 of 164. Radius 1
around the maximal Haas stratum finished every census triangulation
of twist-rank at most 20 (164/164, 1,438,512,000 sign distributions,
exactly on each,
compute/q1/certs/thick_r1_rank_le20.json). Every scheme outside
the published 2,367 is already one of the seventeen. Neither open
nest appeared. That is a finished sweep of the intended leftover,
not a lower bound. The twenty census triangulations of rank 21–26
were never in that leftover.
Collection space: the one-split neighbourhood of all 38 published
M-collections is exactly those 38 (compute/q1/certs/dn_nbhd.json).
The two-split ladder around all twelve depth-3 M-collections is
also finished and adds nothing (compute/q1/certs/dn_ladder.json).
Nested odd pairs on the five published (19,3) collections hit
neither open nest; the a=10 nest admits no compatible nested odd
pair. Even-only walks stay on the five known (19,3) M-schemes.
Neither open nest is decided.
Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q1/run_all.sh && python3 q1/collect.py
Hilbert 16(a) in degree 8 remains open.
Close (2026-08-27, leftover rank 21)
The bound is unchanged. Parent verify_new.py still replays 17/17, so
the census lower bound stays ≥ 2,384. No q2 candidate for a new
scheme.
Radius 1 around the maximal Haas stratum finished every leftover
census triangulation of twist-rank 21 (5/5, 482,344,960 sign
distributions, exactly on each,
compute/q2/certs/thick_r1_rank_21.json). Every scheme found is
already in the published 2,367. Neither open nest appeared. That is
a finished sweep of this rank, not a lower bound. Fifteen leftover
triangulations of ranks 22–26 are still open (residue).
Collection space: a 400,000-step even-split BFS stays on the five
published (19,3) M-schemes (compute/q2/certs/even_pinned.json).
Three-split moves around those five collections produced 30 known
schemes and neither nest; the time cap stopped the last seed
(compute/q2/certs/ladder3.json). Odd collections of size 4, as
far as the snapshot ran, stay on the same twelve M-schemes as size
≤ 3 (compute/q2/certs/odd_skel4.json). Neither open nest is
decided.
Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q2/run_all.sh && python3 q2/collect.py
Hilbert 16(a) in degree 8 remains open.
Close (2026-08-29, leftover ranks 22–26)
The bound is unchanged. Parent verify_new.py still replays 17/17, so
the census lower bound stays ≥ 2,384. No q3 candidate for a new
scheme.
Radius 1 around the maximal Haas stratum finished every leftover
census triangulation of twist-rank 22–26 (15/15, 8,682,209,280
sign distributions, exactly on each,
compute/q3/certs/thick_r1_rank_22_26.json). The rank-26
certificate is four shards whose evaluation counts sum to
. Every scheme found is already in the published
2,367. Neither open nest appeared. That is a finished sweep of
this leftover, not a lower bound.
Odd collections of size 4 finished and stay on the same twelve
M-schemes as size ≤ 3 (compute/q3/certs/odd_skel4.json).
Neither open nest is decided.
Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q3/run_all.sh && python3 q3/collect.py
Hilbert 16(a) in degree 8 remains open.
Close (2026-08-29, leftover (19,3) neighbourhood)
The bound is unchanged. Parent verify_new.py still replays 17/17, so
the census lower bound stays ≥ 2,384. No q4 candidate for a new
scheme.
Three-split moves around every published depth-3 M-collection
finished 12/12 (3,909,329 evaluations, 29 known schemes, neither
open nest, compute/q4/certs/ladder3_depth3.json). That includes
the five published (19,3) collections. A 1,200,000-step even-split
BFS stays on those five schemes with the queue still open
(compute/q4/certs/even_bfs.json). Neither open nest is decided.
That is a finished neighbourhood, not a lower bound.
Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q4/run_all.sh && python3 q4/collect.py
Hilbert 16(a) in degree 8 remains open.
Close (2026-09-04, leftover (19,3) neighbourhoods)
The bound is unchanged. Parent verify_new.py still replays 17/17, so
the census lower bound stays ≥ 2,384. No candidate for a new
scheme.
Compatible odd collections of size 5 finished all 37,632,123
tuples (compute/q7/certs/odd_skel5.json): the same twelve
published M-schemes as size 4, neither open nest. The published
even component (126,336 collections) and the nested-box
even component (25,292,736) both finished and stay on
known (19,3) schemes. Several other enumerable even components of
published M-collections finished the same way, including the
(7,15) neighbour of the hole ,
which is not an even twist of .
Radius-1 thickens of size-5 refinements, of 40 random regular
triangulations, and of five walk-from-M-certificate triangulations
found only schemes already among the 2,367 or the seventeen.
The remaining even components of the published (19,3) collections are larger than collections and were counted, not enumerated. That leftover is residue, not a lower bound.
Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q7/run_all.sh && python3 q7/collect.py
Hilbert 16(a) in degree 8 remains open.
Dent (2026-09-08, one flip and three sign changes)
Number of nonempty degree-eight T-curve schemes ≥ 2,385. This is
exactly the inequality in compute/q8/CLAIM.md.
The new scheme is ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, with twenty ovals and
(p,n) = (5,15). It is outside both the 2,367 schemes of Geiselmann
et al., arXiv:2602.06888v4, §4.3, and the seventeen additions already
verified in this notebook.
The witness changes one diagonal of the paper's certificate for ⟨5 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, then changes three signs. Its new integer lifting passes all 2,688 global strict inequalities with minimum slack 4. Python traces curve segments in the projective plane and its double cover; Rust reconstructs connected monochromatic regions and their nesting tree. Both independently recover the new scheme.
The search stopped on this construction after 82 of 1,190 sign balls, 1,248,532 evaluations counting repetitions. The 1,108 other balls remain unsearched. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.
Replay from the repository root:
sh problems/hilbert16-degree-8/compute/q8/run_all.sh.
Dent (2026-09-12, leftover one-flip balls)
Number of nonempty degree-eight T-curve schemes ≥ 2,394. This is
exactly the inequality in compute/q9/CLAIM.md.
Nine schemes lie outside both the 2,367 of Geiselmann et al.,
arXiv:2602.06888v4, §4.3, the seventeen prior additions, and the q8
scheme ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩:
⟨3 ⊔ 1⟨5⟩ ⊔ 1⟨10⟩⟩, ⟨5 ⊔ 1⟨2⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩, ⟨5 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨4 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨4 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩.
Each witness changes one diagonal of a published or previously certified mesh, then at most three signs. Integer liftings pass all 2,688 global strict inequalities. Python traces curve segments; Rust reconstructs connected monochromatic regions. Both recover the claimed nesting tree, and each scheme is absent from the archive and from the previous 2,385.
The leftover 1,108 balls of the q8 plan all finished (16,870,408 evaluations) and produced five of the nine. One-flip balls of those five certificates produced the other four. One-flip balls of the q8 certificate itself added nothing further. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.
Replay from the repository root:
sh problems/hilbert16-degree-8/compute/q9/run_all.sh.
Dent (2026-09-20, leftover followup one-flip)
Number of nonempty degree-eight T-curve schemes ≥ 2,407. This is
exactly the inequality in compute/q10/CLAIM.md.
Thirteen schemes lie outside both the 2,367 of Geiselmann et al.,
arXiv:2602.06888v4, §4.3, the seventeen prior additions, the q8
scheme ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, and the nine q9 schemes:
⟨1 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨2 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨3 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨4 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨5⟩ ⊔ 1⟨9⟩⟩.
Each witness changes one diagonal of a previously certified mesh, then at most three signs. Integer liftings pass all 2,688 global strict inequalities. Python traces curve segments; Rust reconstructs connected monochromatic regions. Both recover the claimed nesting tree, and each scheme is absent from the archive and from the previous 2,394.
The 106 leftover one-flip balls of the four q9 followup certificates all finished (1,613,956 evaluations) and produced six of the thirteen. One-flip balls of those six certificates produced the other seven. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.
Replay from the repository root:
sh problems/hilbert16-degree-8/compute/q10/run_all.sh.
Dent (2026-09-22, leftover followup one-flip)
Number of nonempty degree-eight T-curve schemes ≥ 2,415. This is
exactly the inequality in compute/q11/CLAIM.md.
Eight schemes lie outside both the 2,367 of Geiselmann et al.,
arXiv:2602.06888v4, §4.3, the seventeen prior additions, the q8
scheme ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, the nine q9 schemes, and the thirteen
q10 schemes:
⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨10⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨10⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨5⟩ ⊔ 1⟨9⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨10⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨10⟩⟩.
Each witness changes one diagonal of a previously certified mesh, then at most three signs. Integer liftings pass all 2,688 global strict inequalities. Python traces curve segments; Rust reconstructs connected monochromatic regions. Both recover the claimed nesting tree, and each scheme is absent from the archive and from the previous 2,407.
The 205 leftover one-flip balls of the seven q10 followup certificates all finished (3,121,330 evaluations) and produced five of the eight. One-flip balls of those five certificates produced the other three. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.
Replay from the repository root:
sh problems/hilbert16-degree-8/compute/q11/run_all.sh.
Close (2026-09-26, leftover followup one-flip)
The bound is unchanged. The q11 certificates still replay, so the census lower bound stays ≥ 2,415. No candidate for a new scheme.
One-flip radius-three of the three unused q11 followup certificates
finished 93/93 (1,416,018 evaluations,
compute/q12/certs/coverage_leftover.json). Every scheme found is
already among the 2,415. Neither open nest appeared. That is a
finished sweep of this leftover, not a lower bound.
Replay from the repository root:
python3 problems/hilbert16-degree-8/compute/q12/controls.py and
python3 problems/hilbert16-degree-8/compute/q12/coverage.py.
Hilbert 16(a) in degree 8 remains open.