# RMO96 — one compression, two admissible normals

**Result:** exact compression ρ₂/ρ₁ = 1.56 does not select a unique normal in
the declared R95 sector. There are exactly two admissible roots. Both are fast
shocks. Their downstream plasma velocities differ, so an additional velocity
constraint could distinguish them if its direction and errors are suitable.

**По-русски:** даже при одном фиксированном состоянии перед фронтом одинаковое
сжатие может соответствовать двум разным нормалям. Тип обоих переходов — fast.
Это проверенный пример неоднозначности внутри модели, а не идентификация
солнечного фронта. Рисунок показывает параметры и скорости, а не форму фронта.

## Fixed question and inputs

The pre-run protocol is `polar_inverse/PROTOCOL.md`. The test uses the exact
serialized R95 upstream state, without rerunning its 321-point sweep:
ρ₁ = 1, p₁ = 0.04056, u₁ = (−1, 0, 0), B₁ = (a, c, 0),
a = 0.05618818561896245, c = 0.6422339004220036, μ₀ = 1 and γ = 5/3.
The velocity unit is 600 km/s; density normalization is arbitrary. These are
adopted model inputs, not measurements to the printed numerical precision.

All candidate planes are stationary in the same frame. Their coplanar normal
n = (cos φ, sin φ, 0) rotates through φ ∈ [−4°, +4°]. The field-to-normal angle
θBn is approximately 85° − φ. Compression is now fixed at exactly r = 39/25;
the downstream pressure, magnetic field and velocity must change together.
The R94 flow scan and the R95 free-compression sector retain their own scope.

## Solutions and the observer's question

| State | Normal rotation φ | Field-to-normal θBn | Compression | u₂x, km/s | u₂y, km/s | Flow deflection | Local class |
|---|---:|---:|---:|---:|---:|---:|---|
| A | ≈0° | ≈85.000° | 1.56 | −384.615385 | −12.184894 | 1.814565° | Fast |
| B | 1.938869° | 83.061131° | 1.56 | −384.289566 | −9.624650 | 1.434690° | Fast |

The unrounded A rotation is about 3.55 × 10⁻¹³ degrees. It differs from exact
zero because the R95 serialized decimals are adopted exactly. No field was
adjusted to force the anchor and no observational angular accuracy is implied.

The common-frame contrast B − A is
Δu = (0.3258190514, 2.5602438255, 0) km/s, with |Δu| = 2.5808925783 km/s.
A common Galilean velocity addition leaves this difference unchanged. These
are **plasma velocities**, not image-pattern velocities of a bright front.

For a known unit viewing direction ℓ, the line-of-sight contrast is ℓ·Δu.
The maximum possible absolute contrast is 2.580893 km/s. A direction
perpendicular to Δu is blind to this distinction, including the out-of-plane
direction. The plotted in-plane viewing directions are hypothetical; no actual
solar observing geometry is supplied by this test.

For illustration only, broaden each exact scalar prediction by an equal
symmetric **hard error half-width** ε. Their intervals are disjoint if and only
if 2ε < |ℓ·Δu|. At equality the intervals touch.

| Assumed viewing direction | Absolute contrast, km/s | Strict half-width condition for disjoint intervals |
|---|---:|---|
| Along x | 0.325819 | ε < 0.162910 km/s |
| Along y | 2.560244 | ε < 1.280122 km/s |
| Parallel to Δu | 2.580893 | ε < 1.290446 km/s |
| Perpendicular to Δu | 0 | No positive ε separates the predictions |

These are conditional separation thresholds for exact fixed model predictions.
They are not instrument-resolution requirements or one-sigma detection rules.
Uncertainty in compression, upstream state, viewing direction and feature
association has not been propagated. An actual measurement must also match one
of the predictions; sufficiently narrow errors alone do not establish a match.

## Complete root count within the declared sector

With z = tan φ, the local normal velocity is −1/√(1+z²). Consequently
h = (a+cz)², A = (c−az)² and b = p₁(1+z²). The R95 regular compression
relation at r = 39/25 becomes the sextic polynomial

