core/evals/structure_mapping/adr0252_s5
Claude 299c92be68
test(rnd): pre-register the ADR-0252 §5 criterion, before the run
Track A, per 50-execution-plan.md §6: "state the GO/NO-GO criterion in writing
BEFORE running (the ADR's §5 conformance bar, not a criterion chosen after
seeing results)." This commit carries the criterion and the code and NO results.

Why the protocol is load-bearing here rather than ceremonial: the §5 experiment
is not unrun. It has been run twice and returned GO twice, on unmerged branches,
and neither run's rule was binding.

  - rnd/structure-mapping-experiment @ fc9d0c14 — disowned by its own successor:
    the S1-S4 label entered the embedding, so Procrustes ran on identical
    matrices per structure.
  - rnd/sme-experiment-v2 @ 96e5f468 — blind, and then measured separability
    with `except ValueError: res = 1000.0`. Its GO test cross_mean > 2*same_mean
    is satisfied by that sentinel alone. A solver exception is not a distance.

Instrument characterised before use, on dummy clouds: conformal_procrustes has
two branches. The (5,K) Kabsch+Umeyama path never raises and is invariant to
rotation, translation AND uniform scale (identical 1.8e-16, rotated 7.8e-16,
translated 3.9e-15, scaled x2.5 1.4e-14) while separating non-similar
deformation (5.9e-1) and unrelated clouds (1.1e0). The mixed versor/point
sequence path performs field conjugacy and raises. Attempt 2 used the second;
this uses the first, and treats a raise as non-convergence — excluded, reported
as a rate, never counted as separation.

Corpus fact that forced the design, measured at 797ebad5: the serving reader
returns a selected graph for 5 of the 500 holdout_dev/v1 cases (1.0%), all with
the same skeleton. §5.1's four-structure corpus is not extractable from
holdout_dev/v1 today, so §5.1's own escape hatch is used and MARKED — 5 real
cases, 48 synthetic from four declared templates. A verdict from this corpus
speaks about the geometry, not about coverage; §5.5's compression estimate is
not answerable at 1.0% coverage and is not attempted.

Off-serving. Imported by no serving path; no answers emitted.
2026-07-28 02:55:30 +00:00
..
__init__.py test(rnd): pre-register the ADR-0252 §5 criterion, before the run 2026-07-28 02:55:30 +00:00
corpus.py test(rnd): pre-register the ADR-0252 §5 criterion, before the run 2026-07-28 02:55:30 +00:00
embedding.py test(rnd): pre-register the ADR-0252 §5 criterion, before the run 2026-07-28 02:55:30 +00:00
experiment.py test(rnd): pre-register the ADR-0252 §5 criterion, before the run 2026-07-28 02:55:30 +00:00