# Exact-geometry Gate A/B — learned movement (job j131)

corpus   : /tmp/tfil_ab2/out
battles  : 70
shots    : 54923
base hit : 9.97%
state    : vlat, dist, room, turn (module's 4 fields, canonical edges)

## A. danger-map alignment (ONE consistent computation)

corr( danger(g) , P(hit | b_our = g) )   [the j128 metric, = -0.342 hist]
corr( danger(g) , P(hit | b_bullet = g) ) [same danger, bullet-conditioned target]

| danger map | corr vs P(hit\|b_our=g) | corr vs P(hit\|b_bullet=g) |
|---|---:|---:|
| histogram (j128): P(arrival = g) | -0.341 | -0.206 |
| outcome proxy (j130 live): P(hit & |g-b_our|<=w) | +0.566 | +0.604 |
| EXACT bullet line: P(|g-b_bullet|<=w) | -0.230 | +0.120 |
| EXACT bullet line & hit: P(hit & |g-b_bullet|<=w) | +0.465 | +0.684 |

Negative = minimising the danger steers INTO where the observed hits
happen (the j128 defect). The exact bullet line is the physically
correct 'would this wave hit me at g' map; if its correlation is still
negative, exact geometry does NOT fix the inversion.

| bin | P(hit\|b_our) | P(hit\|b_bullet) | hist danger | proxy danger | exact danger |
|---:|---:|---:|---:|---:|---:|
| 0 | 9.7% | 7.5% | 0.024 | 0.005 | 0.024 |
| 1 | 14.1% | 12.0% | 0.019 | 0.008 | 0.053 |
| 2 | 13.2% | 13.6% | 0.026 | 0.008 | 0.077 |
| 3 | 10.8% | 9.1% | 0.023 | 0.008 | 0.081 |
| 4 | 8.8% | 8.0% | 0.025 | 0.007 | 0.079 |
| 5 | 7.8% | 8.9% | 0.029 | 0.007 | 0.079 |
| 6 | 7.9% | 9.0% | 0.033 | 0.008 | 0.084 |
| 7 | 8.8% | 9.0% | 0.035 | 0.009 | 0.090 |
| 8 | 9.2% | 8.8% | 0.036 | 0.009 | 0.097 |
| 9 | 9.1% | 9.9% | 0.038 | 0.010 | 0.100 |
| 10 | 9.8% | 9.2% | 0.039 | 0.011 | 0.101 |
| 11 | 11.0% | 11.3% | 0.040 | 0.011 | 0.106 |
| 12 | 10.6% | 10.8% | 0.039 | 0.012 | 0.109 |
| 13 | 11.1% | 10.0% | 0.041 | 0.011 | 0.110 |
| 14 | 9.0% | 9.6% | 0.040 | 0.011 | 0.111 |
| 15 | 9.8% | 8.8% | 0.046 | 0.011 | 0.112 |
| 16 | 9.8% | 9.4% | 0.038 | 0.010 | 0.109 |
| 17 | 9.2% | 9.8% | 0.039 | 0.010 | 0.107 |
| 18 | 10.7% | 9.3% | 0.036 | 0.009 | 0.101 |
| 19 | 8.8% | 8.8% | 0.035 | 0.008 | 0.096 |
| 20 | 8.5% | 9.1% | 0.034 | 0.008 | 0.091 |
| 21 | 7.9% | 8.8% | 0.035 | 0.007 | 0.086 |
| 22 | 7.5% | 7.5% | 0.033 | 0.007 | 0.083 |
| 23 | 6.7% | 8.7% | 0.031 | 0.007 | 0.080 |
| 24 | 8.3% | 7.9% | 0.028 | 0.006 | 0.080 |
| 25 | 7.2% | 7.4% | 0.026 | 0.007 | 0.083 |
| 26 | 11.5% | 8.9% | 0.023 | 0.007 | 0.088 |
| 27 | 13.1% | 13.2% | 0.022 | 0.010 | 0.091 |
| 28 | 17.5% | 19.6% | 0.026 | 0.012 | 0.080 |
| 29 | 16.2% | 17.1% | 0.028 | 0.012 | 0.053 |
| 30 | 10.9% | 2.6% | 0.033 | 0.008 | 0.023 |

## B. state-conditional information under the EXACT bullet-line label

held-out per-candidate log-loss (bits) of the exact label, state-conditional vs state-free (same rows, same split):

| model | log-loss (bits) |
|---|---:|
| state-free P(label | g) | 0.1879 |
| state-conditional P(label | state, g) | 0.3747 |
| Δ (state − state-free) | +0.1868 |

state conditioning is better in 0/3 splits (negative Δ = better).

## C. open-loop decision counterfactual (VETO ONLY)

argmin_g danger with the recorded bullet line as ground truth:

| exact-label argmin (j131) | 2.47% |

## MEASURED vs INFERRED

* MEASURED: every number above, on the recorded corpus.
* INFERRED: that an offline alignment transfers live — it cannot, the
  corpus is open loop (`docs/offline_harness_trust.md`).
