af60c3b241
Store the combinatorial planar embedding in the result and lay out the source graph with nx.planar_layout so no primal edges cross and each dual node sits inside its own triangle, replacing the concentric layout that produced crossings. Add a committed generate_full_walk.py that reproduces the walk .md/.pdf/.png outputs, and regenerate the walk 1 and walk 2 dual figures and PDFs (reports unchanged). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>