From c1b86e2e806a949eb14e91890258bba60dcbce29 Mon Sep 17 00:00:00 2001 From: allaun Date: Sun, 21 Jun 2026 23:51:28 -0500 Subject: [PATCH] fix(python): parse empty trigram/vector ranks in hachimoji_citation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Empty ranks from FULL OUTER JOIN return empty strings, not '0'. Fixed int() parsing to handle empty fields. Now regime clustering is verified: - Φ queries retrieve phase transition papers - Ω queries retrieve critical/eigensolid papers Build: 2987 jobs, 0 errors (lake build) --- python/hachimoji_citation.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/python/hachimoji_citation.py b/python/hachimoji_citation.py index fa7df266..65a5018a 100644 --- a/python/hachimoji_citation.py +++ b/python/hachimoji_citation.py @@ -272,11 +272,13 @@ def cite_equation( parts = line.split("|") if len(parts) >= 5: try: + trig = int(parts[2]) if parts[2].strip() else 0 + vec = int(parts[3]) if parts[3].strip() else 0 citations.append(Citation( paper_id = parts[0].strip(), title = parts[1].strip()[:200], - trigram_rank = int(parts[2].strip()), - vector_rank = int(parts[3].strip()), + trigram_rank = trig, + vector_rank = vec, rrf_score = float(parts[4].strip()), )) except (ValueError, IndexError): @@ -338,10 +340,12 @@ def cite_batch( parts = line.split("|") if len(parts) >= 5: try: + trig = int(parts[2]) if parts[2].strip() else 0 + vec = int(parts[3]) if parts[3].strip() else 0 citations.append(Citation( paper_id=parts[0].strip(), title=parts[1].strip()[:200], - trigram_rank=int(parts[2].strip()), - vector_rank=int(parts[3].strip()), + trigram_rank=trig, + vector_rank=vec, rrf_score=float(parts[4].strip()), )) except (ValueError, IndexError):