F(z) = 2[4−r−5p₁r(1+z²)][1−r(a+cz)²]²
       − r(c−az)²[r+5−2r(4−r)(a+cz)²].

All coefficients are exact rational numbers derived from the saved decimal
strings. This is not a polynomial fit to the plotted R95 curve.

1. An exact Sturm sequence counts two roots in both [−0.07, 0.07] and
   [−0.0699, 0.0699]. Rational Machin and alternating-series bounds establish
   0.0699 < tan 4° < 0.07. Thus the angular sector contains exactly two roots.
2. The polynomial is square-free. Each root has an exact rational isolating
   interval of width below 10⁻⁶⁵ in z, endpoint signs and recorded Sturm variations.
3. A separate Möbius transform and Descartes coefficient-variation bound gives
   an upper bound of two roots in the outer interval. Together with the two
   isolating sign brackets, this independently confirms completeness there.
4. The regular denominator 1−rh is positive throughout the outer interval;
   Bn and Bt₁ are nonzero and cos φ is positive. The reduction has not introduced
   a singular solution in this sector.
5. Known rational-root and empty-interval controls pass, including a polynomial
   with a complex conjugate pair. Full coefficients and certificates are saved
   in `RMO_polar_inverse.json`.

The complete count applies to this exact fixed-compression, fixed-upstream,
coplanar regular problem in the chosen sector. It is not completeness over all
orientations, upstream uncertainties, MHD families or full Riemann wave fans.

## Physical admissibility and independent checks

The linked downstream state is recovered as a rational function of z. Exact
rational interval enclosures over each isolated root certify positive pressure,
increasing entropy through (p₂/p₁)³ > r⁵, and tangential-field amplification.
They also certify upstream normal speed squared above the magnetosonic trace,
downstream speed squared above the normal Alfvén speed squared, and a negative
downstream magnetosonic polynomial evaluated at that speed squared. These
sufficient inequalities establish a nondegenerate fast crossing at each root.

At root midpoints, the original mass, momentum, induction, total-energy and
normal-field jumps are checked using 90-digit Decimal arithmetic. The largest
scaled residual is 2.083 × 10⁻⁶⁸, below the predeclared 10⁻⁵⁵ threshold. A residual
is a numerical conservation check, not measurement precision.

Two independent original-equation Newton solves use unknowns
(p₂, u₂x, u₂y, B₂x, B₂y, z), fixed density ratio and perturbed nearby saved
R95 states as seeds. They do not use the sextic or its recovery formula to
solve the inverse problem. Their largest state/z disagreement is
2.628 × 10⁻⁶⁶. Both roots receive `fast_shock` from the unchanged local classifier,
without a family label passed as input. These are independent internal
formulations; no external solver or held-out observational benchmark is claimed.

The underlying jump conditions are the standard ideal-MHD conservation laws:
[Fitzpatrick, MHD jump conditions](https://farside.ph.utexas.edu/teaching/plasma/Plasma/node102.html).
Root certification and the present numerical example are RMO calculations.

## Figure and preserved context

`RMO_polar_inverse.pdf` and `.svg` are vector figures. The left curve reuses the
saved R95 samples; the two marked intersections come from the new algebraic
certificate. The right panel projects the computed velocity difference onto
hypothetical viewing directions. Neither panel is a spatial front outline.

R95's original figure, report, states, audit code and physical checks remain
unchanged in the project and QuickLook. R94 and earlier scientific material
are also retained. QuickLook 0.4.27 groups results beneath a plain-language
entry page; its navigation does not alter the scientific calculator.

## Article consequence and remaining boundary

This establishes an explicit counterexample to unique normal recovery from
compression alone in the declared model, even with a stable fast classification.
It motivates a direction-sensitive additional velocity constraint. It does not
prove uniqueness after that constraint is added with real errors. 

The result does not establish persistence of both solutions under a finite
compression error interval. Matched solar observations, emission alternatives, global source history,
full-family coverage and native-browser/backend acceptance remain open under
their existing separate scopes.

## Reproduction

From the project root: `python3 polar_inverse/audit.py`, then
`python3 polar_inverse/plot.py`. Saved results can be read without rerunning
either script. The protocol and code hashes are recorded in `verification.json`.
