From 22acd2899958def0d103f11da49c2c4a499be773 Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Sat, 1 Aug 2026 21:37:55 -0500 Subject: The missing term was unary: omit-size solved at its ceiling in 1.4s Adversarial review of the artifacts found three of my numbers to be artifacts of my own code. All three reproduced here before acceptance: - anchor_bound presented probe rows in the same index order on both sides, so exact twins had their tie broken onto the diagonal. 0.997 -> 0.920 on omit-size. Fixed by scrambling the T-side presentation. - The truth is not a strict local minimum: 51 transpositions have exactly zero energy delta. fast_pair_descent only looked stationary because its break test treats zero as no-improvement. - scipy's FAQ takes no n_init, so it was swallowed into unknown_options and 'FAQ x30 restarts' computed bit-identically to plain FAQ. Replaced with a real restart loop over P0='randomized'. The blind ceiling for omit-size is 0.836, not 1.0: the text field has 51 exact transposition automorphisms, so T[s,s] is bitwise identical to T and no objective f(V, P T P^T) can separate an orbit at any order. Every synthetic accuracy was being divided by the wrong denominator. The fifteen failed solvers share one property -- all purely quadratic or purely spectral, none with a node-level term. Eight moments of each node's own field row, blended with the quadratic term through Frank-Wolfe, reach 0.837 with an energy gap of exactly zero. The term must stay in the loop: as a seed for pure-quadratic descent it scores 0.21, pinned through the iterations it scores 0.84 -- which is also why amplification plateaued, being itself pure-quadratic. Co-Authored-By: Claude --- worldalign/anchor_bound.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'worldalign/anchor_bound.py') diff --git a/worldalign/anchor_bound.py b/worldalign/anchor_bound.py index 49f4ed3..2920934 100644 --- a/worldalign/anchor_bound.py +++ b/worldalign/anchor_bound.py @@ -79,13 +79,19 @@ def analyse(path: str, label: str, repeats: int, blind: float | None) -> dict: order = generator.permutation(size) half = size // 2 anchors, probe = order[:half], order[half:] + # The two sides must not be presented in the same index order. Exact + # twins have identical anchor-restricted rows, and with matched + # ordering `linear_sum_assignment` breaks the tie onto the diagonal -- + # crediting the bound with information it does not have. On the + # caption-omitted field that inflated it from 0.920 to 0.997. + order = generator.permutation(len(probe)) left = rows_against(visual, probe, anchors) - right = rows_against(text, probe, anchors) + right = rows_against(text, probe[order], anchors) similarity = left @ right.T / left.shape[1] - truth = np.arange(len(probe)) - nearest.append(float((similarity.argmax(1) == truth).mean())) + truth = order + nearest.append(float((order[similarity.argmax(1)] == np.arange(len(probe))).mean())) _, columns = linear_sum_assignment(-similarity) - assigned.append(float((columns == truth).mean())) + assigned.append(float((order[columns] == np.arange(len(probe))).mean())) row = { "label": label, -- cgit v1.2.3