# Sundog v. Isotrophy

**Test:** Z₃ → Z₂ descent of equal-mass 3D choreographies into (m₁=m₂=1, m₃≠1) piano-trios.
**Status:** G.2 precondition **RESOLVED** (21 strict single-curve = catalog 21). K_facet v0.2 K1 frozen and retired as equivariance-null; v0.3a case split complete (0 endomorphism, 21 induced); v0.3b F_beta pair-ID/cocycle receipt complete.
**Owner:** sundog
**Related:** `./isotrophy/files.math` — symbolic + numerical scratch.

**Spelling note:** `isotrophy` is the workbench name; the mathematical object
under test is spacetime isotropy.

---

## 0. One-paragraph posture

The sundog theorem must do strictly more than equivariant bifurcation theory or it isn't a theorem. The cheapest place it can earn its keep is the Z₃-choreography → Z₂-piano-trio descent in Li & Liao 2025: equivariance alone says "Z₃ ∩ Z₂ = {e}, generic descent breaks all symmetry"; the sundog refinement claims the surviving piano-trio count is fixed by the *additional* residual Z₂s living in each choreography's full spacetime isotropy. The number 273 (piano-trios) / 21 (equal-mass choreographies) ≈ 13 is the empirical pin we are trying to thread.

---

## 1. The objects

Newtonian 3-body, 3D, point masses m_i, periodic orbit X(t) = (x₁(t), x₂(t), x₃(t)) ∈ ℝ⁹, period T.

The full discrete symmetry group of the autonomous Hamiltonian, including reparameterization symmetries, is

  G_full = S₃ (body relabel) × S¹ (time translation) × ⟨τ⟩ (time reversal) × O(3) (spatial)

A given orbit X has *spacetime isotropy* Iso(X) ⊆ G_full = set of g ∈ G_full such that g · X = X (as a parameterized loop, modulo the obvious S¹ phase).

**Choreography:** Iso(X) ⊇ Z₃ = ⟨σ_3⟩ where σ_3 = ((123), T/3, +, I).
**Piano-trio (Liao convention, m₁=m₂):** Iso(X) ⊇ Z₂ = ⟨σ_2⟩ where σ_2 = ((12), T/2, +, I).

---

## 2. Mass-perturbation symmetry breakdown

At m₁=m₂=m₃=1: body-relabel group is S₃, |S₃| = 6.
At m₁=m₂=1, m₃=1+ε: body-relabel stabilizer is Z₂ = ⟨(12)⟩, |Z₂| = 2.

The S¹, τ, O(3) factors of G_full survive the perturbation untouched. So the *surviving* discrete spacetime symmetries are

  G_ε = Z₂ × S¹ × ⟨τ⟩ × O(3)

A choreography orbit at ε=0 with isotropy Iso(X) ⊆ G_full continues into ε≠0 iff Iso(X) ∩ G_ε is sufficient to constrain a non-degenerate continuation problem.

---

## 3. Residual classes and concrete generators

Among elements of `G_epsilon` whose body-relabel component is `(12)`, the
permutation-time part still falls into four residual classes:

- `alpha`: half-period shift, no time reversal
- `beta`: time reversal, no half-period shift
- `gamma`: chiral alpha
- `delta`: chiral beta

A detector element is not complete until it also carries an explicit spatial
matrix. Keep the abstract residual class separate from the concrete spatial
realization.

Spatial representatives used in this workbench:

```text
I   = diag( 1,  1,  1)
Z   = diag( 1,  1, -1)       # z-reflection
Rpi = diag(-1, -1,  1)       # pi rotation about z
P   = Rpi * Z = -I           # point inversion
```

Concrete generators:

| Name | Class | Permutation | Time shift | Time reversal | Spatial matrix |
|------|-------|-------------|------------|---------------|----------------|
| `alpha_I` | alpha | (12) | T/2 | no | `I` |
| `beta_I` | beta | (12) | 0 | yes | `I` |
| `gamma_Z` | gamma | (12) | T/2 | no | `Z` |
| `delta_Z` | delta | (12) | 0 | yes | `Z` |
| `F_beta` | beta | (12) | 0 | yes | `Rpi` |
| `F_delta` | delta | (12) | 0 | yes | `P = -I` |

`F_beta` is the Li-Liao ansatz facet generator. It is structural: every orbit
generated by the template carries it. It is a concrete beta-class element, not
a redefinition of beta and not evidence for a fifth abstract class. Naming it
separately prevents the detector from confusing `((12), tau, I)` with the
actual facet symmetry `((12), tau, Rpi)`.

`F_delta = F_beta * Z` is the chiral-partner candidate of the facet generator,
not a second structural facet constraint. Its spatial matrix is `P = -I`, and
`P r3 = (0, 0, -z0) != r3` for `z0 != 0`; therefore it fails the template
receipt for out-of-plane orbits and must remain an emergent detector column. It
survives the quotient by `<F_beta>` because `F_delta` is not in `{e, F_beta}`.

The four abstract classes are the representation-theory bookkeeping. The
concrete generators are the detector basis. Quotients such as `/ <F_beta>` are
only defined after everything has been lifted into this explicit spatial-matrix
schema.

---

## 4. The ansatz facet and corrected prediction

The compact Li-Liao supplementary ansatz is not an unbiased sample of full 3D
orbit space. It is a symmetry-conditioned slice:

```text
r1 = (-1, 0, 0)
r2 = ( 1, 0, 0)
r3 = ( 0, 0, z0)

v1 = (vx, vy,  vz)
v2 = (vx, vy, -vz)
v3 = (-2vx/m3, -2vy/m3, 0)
```

Let `Rpi = diag(-1, -1, 1)`, the 180-degree rotation around the z-axis. At
`t=0`, the state is fixed by the concrete beta-class operation

```text
F_beta := ((12), time reversal, Rpi)
```

because `Rpi r2 = r1`, `Rpi r1 = r2`, `Rpi r3 = r3`, and the velocity
condition for time reversal gives `-Rpi v2 = v1`, `-Rpi v1 = v2`,
`-Rpi v3 = v3`. Since the Newtonian flow with `m1=m2` commutes with `F_beta`, every
trajectory produced by this ansatz carries this structural residual `Z2`.

The chiral-partner candidate is not template-enforced. With `P = -I`,
`P r3 = (0, 0, -z0)`, which differs from `r3` whenever `z0 != 0`. Thus
`F_delta = ((12), time reversal, P)` is an emergent test, not a structural
generator to quotient away.

So the original unconditioned estimator is void:

```text
K_raw := #{ i : S_i != empty }
```

The catalog cannot populate the "Type 0" stratum, because generic asymmetric
orbits are outside the facet by construction. The ansatz is the crystal cut.
The 21 choreographies and 273 piano-trios are the sundogs visible through that
cut, not all possible sundogs in the sky.

Corrected working prediction (sundog theorem v0.2):

For each equal-mass choreography `C_i` in the ansatz facet, classify its
*enhanced* residual spacetime isotropy relative to the structural facet
generator `F_beta`. Define

```text
S_i := { rho in {alpha_I, beta_I, gamma_Z, delta_Z, F_beta, F_delta}
         : rho in Iso(C_i) }
E_i := S_i / <F_beta>   # inequivalent emergent residual generators inside facet
d_i := facet-conditioned daughter multiplicity for C_i
```

The empirical target is now

```text
# distinct piano-trio families visible through the Li-Liao ansatz facet
  = K_facet := sum_i d_i
```

The immediate workbench task is to make `d_i` operational: determine which of
the concrete detector generators are structurally baked in by the ansatz, which
are emergent, and which are equivalent under `sigma3` conjugation and spatial
gauge. The algebra above pins the structural generator as `F_beta`, a concrete
realization of the beta class. The numerical detector should verify that before
reading any daughter count.

**Post-K1 disposition.** This v0.2 static isotropy-containment operator is now
retired as the equivariance-only null, not promoted as the sundog prediction.
For a strict choreography seed, the genuine choreography symmetry is cyclic
`<sigma3>` while the piano-trio target symmetry is a transposition-class `Z2`;
generically `Z3` and that `Z2` intersect only in the identity. A static
equal-mass scan for already-present transposition generators therefore forces
`d_i = 0` for generic choreography seeds after quotienting the structural
`F_beta`. K1 surfaced that degeneracy before the multi-hour K2-K4 path, which
is the right failure mode. A non-tautological v0.3 must make `d_i` a
branching/continuation functional, not a static containment count.

**Seed (post-G.2).** The `C_i` are exactly the **21 strict single-curve
choreographies** confirmed by G.2 (catalog-matched, identity inertial-frame
rotation). The 4 rotating/relative choreographies are *not* catalog
choreographies and are excluded from the primary `K_facet`; whether they spawn
their own piano-trio daughters is a separate secondary question, tracked but
not part of the P1/P2 test.

---

## 5. The empirical pin

Liao (2025) supplementary:
- supplementary-A.txt: 10,059 3D periodic orbits with m₁=m₂=1, m₃ = 0.1·n for n ∈ {1, ..., 20}. At the equal-mass slice n=10, G.2 verified **21 strict single-curve choreographies** (canonical+opposite cyclic orientation, identity inertial-frame rotation) — matching the catalog's 21 exactly — plus 4 relative/rotating choreographies tracked separately.
- supplementary-B.txt: 273 3D piano-trio orbits across the same m₃ grid.

Naïve ratio: 273 / 21 ≈ 13. After the ansatz correction, this is not an
unconditioned branching ratio. It is a facet-conditioned multiplicity: roughly
how many sampled piano-trio rows are visible per equal-mass choreography through
the Li-Liao isosceles/time-reversal facet.

We want either:
- **(P1)** # of *facet-visible distinct piano-trio families* `K_emp` matches the structurally-predicted `K_facet`. Each family is sampled at multiple `m3` values, so `273/K_emp` remains a sampling-density diagnostic, not the prediction itself.
- **(P2)** If `K_emp != K_facet`, the discrepancy is itself a structured object and should factor through one of: (i) family bifurcation as `m3` crosses critical values, (ii) chirality doubling we missed, (iii) equivalence collapse from `sigma3` conjugation or spatial gauge, (iv) an ansatz facet that enforces more symmetry than `F_beta` alone.

Either P1 or P2 is informative. The outcome that kills the theorem is `K_facet`
and `K_emp` being unrelated after the facet conditioning is accounted for.

---

## 6. Check procedure (numerical)

G.2 precondition scan:

0. **Scan all `m3=1` supplementary-A rows first.** Run the sigma3 detector over
   all 1,504 equal-mass rows at `rtol=atol=1e-12`, reporting
   `sigma3_residual_inf`, `sigma3_inverse_residual_inf`, and
   `closure_position_inf` side by side. This gate now has two separate jobs:
   (a) confirm detector bimodality, and (b) establish the counting convention
   before any daughter-family count.

   The first full run completed on 2026-05-19 and should **not** be rerun for
   this question. Its old harness defined `sigma3_inverse` as `(cycle132,+T/3)`,
   which is the opposite cyclic labeling, not the inverse of
   `(cycle123,+T/3)`. The true inverse is `(cycle132,+2T/3)`. The run therefore
   found 25 rows under a minimum over two orientation classes, not a clean
   catalog readback of the 21 geometric choreographies.

   The run is still load-bearing as a detector receipt. In
   `results/isotrophy/m3eq1-sigma3-precondition/residuals.csv`, all 25 accepted
   rows land at closure scale (`sigma_best_residual_inf <= 2.77e-8`), while the
   nearest rejected row has best residual `1.58e-2`; there is no middle band.
   The old gate splits as 10 sigma3-only rows, 8 opposite-orientation-only rows,
   and 7 rows accepted by both old tests. No exact duplicate groups appear under
   `(period,z0,stability)`, so exact-key pairing alone did not prove the
   orientation story. The follow-up orientation audit did: the old
   opposite-orientation-only rows are genuine
   `<sigma3_opposite_orientation>` choreographies at closure scale. After the
   opposite orientation received the same full-group closure-relative gate,
   however, the 25-row receipt no longer supports the provisional `14 + 8`
   split. It reports 14 canonical candidates, 12 opposite-orientation
   candidates, and 25 any-orientation IC rows. The extra opposite rows are
   `O_{64}`, `O_{231}`, and `O_{791}` (canonical absolute-pass /
   closure-relative failures, but opposite-orientation closure-tight) plus
   `O_{62}` (closure-tight in both orientations). The old full CSV's
   single-generator closure ratios already show the same 14 canonical / 12
   opposite / 25 either-orientation support set, so this is not a 25-row
   selection artifact. A zero-integration invariant clustering pass on
   `(E, |L|)` then gave 25 singleton groups, not 21; the nearest pair
   (`O_{1172}`, `O_{1265}`) is still separated by `6.36e-5` in energy and
   `2.71e-3` in angular-momentum norm. The decisive distinction is the paper's
   choreographic definition: a single closed trajectory in the inertial frame.
   The SO(3)-gauged detector admits rows where `sigma3 * X = R * X` for a
   non-identity global rotation. Recording the optimized rotation angle gives
   the clean split: 21 any-orientation rows have identity rotation at numerical
   floor, while 4 rows are rotating/relative choreographies with a nontrivial
   `120 deg` global rotation. Thus `25 SO(3)-gauged = 21 strict single-curve +
   4 rotating`.

For each confirmed sigma candidate under the chosen convention:

1. **Ingest** initial conditions and period from supplementary-A. The file uses a compact fixed ansatz, not full 18D state rows: expand `O_index(m3), z0, vx, vy, vz, T, stability` into the three positions and velocities before integrating. Filter the `m3=1` slice.
2. **Discretize** X(t) on N samples per period (N ~ 10³ initially).
3. **Facet precondition:** verify the concrete beta-class ansatz symmetry `F_beta` and the full cyclic choreography condition `<sigma3>` before treating a row as a choreography candidate.
4. **For each concrete generator `rho` in `{alpha_I, beta_I, gamma_Z, delta_Z, F_beta, F_delta}`:**
   - Construct `rho · X(t)` by permuting bodies, time-shifting, optionally reversing time, and applying `rho`'s explicit spatial matrix.
   - Compute `r_rho(X) := min` over rotation `R ∈ SO(3)` and time-phase `phi ∈ S1` of `||rho · X(.) - R · X(. + phi)||_infty / scale(X)`.
   - Mark `rho ∈ Iso(C_i)` if `r_rho(X) < tolerance`.
5. Tabulate `S_i`, quotient out the structural facet generator `F_beta`, and compute `d_i`. Sum to get `K_facet`.

For piano-trio family counting:

6. **Ingest** supplementary-B. For each piano-trio orbit, identify the residual Z₂ type by the same procedure restricted to body-relabel (12).
7. **Cluster** piano-trios into families by continuation in m₃ (first-pass key per the K_facet SCOPE block: residual-type-mod-`<F_beta>` × invariant-continuation; free-group-word deferred).
8. Count `K_emp` = # of distinct facet-visible families.

Compare `K_facet` ↔ `K_emp`. **Disposition: the pre-registered v0.2 scope
below superseded this sketch, then K1 retired it as the equivariance-only null.
Do not run the K2-K4 branch from this sketch unless v0.3 re-registers a
branching/continuation `d_i`.**

Executable harness:

```bash
npm run isotrophy:parse
npm run isotrophy:precondition-smoke
npm run isotrophy:smoke
npm run isotrophy:sigma3-scan:smoke
npm run isotrophy:sigma3-scan:receipt25
npm run isotrophy:invariants:receipt25
npm run isotrophy:sigma3-scan
```

Current status (2026-05-19): `scripts/isotrophy_workbench.py` parses the local
periodic-catalog mirror at
`docs/isotrophy/supplementary-A_periodic-3d_mirror.txt`, expands the
compact ansatz, integrates selected rows with DOP853 at `rtol=atol=1e-12`, and
runs the same explicit-spatial-matrix residual gate for all generators. Parse
smoke recovered 10,059 rows and 1,504 `m3=1` rows. The one-row precondition
smoke runs `sigma3`, the fixed true
`sigma3_inverse`, `F_beta`, and `F_delta` through the same gate; the first
shortest equal-mass row is not a choreography while `F_beta` lands at closure
scale. The five-row structural smoke on the shortest equal-mass rows found
`F_beta` residuals at same-row closure scale and `F_delta` residuals clearly
nonzero. The capped `isotrophy:sigma3-scan:smoke` scanned those five rows and
found 0 sigma candidates, as expected for this generic shortest-period subset.

The full G.2 scan has run once and cost `29461 s` (`~8.18 h`) on the local CPU
machine. Do not repeat it until the row/orbit convention is settled and the
expected count has been explicitly re-registered. The restricted 25-row
fixed-inverse/orientation receipt writes to
`results/isotrophy/m3eq1-sigma3-precondition-fixed-inverse-orientation-25/`;
the future full fixed-inverse `npm run isotrophy:sigma3-scan` writes to
`results/isotrophy/m3eq1-sigma3-precondition-fixed-inverse-full/` so it cannot
clobber the 25-row verification receipt. For the immediate fix, the
already-discovered 25 indices are rerun with:

```bash
npm run isotrophy:sigma3-scan:receipt25
```

Readback under the corrected full-cyclic-group aggregator: `17` canonical IC
rows pass the absolute `1e-5` residual gate, but only `14` are closure-tight
under the pre-registered H.1 criterion `sigma_group_to_closure <= 3`:
`O_{62}`, `O_{264}`, `O_{468}`, `O_{574}`, `O_{609}`, `O_{623}`, `O_{735}`,
`O_{793}`, `O_{1034}`, `O_{1114}`, `O_{1265}`, `O_{1352}`, `O_{1488}`,
`O_{1497}`. The three absolute-pass / closure-fail rows are `O_{64}` (`55x`
closure), `O_{231}` (`10x` closure), and `O_{791}` (`33x` closure), all three
of which are closure-tight in the opposite orientation. The old
`sigma3_opposite_orientation` element is now paired with
`sigma3_opposite_inverse` and gated symmetrically; the opposite-orientation
receipt reports `12` candidates:
`O_{62}`, `O_{64}`, `O_{231}`, `O_{524}`, `O_{617}`, `O_{791}`, `O_{941}`,
`O_{983}`, `O_{1062}`, `O_{1084}`, `O_{1172}`, `O_{1414}`. The corrected
workbench now records
`sigma_group_residual_inf = max(sigma3_residual_inf, sigma3_inverse_residual_inf)`
and sets `sigma_candidate` from `sigma_group_to_closure`, not from
`sigma_best_residual_inf` or the absolute `1e-5` gate. The old absolute gate is
retained as `sigma_absolute_candidate`. The opposite-orientation group has the
same fields under `sigma_opposite_*`, and `sigma_any_orientation_candidate`
records the union. The scan also records each optimized SO(3) alignment angle:
`rotation_angle_rad` per generator, group-level rotation angles, and strict
single-curve flags gated by `identity_rotation_tolerance = 1e-6`.

This is still not a `K_facet` result and not evidence for the theorem. It is a
precondition gate plus a convention audit. The strict single-curve receipt now
matches the catalog count exactly: `13` canonical-strict rows plus `8`
opposite-strict rows, with no overlap, for `21` strict choreographies. The four
SO(3)-gauged but non-strict rows are `O_{791}`, `O_{983}`, `O_{1084}`, and
`O_{1352}`; their accepted generator has rotation angle `2.094395... rad`
(`120 deg`). The maximum strict accepted rotation angle is `3.65e-8 rad`, so
the separator is strongly bimodal.

---

## G.2 — RESOLVED (2026-05-19)

The σ3 precondition is closed. The narrative above is the historical trail;
the verified terminal result, independently read back from
`results/isotrophy/m3eq1-sigma3-precondition-fixed-inverse-orientation-25/residuals.csv`,
is:

- **25** SO(3)-gauged any-orientation candidates — all closure-tight, razor
  bimodal (accepted group-to-closure `≲ 3`, nearest reject `O(10⁶)`), zero
  spurious.
- **21 strict single-curve choreographies** — matched-orientation alignment
  rotation at the numerical floor (max `3.65e-8 rad`). **Equals the catalog's
  21 exactly.**
- **4 rotating/relative choreographies** — `O_{791}`, `O_{983}`, `O_{1084}`,
  `O_{1352}` — matched-orientation rotation = exactly `2π/3` (one full
  precession per period). Separator ~8 orders wide; the `1e-6` strict
  tolerance sits in empty space (count invariant for any tol in `[1e-7, 2]`).
- `(E, |L|)` → 25 singletons: the 4 rotating are distinct orbits, not
  duplicate listings.

Resolution: the catalog's "21 equal-mass 3D choreographies" are the strict
single-*inertial*-curve orbits (arXiv:2508.08568 verbatim: "a single closed
trajectory"). The SO(3) gauge-min — required for a gauge-invariant isotropy
test — necessarily admits 4 additional relative choreographies; the rotation
angle the gate already computes is the exact discriminant. The detector is
trustworthy. **G.2 passes; no residual discrepancy.** This is still not a
`K_facet` result.

---

## K_facet — v0.2 SCOPE (pre-registered, then retired, 2026-05-19)

G.2 was the precondition; K_facet was the proposed sundog test. It was
pre-registered so the prediction was frozen *before* the empirical count was
seen. K1 did freeze it honestly, then showed the proposed operator collapses
to the equivariance-only null. This section is retained as the receipt trail;
do not run K2-K4 under this v0.2 scope.

**Seed.** The 21 strict single-curve choreographies from G.2 (catalog-matched).
Exclude the 4 rotating; track them only as a secondary, non-gating question.

**K1 — freeze the prediction (cheap, do first).** Run the 6 concrete
generators `{alpha_I, beta_I, gamma_Z, delta_Z, F_beta, F_delta}` on the 21
strict choreography ICs via `--indices` (minutes, no full scan). For each
`C_i` compute `S_i`, `E_i = S_i/<F_beta>`, `d_i`, and `K_facet := Σ d_i`.
**Record the integer `K_facet` and the per-`C_i` table in this doc and the Log
before K3.** Output: `results/isotrophy/k-facet-prediction-21strict/`
(protected).

**K1 receipt (2026-05-19, COMPLETE).** `npm run isotrophy:kfacet:predict`
ran the registered 21 strict G.2 indices with `rtol=atol=1e-12`,
`n_samples=1009`, `phase_grid=73`, closure multiple `k=3`, and identity
rotation tolerance `1e-6`. Elapsed wall time: `447.54 s`. Receipt path:
`results/isotrophy/k-facet-prediction-21strict/` (gitignored/protected).

Primary strict result: **`K_facet = 0`**. `F_beta` passes for all 21 rows
(`F_beta_precondition_failure_count = 0`), but no generator survives the
strict quotient after removing the structural facet generator. The SO(3)-gauged
diagnostic is **`SO3_gauged_K_facet = 21`** because every row also admits
`beta_I` at closure scale only when the missing `Rpi` is absorbed into the free
SO(3) alignment (`beta_I_rotation_angle_rad ~= pi`). That diagnostic is not the
frozen prediction; it is the broadened-gauge shadow G.2 warned us not to count
as strict single-curve evidence.

| `C_i` | strict `S_i` | strict `E_i = S_i/<F_beta>` | `d_i` | SO(3)-gauged diagnostic |
|---|---|---|---:|---|
| `O_{62}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{64}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{231}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{264}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{468}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{524}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{574}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{609}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{617}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{623}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{735}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{793}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{941}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1034}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1062}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1114}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1172}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1265}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1414}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1488}` | `F_beta` | empty | 0 | `beta_I;F_beta` |
| `O_{1497}` | `F_beta` | empty | 0 | `beta_I;F_beta` |

**K2 — supplementary-B prerequisite (PAUSED under v0.2).** Obtain a local supplementary-B mirror
(upstream times out; the A mirror was localized for exactly this reason).
Verify `parse --source B` reports the expected **273** piano-trio rows across
`m3 = 0.1·n, n∈{1..20}` with the B-form `v3 = (-2 vx/m3, -2 vy/m3, 0)` ansatz.
Do not proceed under v0.2; row count and grid verification only become useful
again after a v0.3 branching functional is pre-registered.

**K3 — classify (PAUSED under v0.2).** Same closure-relative + rotation-angle
gate (the G.2-validated path), 6 generators, all 273 B rows, each flagged
strict/rotating under the same single-inertial-curve convention G.2 fixed.
Stage: smoke (5 rows) → restricted receipt → full. Full output:
`results/isotrophy/k-facet-suppB-full/` (protected, never a receipt dir).
Estimated ≈ 2–3 h at `rtol=atol=1e-12`; do not spend that compute against
`K_facet = 0`, because it would only test the already-known equivariance null.

**K4 — cluster → `K_emp` (PAUSED under v0.2).** First-pass key:
`(residual-type-mod-<F_beta>) × (continuation in m3 traced by conserved
invariants E, |L|, period continuity across n=1..20)`. The free-group-word /
braid label is **explicitly deferred** — the harness cannot compute it and
requiring it now is scope creep that sinks the run; it is a later refinement
(see 8.x), not a first-pass gate. `K_emp` = # distinct families.

**Falsifier (pre-registered).** P1: `K_emp == K_facet` (frozen at K1). P2: if
not, the gap must factor through one named structured channel — (i) family
bifurcation across an `m3` critical value, (ii) chirality doubling
(`F_delta`), (iii) `sigma3`-conjugation / spatial-gauge equivalence collapse,
(iv) facet enforcing more than `F_beta`. Unstructured `K_facet ≠ K_emp` after
facet conditioning is the kill condition. `273/21 ≈ 13` is a sampling-density
diagnostic, never the prediction.

With K1 complete, P1 would be the equality `K_emp == 0`. That is not a useful
sundog theorem test; it is the equivariance-only null restated numerically.
Therefore the v0.2 falsifier is retired before K2. Do not patch `d_i` after the
fact to avoid zero. A v0.3 registration must derive a new `d_i` around the
branching/Morse content: the number of `Z2`-isotropic piano-trio branches that
bifurcate from each `Z3` choreography under `m3 -> 1 + epsilon`, with its
negative stated before any supplementary-B count is run.

---

## K_facet — v0.3 DESIGN DECISION (spec only, not yet registered)

Decision: if the isotrophy line continues, v0.3 should use a spectral
equivariant-bifurcation functional computed from the `m3=1` choreography
alone. Do **not** use full numerical continuation in `m3` as the primary
prediction, because supplementary-B is already a continuation-style catalog and
that would make the test circular.

Corrected foundation:

Do **not** define `P_alpha` as if `alpha_I = ((12), T/2, +, I)` were already an
isotropy of each choreography. That was the v0.2 failure in spectral clothing:
a strict choreography carries the cyclic `<sigma3>` symmetry, not generically
the transposition-class piano-trio symmetry. The enabling fact is instead that
at `m3=1` the equal-mass problem is `S3`-equivariant, so `(12)` is a symmetry
of the equations even when it is not an isotropy of the individual orbit.

For rows where `(12)` maps `C_i` to itself up to the validated phase/spatial
gauge, define the twist operator on the variational state by

```text
G_i := rho((12)) o Phi_{T/2}
```

where `rho((12))` is the equal-mass relabel action and `Phi_{T/2}` is the
linearized half-period flow map along `C_i`. The derivation must establish
`[M_i, G_i] = 0`; only then does the piano-trio twisted sector
`V_PT,i = ker(G_i - I)` make sense as a monodromy block.

For rows where `(12)·C_i` is a different equal-mass choreography, `G_i` is not
an endomorphism of `T_{C_i}`. Those rows require an induced-representation
formula over the `S3` group orbit of `C_i`. The v0.3 formula cannot be frozen
until the 21 rows are split into the endomorphism and induced-representation
cases.

Post-review status: the simple endomorphism-case kernel below is historical
and **not** registered. v0.3a later found `0` endomorphism rows and 21
induced-representation rows; v0.3c then found that even the induced formula
cannot be flattened until the typed transport lemma closes. The current
paper-only target is therefore:

```text
typed transport lemma first
neutral block: N_i := span{ X_H(y_i(0)), u_E }, with (M_i - I)u_E = c_i X_H
construct G_i as a typed fiber map before claiming [M_i,G_i]=0
compute G_i^2 after the cocycle is chosen
define B_i^+ := B_i cap K_i^+ before quotient/reduction
d_i_candidate := (1/2) * dim_R K_i^{PT}, then gate by semisimplicity,
                 crossing-form nondegeneracy, and symplectic nondegeneracy
```

The derivation is the next deliverable. It must specify:

1. the typed fibers and maps (`A_F`, `A_tau`, `A_Rpi`, `P12`, `Phi_t`,
   `V_0`, `V_h`, `V'_0`, `V'_h`);
2. reversible identities with domains and codomains;
3. the alpha-induced map on `V_0` through the partner fiber;
4. proof or refutation of `G_i^2 = I`;
5. only then, the proof or counter-proof of `[M_i,G_i]=0`;
6. the structural `B_i^+` quotient/reduction;
7. the corrected Hamiltonian neutral quotient through `u_E`;
8. the `+1` candidate multiplicity and manual-review gates, using
   closure-relative tolerance rather than absolute thresholds.

### v0.3a case-split gate: `tau12_I ∪ tau12_Z`

Before any monodromy or `K_facet_v0.3` freeze, split the 21 strict
choreographies by whether the equal-mass transposition acts on the
choreography's own gauge class.

Keep three conditions separate:

1. **Strict `alpha_I` (settled: none).**
   `P12 C_i(t + T/2) = C_i(t)` with identity spatial rotation. K1/v0.2 found
   zero of 21.
2. **SO(3)-absorbed shadow (settled: demoted).**
   The same fixed-half-period idea with a free SO(3) rotation; this is the
   `beta_I` plus `Rpi` absorption artifact quarantined by K1.
3. **Gauge-class transposition selector (new).**
   Does there exist explicit spatial parity `S in {I, Z}`, proper rotation
   `R in SO(3)`, and free phase `phi in S1` such that
   `P12 S C_i(t) = R C_i(t + phi)`? This is not a piano-trio test. It asks
   whether `(12)` is an endomorphism of the choreography's geometric gauge
   class through either the proper or improper O(3) parity class, while keeping
   chirality explicit. If not, the v0.3 formula must use the induced
   representation over the `S3` group orbit.

The detector candidate set is:

```text
tau12_I := ((12), free phi, no time reversal, spatial I, SO(3) gauge-min)
tau12_Z := ((12), free phi, no time reversal, spatial Z, SO(3) gauge-min)
```

`tau12_I` is the proper-parity candidate. `tau12_Z` is the improper-parity
candidate. A separate `tau12_P` is redundant because `P = Rpi*Z` lives in the
same improper O(3) coset as `Z`, and the free SO(3) minimizer can absorb the
`Rpi` factor.

The union must use the same validated closure-relative residual gate as G.2:
closure-tight at `k = 3` under either candidate means endomorphism; `O(1)`
under both means induced. The minimizer must remain SO(3), never O(3), because
an improper-reflection collapse would erase the parity bit that later belongs
inside the `G_i` cocycle. If the 21 rows are not razor-bimodal, record a
marginal third category and do not force-binarize.

The receipt must persist the full cocycle for every choreography:

```text
label, tau12_case, winning_candidate, spatial_parity,
residual_inf, residual_to_closure, phi, phi/T, phi/(T/2),
rotation_angle_rad, R_i
```

The `spatial_parity, R_i, phi_i` triple is part of the later `G_i` definition,
not diagnostic clutter. If an endomorphism appears through `tau12_Z`, the
monodromy commutation proof must handle the improper spatial factor explicitly.
The column `phi_i/(T/2)` is the Bragg/coherence cross-check: it is the
candidate commensurability signal that may explain which endomorphism cases can
carry a nontrivial `+1` block.

**Proper-parity receipt (2026-05-19, COMPLETE).** The first run tested only
`tau12_I` under the name `tau12_gauge`. It remains a valid receipt for the
proper O(3) parity class, not for the full case split. Result: **0 proper
endomorphism, 21 proper-induced, 0 marginal review.** No row was closure-tight;
the best non-tight ratio was `2.815e7`. Receipt path:
`results/isotrophy/k-facet-v03-tau12-case-split-21strict/`
(gitignored/protected). The union receipt below supersedes only the count
decision, not this proper-parity receipt.

**Parity-union receipt (2026-05-20, COMPLETE).** `npm run
isotrophy:tau12:cases` ran the locked candidate set `{tau12_I, tau12_Z}` on the
same 21 strict rows. Elapsed wall time: `177.72 s`. Receipt path:
`results/isotrophy/k-facet-v03-tau12-parity-union-21strict/`
(gitignored/protected).

Result: **0 endomorphism, 21 induced-representation cases, 0 marginal
reviews** under the full explicit O(3) parity union. No row was closure-tight;
the best non-tight ratio remains `2.815e7`. The improper sibling changed the
best residual parity for 6 rows but did not move any row near the closure
gate. Therefore "all-induced" is robust under the full parity-aware case-split
candidate set.

| `C_i` | case | winner | parity | best/closure | I/closure | Z/closure | `phi/(T/2)` | `rot rad` |
|---|---|---|---:|---:|---:|---:|---:|---:|
| `O_{62}` | induced | `tau12_Z` | -1 | `8.488e8` | `8.508e8` | `8.488e8` | 1.307 | 2.045 |
| `O_{64}` | induced | `tau12_I` | 1 | `7.239e8` | `7.239e8` | `7.687e8` | 1.762 | 1.381 |
| `O_{231}` | induced | `tau12_I` | 1 | `2.073e8` | `2.073e8` | `2.079e8` | 1.043 | 3.118 |
| `O_{264}` | induced | `tau12_I` | 1 | `1.714e8` | `1.714e8` | `1.737e8` | 0.979 | 2.439 |
| `O_{468}` | induced | `tau12_Z` | -1 | `1.181e8` | `1.229e8` | `1.181e8` | 1.136 | 3.093 |
| `O_{524}` | induced | `tau12_I` | 1 | `7.624e7` | `7.624e7` | `8.305e7` | 0.938 | 1.365 |
| `O_{574}` | induced | `tau12_I` | 1 | `1.332e8` | `1.332e8` | `1.397e8` | 1.669 | 2.700 |
| `O_{609}` | induced | `tau12_Z` | -1 | `5.710e7` | `5.754e7` | `5.710e7` | 0.309 | 3.077 |
| `O_{617}` | induced | `tau12_I` | 1 | `1.139e8` | `1.139e8` | `1.154e8` | 1.681 | 2.747 |
| `O_{623}` | induced | `tau12_I` | 1 | `9.463e7` | `9.463e7` | `9.671e7` | 0.105 | 2.385 |
| `O_{735}` | induced | `tau12_I` | 1 | `6.627e7` | `6.627e7` | `6.694e7` | 0.350 | 1.517 |
| `O_{793}` | induced | `tau12_I` | 1 | `6.981e7` | `6.981e7` | `7.592e7` | 0.988 | 2.133 |
| `O_{941}` | induced | `tau12_I` | 1 | `5.257e7` | `5.257e7` | `5.673e7` | 0.474 | 1.269 |
| `O_{1034}` | induced | `tau12_I` | 1 | `5.466e7` | `5.466e7` | `5.576e7` | 1.960 | 2.087 |
| `O_{1062}` | induced | `tau12_I` | 1 | `6.350e7` | `6.350e7` | `6.581e7` | 0.765 | 2.372 |
| `O_{1114}` | induced | `tau12_Z` | -1 | `5.805e7` | `6.236e7` | `5.805e7` | 0.374 | 1.369 |
| `O_{1172}` | induced | `tau12_Z` | -1 | `3.400e7` | `3.488e7` | `3.400e7` | 1.701 | 3.132 |
| `O_{1265}` | induced | `tau12_I` | 1 | `2.815e7` | `2.815e7` | `2.932e7` | 1.667 | 2.978 |
| `O_{1414}` | induced | `tau12_I` | 1 | `2.962e7` | `2.962e7` | `3.140e7` | 0.314 | 3.104 |
| `O_{1488}` | induced | `tau12_Z` | -1 | `3.485e7` | `3.824e7` | `3.485e7` | 1.273 | 3.138 |
| `O_{1497}` | induced | `tau12_I` | 1 | `3.016e7` | `3.016e7` | `3.219e7` | 1.871 | 1.696 |

### v0.3b F_beta pair-ID and cocycle confirmation

After the parity-union case split, a teammate flagged the remaining pair-ID
chain: the 21 strict rows are singleton `(E, |L|)` groups, and bare `(12)` is a
Hamiltonian symmetry, so the bare-swapped image of `C_i` can only match row
`i` by those invariants. But v0.3a found `0` endomorphism cases under the full
explicit parity union, so the self row is not a valid same-orbit partner.
Therefore all 21 strict rows are catalog-asymmetric under bare `(12)`.

**Receipt (2026-05-20, COMPLETE).** `npm run isotrophy:fbeta:pair-id` ran this
confirmation on the 21 strict rows. Elapsed wall time: `99.69 s`. Receipt path:
`results/isotrophy/k-facet-v03-fbeta-pair-id-21strict/`
(gitignored/protected).

Result: **21 singleton invariant groups, 0 inside-catalog matches excluding the
self row, 21 catalog-asymmetric rows, 21 self-invariant matches, and 21/21
`F_beta` closure-tight rows**. The `F_beta_to_closure` range was
`0.283..0.804`, comfortably inside the `k=3` closure-relative gate. The receipt
manifest records the structural cocycle as a schema constant:

```text
F_beta = ((12), tau-active, Rpi)
tau component = schema-constant active
per-row tau flag = false
partner-orbit IVP = false
M_(12*C_i) = rho(Rpi) * M_i^-1 * rho(Rpi)^-1
```

Operational consequence: do not implement a 21-row "missing partner"
integration workflow for v0.3. The bare `(12)` partner's variational structure
is obtained from the parent monodromy by linear F_beta conjugation. A single
sentinel re-integration may be useful as a robustness cross-check later, but it
is not the per-row prediction path. Likewise, tau is not a row-level boolean:
F_beta is structural for all 21 rows, so tau is uniformly active at the schema
level. Per-row variability belongs only to any additional `(R_i, phi_i)` gauge
fit layered on top of the structural cocycle.

### v0.3c derivation review: typed transport lemma gate

A draft loop-to-fiber reduction and multiplicity-parity rule was reviewed on
2026-05-20 and **not frozen**. The review accepted the direction but converted
five points into no-code blockers:

1. The neutral quotient must use the generalized Hamiltonian unit-multiplier
   block, not `span{ydot, J*grad H}`. Preferred form:

   ```text
   N_i := span{ X_H(y_i(0)), u_E }
   (M_i - I) u_E = c_i X_H(y_i(0)),  c_i != 0
   ```

2. The alpha-induced `G_i` must be constructed as a typed map between fibers
   before asserting `[M_i,G_i]=0`; `Phi_{T/2}` is not a same-fiber endomorphism
   until the transport cocycle is specified.
3. `G_i^2 = I` must be computed from the chosen cocycle, not inherited only
   from loop-level `alpha_I^2 = e`.
4. Structural removal must be written through `B_i^+ := B_i cap K_i^+` and then
   either a quotient `K_i^+ / B_i^+` or symplectic reduction
   `((B_i^+)^omega) / B_i^+`, depending on the structure proven by the typed
   lemma.
5. `d_i_candidate = (1/2) * dim_R K_i^{PT}` is only a candidate branch count.
   It becomes `d_i` only for rows whose `+1` block is semisimple beyond `N_i`,
   whose Lyapunov-Schmidt crossing form is nondegenerate, and whose
   `K_i^{PT}` symplectic structure is nondegenerate; otherwise the row is a
   manual-review / refined-rule row.

Notation lock for the next derivation: write the structural action as
`A_F y_i(-s) = y_i(s)`, with `A_F` the phase-space linear part of `F_beta`, so
time reversal stays explicit.

The next artifact is a one-page typed transport lemma defining `A_F`, `A_tau`,
`A_Rpi`, `P12`, `Phi_t := Dphi_t(y_i(0))`, and the fibers `V_0`, `V_h`,
`V'_0`, `V'_h`; stating reversible identities with domains/codomains;
constructing the alpha-induced map on `V_0`; and proving or refuting
`G_i^2 = I`. If that lemma leaves non-canonical holonomy, v0.3 must not be
flattened into a single-fiber `d_i`.

### v0.3d typed transport response: pair-orbit proposal, not locked

The first typed transport lemma draft found that a canonical single-fiber
`G_i` is probably the wrong object. Alpha sends a tangent loop at the parent
choreography into a half-period-shifted partner loop, so any single-fiber
operator on `V_0` requires an extra identification. Different identifications
produce different candidate operators. The draft proposes replacing the
single-fiber `G_i` filter with a pair-orbit alpha-fixed kernel and then
counting an `A_F`-even, `sigma3`-nontrivial sector of `K_i^{fib}`.

That proposal is **not registered**. Review found six blockers:

1. `A_F y_i(-t)=y_i(t)` implies `A_F y_i(t)=y_i(-t)`, not pointwise
   fixedness for every `t`; `A_F` is same-fiber only at fixed phases such as
   `0` and `T/2`.
2. The pair-orbit construction still needs a based-loop convention: alpha lands
   at the shifted partner fiber `V_h'`, not automatically at `V_0'`.
3. The `M_i^{-1/2}` / Maslov branch language should be replaced by the typed
   half-flow `Dphi_{-T/2}`; the real ambiguity is the fiber identification, not
   a necessary matrix-square-root choice.
4. The alpha-fixed graph parameterization must be proved after quotienting the
   Hamiltonian neutral block `N_i`.
5. `F_beta` and `sigma3` should be handled as a real dihedral representation:
   `F_beta` likely conjugates `sigma3` to `sigma3^{-1}`, so
   `A_F-even cap sigma3-nontrivial` is not a pair of commuting masks unless
   proven.
6. Once the sector is `A_F`-even, the old symplectic `1/2*dim` argument no
   longer transfers automatically; multiplicity is again pending.

Revised next artifact: a pair-orbit / dihedral-representation lemma. It should
choose the loop convention (shifted partner, free-loop quotient, or explicit
phase transport), prove the alpha-fixed graph descends through `N_i`, derive
the `<sigma3,F_beta>` real representation on `K_i^{fib}`, and only then define
the branch candidate sector and multiplicity gate.

### v0.3e pair-orbit / dihedral draft 2 review

Draft 2 improves the object again: choose an actual `F_beta` fixed anchor,
represent `<sigma3,F_beta>` as the real dihedral group `D3`, and make the
candidate count the multiplicity `c_i` of the standard 2D real irrep in
`K_i^{fib}`:

```text
K_i^{fib} ~= a_i*T + b_i*S + c_i*E
d_i_candidate := c_i
```

This is the best candidate shape so far, but **not registered**. Review found
six remaining blockers:

1. Alpha still lands in shifted fibers (`V_h`, `V_h'`) under the based-loop
   anchors, so the equality "alpha-fixed pair-kernel = `ker(M_i-I)/N_i`" is
   not proved until the loop convention is chosen.
2. The calculation reducing
   `P12 Phi_{T/2}^Y P12 Phi_{T/2}^C` to `M_i` is mistyped unless the phase
   transport/free-loop convention is explicit.
3. The `F_beta` fixed anchor must be certified per row: either phase 0 is
   closure-tight under `F_beta`, or the phase shift to the nearest `F_beta`
   fixed epoch is recorded and all operators are built from it.
4. The partner anchor is fixed by the conjugate symmetry
   `P12 F_beta P12^{-1}`, not automatically by the same parent-frame
   `F_beta`; name that operator in the pair proof.
5. The neutral quotient must be `D3`-equivariant. The next refinement shows it
   should split as `T*u_E + S*X_H`, not as a wholly trivial block; `u_E` still
   needs a normalization/proof so the quotient is independent of its kernel
   ambiguity.
6. `d_i_candidate=c_i` is a representation candidate, not yet a branch count;
   it still needs G2/crossing-form validation.

Scratchpad note: the "couplings surface / 1/phi^3" conjecture in
`internal/anniversary/scratchpad_brainstorm_notes.md` should stay quarantined.
Its rigorous version is only a future diagnostic on the Lyapunov-Schmidt
crossing-form spectrum after the standard `D3` sector is defined; it is not a
premise of v0.3.

Revised next gate: choose the loop convention, certify the `F_beta` and
conjugate partner anchors, build the anchored `D3` representation on
`K_i^{fib}`, prove the `D3`-equivariant neutral quotient as
`T*u_E + S*X_H` with no `E` leakage, and then state `d_i_candidate=c_i` with a
crossing-form branch-validity gate.

### v0.3f neutral-block refinement

The neutral block does not sit in one trivial isotypic. At the `F_beta` fixed
anchor:

```text
X_H(p_i^F):  sigma3=+1, F_beta=-1  -> sign irrep S
u_E^C:       sigma3=+1, F_beta=+1  -> trivial irrep T   (with a normalization rule)
```

Therefore:

```text
pre-quotient:   K_i^{fib*} ~= a_i*T + b_i*S + c_i*E
neutral block:  N_C ~= T*u_E^C + S*X_H
post-quotient:  K_i^{fib}  ~= (a_i-1)*T + (b_i-1)*S + c_i*E
```

This sharpens G3 rather than changing the candidate count: the standard-irrep
count `c_i` is preserved because neither neutral direction lies in an `E`
block. The structural sector after quotient is `(a_i-1)*T`; `(b_i-1)*S` is a
separate `F_beta`-odd, `sigma3`-trivial deformation sector excluded by the
ansatz convention. `d_i_candidate=c_i` survives, pending G1/G2/G3 and the
crossing-form gate.

Updated v0.3f gate order:

1. declare the based-loop convention at the `F_beta` fixed anchor `p_i^F`;
2. type the half-flow composition explicitly, never `(Phi_{T/2})^2` without a
   transport;
3. certify parent and conjugate partner anchors, recording any discrete anchor
   choice;
4. carry `N_C = T*u_E + S*X_H` through the `D3` quotient and prove no `E`
   leakage;
5. reserve G2 crossing form as the per-row branch-validity check.

Only after the pair-orbit / dihedral-representation lemma and the
candidate-count gates are written should any code integrate variational
equations or freeze `K_facet_v0.3`. The frozen output would be the 21
per-choreography candidate integers, manual-review flags if any gates fail, and
their gated sum, recorded before any supplementary-B clustering.

### v0.3g crossing-form / non-degeneracy gate

The next branch-validity draft correctly moves from representation multiplicity
to a crossing-form gate. The useful structural split is:

```text
Delta H := partial_epsilon H |_{epsilon=0}
Delta H = Delta H_T + Delta H_E
Delta H has no sign-irrep S component because it is F_beta-even.
```

`Delta H_T` is the fully `D3`-symmetric part. `Delta H_E` is the body-3
singled-out part that breaks `sigma3`. The intended claim is that the `T`
component drives only structural continuation, while piano-trio branch creation
from the standard sector is controlled by the `E` component of the monodromy
variation.

This is **not locked** as a scalar per-block `gamma_i^(k)` rule. The crossing
form must first be defined on the neutral-quotiented, anchored standard sector.
When `c_i > 1`, the correct object is likely a crossing matrix on the
standard-irrep multiplicity space:

```text
Gamma_i : R^{c_i} -> R^{c_i}
d_i := rank_floor(Gamma_i)          # only if the paper gate proves this rule
```

The scalar readout `gamma_i^(k)` is a special case, valid only after proving
that the chosen `E`-block basis diagonalizes the crossing form or that
off-diagonal E-copy mixing does not change the branch count. Until then,
`d_i_candidate=c_i` remains a representation candidate, and `d_i` remains
unfrozen.

Open v0.3g gates:

1. Check the formula for `Delta H` in the actual symplectic-reduced coordinates;
   mass-dependent reduction could add terms not visible in the unreduced
   shorthand.
2. Verify `Delta H` has no `S` component at the Hamiltonian-vector-field /
   tangent-operator level, not only as a configuration-space symmetry claim.
3. Define the correct quotient Floquet crossing form after the `T*u_E+S*X_H`
   neutral block is removed.
4. Prove the Schur-lemma collapse for that exact quotient crossing form.
5. Handle E-copy mixing by a multiplicity-space matrix/rank rule, or prove why
   scalar per-block gammas suffice.
6. Prove anchor independence, or record the anchor convention in the receipt.
7. Define `gamma_floor` empirically and closure-relatively through
   reproducibility, step refinement, or a symmetry-equivalent anchor check. Do
   not derive it from `rtol`/`atol` alone.

The scratchpad `1/phi^3` coupling conjecture stays quarantined. It can be a
diagnostic only if the crossing matrix shows near-zero or degenerate
directions; it is not part of the registered prediction.

### v0.3h rank-matrix / symplectic-block-orthogonality gate

The matrix formulation is now the cleaner structural target for the
branch-validity gate. Define `Gamma_i` on the `c_i`-dimensional
`F_beta`-even line bundle inside the standard `E`-isotypic sector:

```text
Gamma_i^(k,k') := omega(xi_k, (partial_epsilon M_i) xi_k')
d_i            := rank_floor(Gamma_i)
rank_floor     := #{ singular values of Gamma_i > k_gamma * gamma_floor }
```

For `c_i=1`, this reduces to the scalar `gamma_i^(k)` rule. For `c_i>=2`,
the full SVD rank is the object; a block-diagonal/scalar rule is a consequence
only if an additional structural claim is proved.

The new exposed gate is:

```text
G2.6: symplectic block-orthogonality of the E-isotypic sector.
```

The earlier `T`-component Schur-collapse argument proves diagonal vanishing:
`omega(xi_k, xi_k)=0`. It does **not** automatically prove off-diagonal
vanishing `omega(xi_k, xi_k')=0` for `k != k'`. If the natural
`M_i`+`rho(sigma3)` decomposition splits the `E` copies into
symplectically-orthogonal 2D blocks, the `T` component contributes zero to all
of `Gamma_i`, and the scalar/block-diagonal rule becomes the operating
special case. If cross-block symplectic pairing is nonzero, `Gamma_i` has a
real off-diagonal `T` contribution and the matrix/rank gate is strictly
necessary.

Consolidated v0.3h gates:

1. **G2.1:** verify operator-level `F_beta` invariance of
   `D(J grad Delta H)` and the no-`S` claim.
2. **G2.2:** cite / verify real Schur for the `D3` standard irrep
   (`End_D3(E)=R`).
3. **G2.3:** absorb E-copy mixing into the full `Gamma_i` matrix rather than
   treating it as an afterthought.
4. **G2.4:** prove anchor independence of `Gamma_i`, or record the anchor
   convention.
5. **G2.5:** define the closure-relative `gamma_floor`.
6. **G2.6:** test/prove symplectic block-orthogonality of the `E` copies.

Receipt schema extension:

```text
Gamma_i_matrix                 c_i x c_i
Gamma_i_singular_values
Gamma_i_rank_floor
gamma_floor
symplectic_block_orthogonal_E  true/false from the E-isotypic omega-Gram matrix
d_i                            Gamma_i_rank_floor
```

If `symplectic_block_orthogonal_E=true` across all 21 rows, the scalar rule is
empirically operating in the catalog regime. If false for any row, that row
must use the full matrix/rank gate. Either way, no monodromy code is authorized
until v0.3h specifies the matrix construction, G2.6, anchor independence, and
the floor.

### v0.3h draft review: rank survives, G2.6 reframed

The v0.3h rank-matrix draft is accepted as the right structural object:

```text
Gamma_i^(k,k') := omega(xi_k, (partial_epsilon M_i) xi_k')
d_i            := rank_floor(Gamma_i)
```

However, the proposed closure of G2.6 by an `M_i + sigma3` Floquet basis is not
valid as written. `K_i^{fib}` is already the neutral-quotiented `+1` kernel
`ker(M_i-I)/N_i`; on that space `M_i` acts as the identity. Therefore distinct
`M_i` Floquet multipliers cannot canonically split the `E` copies inside
`K_i^{fib}`. Any receipt field named `M_i_E_floquet_multipliers` must refer to
the ambient E-isotypic variational spectrum, not to the kernel being counted.

The good news is stronger than the attempted G2.6 proof. The off-diagonal
`T`-component collapse follows from the anti-symplectic fixed-space argument:

1. `(partial_epsilon M_i)_T` is `D3`-equivariant, hence commutes with
   `F_beta`.
2. If `xi_k'` is `F_beta`-even, then `(partial_epsilon M_i)_T xi_k'` is also
   `F_beta`-even.
3. The fixed subspace of an anti-symplectic involution is isotropic:
   `omega(u,v)=0` for all `u,v in Fix(F_beta)`.

Therefore:

```text
Gamma_i^T(k,k') = omega(xi_k, (partial_epsilon M_i)_T xi_k') = 0
```

for all `k,k'`, with no symplectic block-orthogonality assumption. This makes
G2.1/operator-level `F_beta` preservation the load-bearing proof for
`Gamma_i^T=0`.

G2.6 should be reframed as a basis-conditioning / interpretability diagnostic,
not as the theorem that makes T-collapse true. The rank of `Gamma_i` is
invariant under any invertible change of basis on the `F_beta`-even standard
multiplicity space. A block-orthogonal basis is useful for human interpretation
and for scalar diagnostics, but the locked count is the SVD rank of the full
matrix.

Revised v0.3h receipt schema:

```text
Gamma_i_matrix
Gamma_i_singular_values
Gamma_i_rank_floor
gamma_floor
E_basis_conditioning
omega_Gram_E_diagnostic
symplectic_block_orthogonal_E   diagnostic only
d_i = Gamma_i_rank_floor
```

G2.4 also needs a small wording correction: anchor switching acts by invertible
transport on the basis, so the bilinear matrix changes by congruence, not
necessarily similarity. Rank is invariant under congruence, so the count remains
anchor-independent once the transport is typed.

G2.5 remains proposed, not closed. The `gamma_floor_i` formula and constants
`k_gamma`, `k_int` need a pre-registered sentinel calibration before any run.
That calibration is the first empirical step, but it is not authorized until
the paper gate specifies its receipt and branch conditions.

Operational G2.6 disposition:

```text
G2.6d: do not canonicalize for the count.
```

The locked object is the rank of `Gamma_i`, which is basis-invariant on the
`F_beta`-even standard multiplicity space. Per-block diagonal scalars
`Gamma_i^(k,k)` are basis-dependent diagnostics only. The receipt may record
them, but it must also record the basis convention used to compute them, and
they do not enter `K_facet_v0.3`.

Open G2.6 research follow-up:

```text
G2.6b: test whether Phi_{T/2}^C is an involutive canonicalizer on K_i^{fib}.
```

Since `(Phi_{T/2}^C)^2=M_i=I` on the kernel, the half-period map may carry a
meaningful `+/-` split connected to the original `alpha_I` twist. This is a
paper-level exploration only. It is not required for the rank count and should
not block v0.3h-final.

Updated v0.3h-final posture:

1. `Gamma_i^T=0` entry-wise by `Fix(F_beta)` isotropy, once operator-level
   `F_beta` preservation of `(partial_epsilon M_i)_T` is proved.
2. `Gamma_i=Gamma_i^E` is the `c_i x c_i` bilinear form on
   `F_beta`-even standard multiplicity space.
3. `d_i=rank_floor(Gamma_i)` is the basis-invariant count.
4. G2.4 anchor independence is rank invariance under congruence.
5. G2.5 floor formula survives, but `k_gamma` / `k_int` require a
   pre-registered sentinel calibration receipt before running.
6. G2.6d closes the operational basis question: rank-only for the count,
   scalar diagonals as diagnostics with basis convention recorded.
7. Remaining paper chores: cite G2.1/G2.2 and replace the old Krein flag with a
   degeneracy / bimodality flag for `(partial_epsilon M_i)_E` or `Gamma_i`
   singular values.

### v0.3i sentinel calibration pre-registration

v0.3i is the smallest empirical calibration step for the rank-matrix gate. It
does **not** freeze `K_facet_v0.3`, does **not** run the full 21, and does
**not** compare against supplementary-B.

Degeneracy flag hygiene:

```text
dE_perturbation_spectral_degeneracy_E
  Basis-diagnostic flag for degeneracy in (partial_epsilon M_i)_E on the
  E-isotypic sector. This affects per-block scalar diagnostics and any future
  G2.6b canonicalizer, not the rank count.

gamma_singular_bimodality_clean
  Rank-gate flag for the singular values of Gamma_i. This is the count-relevant
  ambiguity flag: marginal singular values near the floor mean the rank gate is
  not clean.
```

Sentinel row choice is pre-registered:

```text
primary sentinel: O_62
backup ladder:    O_264, O_468, O_574, ... in canonical-strict period order
```

`O_62` is chosen because it is the shortest-period strict choreography in the
G.2 receipt and was closure-tight in both orientations. Short period minimizes
integration-error accumulation, making it the least noisy calibration row. If
`O_62` returns `c_i=0`, fall through the ladder until a row with `c_i>0` is
found. If the full ladder returns `c_i=0`, then the v0.3 rank functional has
collapsed to a structural negative on this catalog: `K_facet_v0.3=0` is forced,
and this is dispositioned like v0.2, not treated as a calibration failure.

Constants are fixed before the sentinel:

```text
k_gamma := 3
k_int   := 10
```

`k_gamma=3` is carried from G.2's closure-multiple discipline. `k_int=10` is a
defensible integrator-overhead upper bound for the variational integration and
perturbation source. The sentinel verifies whether these constants produce a
clean separator; it does not tune them.

Bimodality falsifier:

```text
above gate: sigma_j > k_gamma * gamma_floor
below gate: sigma_j < gamma_floor
marginal:   gamma_floor <= sigma_j <= k_gamma * gamma_floor
```

The sentinel passes the calibration only if the marginal band is empty. If any
sentinel singular value is marginal, v0.3i halts. The next work is a sharper
integration-error analysis, not retuning `k_gamma` or `k_int` to the row.

The only v0.3i empirical authorization, once this pre-registration is accepted,
is one sentinel variational integration:

```text
row:        O_62, or the first c_i>0 row in the pre-registered ladder
rtol/atol:  1e-12
n_samples: 1009
phase_grid: 73
output:     results/isotrophy/k-facet-v03-sentinel-calibration-O62/
```

Output receipt:

```text
Gamma_i_matrix
Gamma_i_singular_values
gamma_floor_i
gamma_singular_to_floor_i
d_i
dE_perturbation_spectral_degeneracy_E
gamma_singular_bimodality_clean
diagonal_gamma_i_k                 # diagnostic only
branch_status_i_k                  # diagnostic only
basis_convention
gate_version = "v0.3i"
```

No additional rows, no supplementary-B, and no `K_facet_v0.3` freeze are
authorized by v0.3i. If v0.3i passes, a separate v0.3j authorization may stage
the full 21-row run and only then the supplementary-B comparison.

### v0.3i-runner sentinel calibration spec review

The runner spec is accepted as the next pre-implementation contract, still
paper-only. The intended entry point is:

```text
npm run isotrophy:kfacet:sentinel
  --source A
  --path docs/isotrophy/supplementary-A_periodic-3d_mirror.txt
  --indices 62
  --rtol 1e-12 --atol 1e-12 --max-step-fraction 0.02
  --n-samples 1009 --phase-grid 73
  --k-gamma 3 --k-int 10
  --bimodality-marginal-band-low 1 --bimodality-marginal-band-high 3
  --refinement-A-rtol 1e-14
  --out results/isotrophy/k-facet-v03-sentinel-calibration-O62
```

Scope remains one row only (`O_62`, or the pre-registered backup ladder if
`c_i=0`). Auto-refinement A is allowed only for the sentinel and only after a
marginal singular-value outcome. No other rows, supplementary-B comparison, or
`K_facet_v0.3` freeze are authorized.

Runner steps, in order:

1. Parse the sentinel row from supplementary-A and anchor at `p_i^F=y_i(0)`.
2. Integrate the orbit and the 12-column variational system to get `M_i`.
3. Optionally integrate the bare `(12)` partner as a receipt sanity check for
   the F_beta-derived cocycle; this is not a new theoretical dependency.
4. Integrate the perturbation variational system to get `partial_epsilon M_i`.
5. Build `ker(M_i-I)`, quotient `N_C=T*u_E+S*X_H`, and form `K_i^{fib}`.
6. Build typed `rho(sigma3)` by body relabel plus back-flow by `T/3`, and
   typed `rho(F_beta)` as the closed-form anti-symplectic involution.
7. Project `K_i^{fib}` into `D3` isotypics, compute `c_i`, and if `c_i=0`
   advance the backup ladder.
8. Choose a deterministic basis for the `F_beta`-even standard multiplicity
   space, compute `Gamma_i`, SVD, `gamma_floor_i`, rank, and the two flags.
9. Write the protected receipt.

Standalone anchor lemma: the ansatz IC is already in `Fix(A_F)`. Positions
`q_1=(-1,0,0)`, `q_2=(1,0,0)`, `q_3=(0,0,z_0)` and velocities
`v_1=(v_x,v_y,v_z)`, `v_2=(v_x,v_y,-v_z)`,
`v_3=(-2v_x/m_3,-2v_y/m_3,0)` satisfy the closed-form `F_beta` fixed
constraints. The second fixed epoch is `y_i(T_i/2)` by reversibility. The
runner does not search for `F_beta` anchors.

Implementation gates before code:

1. **Typed D3 products.** The character projector formula is correct, but the
   off-`sigma3` elements must be constructed with explicit ordering. Once
   `rho(sigma3)` and `rho(F_beta)` are typed as endomorphisms on the anchor
   fiber and descend to `K_i^{fib}`, products such as
   `rho(F_beta sigma3^k)` may be matrix products; the runner must verify the
   `D3` relation and ordering rather than silently invent private generators.
2. **Reduced symplectic form.** Verify the center-of-mass / momentum reduction
   used by the runner preserves the canonical `omega` used in `Gamma_i`. If the
   implementation coordinates are not standard canonical coordinates, compute
   and store the reduced `J` explicitly instead of assuming `[0 I; -I 0]`.
3. **Deterministic basis convention.** Because G2.6d makes rank the count, the
   basis only affects diagnostics. Still, the receipt must use a deterministic
   QR/SVD/sign convention for the `F_beta`-even standard basis; avoid vague
   "principal axes" language unless the operator defining those axes is named.
4. **Spectral flag vocabulary.** Do not mix SVD and eigenvalue language:
   `gamma_singular_bimodality_clean` uses singular values of `Gamma_i`;
   `dE_perturbation_spectral_degeneracy_E` should name whether it is using
   eigenvalues, Schur blocks, or singular values of `(partial_epsilon M_i)_E`.
5. **Refinement A precision.** `rtol=atol=1e-14` may be near practical
   double-precision limits. If the integrator cannot realize the tighter
   target, record that as a refinement failure rather than treating it as a
   mathematical marginal.

Rejected as primary:

- **Full continuation in `m3`:** too circular with supplementary-B. It can be a
  later validation step only after the spectral prediction is frozen.
- **Bragg/Floquet coherence:** promising as a cross-check and close to the
  original coherence intuition, but not the primary readout unless the
  projector derivation shows the `+1` kernel count is the wrong spectral
  object.

---

## 7. Sources of error to design around

- **SO(3) gauge:** every orbit lives in a 3-parameter SO(3) gauge orbit; the isotropy check is a genuine constrained minimization over rotation with a degeneracy-robust parameterization (quaternion or SVD/Procrustes, never Euler). The t=0 inertia frame may *seed* the optimizer but must not *fix* it: at the ansatz epoch the tensor is `diag(m₃z₀², 2+m₃z₀², 2)`, eigenvalue-degenerate on the locus `m₃z₀²=2` (`z₀=√2` at equal mass), and even off it the principal axes carry a `Z₂×Z₂` of 180° sign flips — the same family as `F_beta`'s `Rπ` — so canonicalization can silently cancel the structural generator.
- **Time phase:** likewise S¹ phase, resolved by direct minimization over `φ`. Do **not** anchor at `argmin_t I_zz(t)`: `F_beta` makes the trajectory time-reversal-symmetric, so `I_zz(t)` is even about the symmetry epoch and its argmin is a degenerate symmetric pair — ill-posed exactly on the symmetry under test.
- **Inertia-degenerate rows:** at ingestion, flag any orbit with `m₃·z₀² ≈ 2`; its residual must come from full SO(3) minimization, never a canonicalized frame. Flag, do not drop.
- **Reflection ambiguity in 3D:** improper rotations are a separate factor. The classifier should keep the main gauge at SO(3) and apply improper spatial matrices only through concrete candidate operators such as `gamma_Z`, `delta_Z`, and `F_delta`; otherwise a free O(3) minimization can collapse chiral and non-chiral representatives.
- **Period sampling:** time discretization should be coprime with T/2 and T/3 to avoid alias-induced false isotropies.
- **Liao's "scale-invariant averaged period":** confirm normalization before doing any cross-orbit comparisons.
- **Precondition path parity:** run `sigma3` through the same `rho` detector
  path as `alpha_I`, `F_beta`, and the other concrete generators, including
  explicit spatial-matrix application. The choreography precondition should not
  get a private success path.

---

## 8. Open questions / blowout directions

- **8.1 Lagrange vs figure-eight, formalized.** The persistence-vs-isolation diagnostic from the brainstorm: confirm the moduli-dimension criterion holds across all known equivariant 3-body families (Euler collinear, Lagrange equilateral, Broucke–Hadjidemetriou–Henon, Chenciner–Montgomery 8, the 695 planar, the 21 3D choreographies). Build a 2D table: (family, isotropy moduli dim, observed mass-range width).
- **8.2 Higher-N generalization.** For N=4, S₄ has more subgroups; predict the analog descent multiplicities and check against the smaller-but-extant N=4 catalog (Chen et al.).
- **8.3 Stability-as-coherence.** Among confirmed descended piano-trios, predict the *stable* subset using a Bragg-style integer matching between the Floquet exponents at ε=0 and the descended period ratio. Liao reports 1,996 / 10,059 ≈ 20% stable in 3D; sub-question: is the stable fraction among piano-trios systematically higher, lower, or equal?
- **8.4 The mesa hook.** Only revisit the mesa-analog if a v0.3 branching functional survives pre-registration: NN substrate hosts inner optimizers iff loss-landscape has a residual subgroup of the data-symmetry surviving the training perturbation. Make precise enough to be falsifiable on toy NN setups.
- **8.5 Shape-sphere visualization.** Plot the 21 + 273 + 10k orbits on the 3D analog of Montgomery's shape sphere (the shape *space* for 3D triangles is the closed half-space ℝ³₊ with metric from the inertia tensor). Look for the predicted halo-angle clustering.

---

## 9. Data

- Numerical Tank page statement: the 2025 3D catalog reports 10,059 periodic
  orbits for `m1=m2=1, m3=0.1*n`, including 1,996 linearly stable orbits, 21
  equal-mass 3D choreographies, and 273 piano-trio orbits.
- Supplementary A (initial conditions, 3D periodic orbits): https://numericaltank.sjtu.edu.cn/three-body/three-body/gif/supplementary-A.txt
- Supplementary B (piano-trio orbits): https://numericaltank.sjtu.edu.cn/three-body/three-body/gif/supplementary-B.txt
- Full catalog mirror: https://github.com/sjtu-liao/three-body
- Paper: arXiv:2508.08568v1

---

## 10. Log

| Date       | Note                                                                     |
|------------|--------------------------------------------------------------------------|
| 2026-05-18 | Skeleton drafted. Prediction K_pred = #{C_i : S_i ≠ ∅} stated.           |
| 2026-05-18 | Corrected Section 4 after supplement-format grounding: Li-Liao ansatz is the concrete beta-class facet `F_beta`, so raw K_pred is void and replaced by facet-conditioned K_facet. |
| 2026-05-19 | Full equal-mass precondition scan exposed the old opposite-orientation `sigma3_inverse` bug; corrected inverse + symmetric full-group closure-relative aggregators give 14 canonical candidates, 12 opposite-orientation candidates, and 25 any-orientation IC rows; `(E, |L|)` leaves all 25 as singleton groups, while the optimized SO(3) rotation angle splits them into 21 strict single-curve choreographies plus 4 rotating/relative choreographies. |
| 2026-05-19 | **G.2 RESOLVED.** Rotation-angle stratification: 25 SO(3)-gauged = 21 strict single-curve (= catalog 21; max strict rot `3.65e-8 rad`) + 4 rotating/relative (`O_{791,983,1084,1352}`, rot = `2π/3`). `(E,\|L\|)` → 25 singletons. Detector trustworthy; precondition passes, no residual discrepancy. |
| 2026-05-19 | K_facet experiment pre-registered (§K_facet SCOPE): seed = 21 strict; freeze `K_facet` from the 6-generator classification on the 21 strict ICs (K1) before computing `K_emp` from supplementary-B's 273 (K2–K4); free-group-word deferred; P1/P2 falsifier registered. |
| 2026-05-19 | **K1 COMPLETE.** `npm run isotrophy:kfacet:predict` froze primary strict `K_facet = 0` from the 21 strict G.2 rows. All 21 rows pass only `F_beta` strictly (`d_i=0` each; no `F_beta` failures). The SO(3)-gauged diagnostic is 21 because `beta_I` appears only with `Rpi` absorbed into free alignment, so it is not counted as the strict prediction. Receipt: `results/isotrophy/k-facet-prediction-21strict/`. |
| 2026-05-19 | **v0.2 DISPOSITION.** K1 proved the static containment operator is structurally the equivariance-only null: `Z3` choreography symmetry does not generically contain the target transposition `Z2`, so `d_i=0` is forced by construction. K2-K4 are paused under v0.2; do not run the 273-row classification until a v0.3 branching/continuation `d_i` is derived and pre-registered. |
| 2026-05-19 | **v0.3 DESIGN DECISION.** If isotrophy continues, primary `d_i` must be a monodromy/isotypic branching count computed from each `m3=1` choreography alone. Corrected foundation: `alpha_I` is not an isotropy of the parent orbit; define the twist as `G_i = rho((12)) o Phi_{T/2}` only where `(12)` acts as an endomorphism of the choreography, otherwise use an induced-representation formula over the `S3` group orbit. Full `m3` continuation is rejected as primary because it is circular with supplementary-B; Bragg/Floquet coherence is retained as a cross-check. |
| 2026-05-19 | **v0.3a PROPER-PARITY CASE SPLIT.** The first `tau12` receipt tested the proper spatial candidate only (`tau12_I`, then named `tau12_gauge`): 0 proper-endomorphism, 21 induced, 0 marginal review; best non-tight residual/closure = `2.815e7`. Receipt: `results/isotrophy/k-facet-v03-tau12-case-split-21strict/`. |
| 2026-05-20 | **v0.3a PARITY-UNION CASE SPLIT COMPLETE.** `npm run isotrophy:tau12:cases` ran the locked `{tau12_I, tau12_Z}` detector on the 21 strict rows: 0 endomorphism, 21 induced-representation, 0 marginal review. `tau12_Z` won the residual for 6 rows but did not move any row near closure; best non-tight residual/closure remains `2.815e7`. Receipt: `results/isotrophy/k-facet-v03-tau12-parity-union-21strict/`. |
| 2026-05-20 | **v0.3b F_beta PAIR-ID COMPLETE.** `npm run isotrophy:fbeta:pair-id` confirmed 21 singleton `(E, |L|)` groups, 0 inside-catalog bare-`(12)` partners, 21 catalog-asymmetric rows, and 21/21 F_beta-closure-tight rows (`F_beta_to_closure` range `0.283..0.804`). The receipt records `F_beta = ((12), tau-active, Rpi)` as a manifest-level structural cocycle: no per-row tau flag and no partner-orbit IVP. Receipt: `results/isotrophy/k-facet-v03-fbeta-pair-id-21strict/`. |
| 2026-05-20 | **v0.3c DERIVATION REVIEW.** The loop-to-fiber draft was accepted as the right direction but not frozen. Blockers: neutral quotient must use `span{X_H,u_E}` with `(M-I)u_E=cX_H`; `G_i` must be built as a typed fiber map before claiming commutation; `G_i^2` must be computed after the cocycle is chosen; structural removal must be a quotient/reduction through `B_i^+`; and `1/2*dim` is only a candidate count until semisimple/crossing-form/nondegeneracy gates pass. No monodromy code authorized. |
| 2026-05-20 | **v0.3d TYPED TRANSPORT RESPONSE REVIEW.** The typed lemma likely kills the canonical single-fiber `G_i` object and proposes a pair-orbit alpha-fixed kernel instead. Not locked. Blockers: `A_F` maps `t` to `-t` rather than fixing every point; alpha lands in the shifted partner fiber; `M^{-1/2}` should be replaced by typed half-flow; the alpha-fixed graph must descend through `N_i`; `<sigma3,F_beta>` must be treated as a real dihedral representation, not two commuting masks; and `1/2*dim` is pending again because `A_F`-even sectors are anti-symplectic fixed sectors. |
| 2026-05-20 | **v0.3e PAIR-ORBIT / DIHEDRAL DRAFT 2 REVIEW.** Best candidate shape so far: anchored `D3=<sigma3,F_beta>` representation on `K_i^{fib}` and `d_i_candidate=c_i`, the multiplicity of the standard real 2D irrep. Not locked. Blockers: based-loop convention still unresolved; the half-flow reduction to `M_i` is mistyped without phase transport/free-loop convention; `F_beta` and conjugate partner anchors must be certified; neutral quotient must be `D3`-equivariant; and `c_i` needs crossing-form branch validation. |
| 2026-05-20 | **v0.3f NEUTRAL-BLOCK REFINEMENT.** The neutral quotient is `D3`-equivariant as `N_C = T*u_E + S*X_H`, not wholly trivial. Pre-quotient `K_i^{fib*} ~= a_i*T + b_i*S + c_i*E`; post-quotient `K_i^{fib} ~= (a_i-1)*T + (b_i-1)*S + c_i*E`. The standard-irrep count `c_i` is preserved, so `d_i_candidate=c_i` survives. Still not locked: loop convention, typed half-flow, anchor certification, G1, and G2 crossing-form remain paper gates. |
| 2026-05-20 | **v0.3g CROSSING-FORM GATE REVIEW.** The branch-validity gate should use the mass-perturbation split `Delta H=Delta H_T+Delta H_E`, with no `S` component because `Delta H` is `F_beta`-even. Not locked. The scalar `gamma_i^(k)` recipe is premature when `c_i>1`; define the quotient Floquet crossing form on the standard-irrep multiplicity space first, likely as a matrix `Gamma_i` with a closure-relative rank gate. Open gates: reduced-coordinate `Delta H`, operator-level no-`S`, quotient crossing form, Schur collapse, E-copy mixing, anchor independence, and empirical `gamma_floor`. |
| 2026-05-20 | **v0.3h RANK-MATRIX / G2.6 PREP.** The branch-validity object is now `Gamma_i`, the `c_i x c_i` crossing matrix on the `F_beta`-even standard sector, with `d_i=rank_floor(Gamma_i)` as the structural target. New gate G2.6: prove/test symplectic block-orthogonality of the `E` copies. If it holds, the scalar rule is the operating special case; if it fails, `Gamma_i` has off-diagonal symplectic/T contributions and full matrix rank is mandatory. Receipt schema must include the full matrix, singular values, rank, `gamma_floor`, and a `symplectic_block_orthogonal_E` flag from the E-isotypic omega-Gram matrix. |
| 2026-05-20 | **v0.3h DRAFT REVIEW.** Rank-matrix formulation survives, but the proposed G2.6 closure via an `M_i+sigma3` Floquet basis is invalid on `K_i^{fib}` because `K_i^{fib}=ker(M_i-I)/N_i` and `M_i` is identity there. Cleaner result: `Gamma_i^T=0` for all entries if `(partial_epsilon M_i)_T` preserves `Fix(F_beta)`, because `Fix(F_beta)` is isotropic for anti-symplectic `F_beta`. Thus G2.6 is reframed as a basis-conditioning / scalar-interpretation diagnostic, not the proof of T-collapse. Anchor invariance should be stated as rank under congruence; `gamma_floor` remains proposed pending pre-registered sentinel calibration. |
| 2026-05-20 | **v0.3h G2.6D DISPOSITION.** Operational basis question closes by not canonicalizing for the count: `d_i=rank_floor(Gamma_i)` is basis-invariant, while per-block diagonal gammas are basis-dependent diagnostics only. `Phi_{T/2}^C` as an involutive kernel canonicalizer (`G2.6b`) is retained as a paper-level follow-up, not a blocker. Locked shape: `Gamma_i^T=0` via anti-symplectic `Fix(F_beta)` isotropy; `Gamma_i=Gamma_i^E`; anchor changes act by congruence; `gamma_floor` formula survives but constants need pre-registered sentinel calibration. Remaining chores: cite G2.1/G2.2 and replace old Krein-in-`M_i` language with degeneracy/bimodality of `(partial_epsilon M_i)_E` or `Gamma_i` singular values. |
| 2026-05-20 | **v0.3i SENTINEL CALIBRATION PRE-REGISTRATION.** Scope drafted for the first empirical step: one sentinel variational integration only, primary `O_62`, backup ladder in canonical-strict period order if `c_i=0`, constants fixed before the run (`k_gamma=3`, `k_int=10`), and a bimodality falsifier requiring no singular values in `[gamma_floor, k_gamma*gamma_floor]`. Receipt adds two separate flags: `dE_perturbation_spectral_degeneracy_E` for basis/diagnostic ambiguity, and `gamma_singular_bimodality_clean` for rank-gate ambiguity. No full 21, no supplementary-B, and no `K_facet_v0.3` freeze authorized. |
| 2026-05-20 | **v0.3i-RUNNER SPEC REVIEW.** Sentinel runner contract accepted as paper-only pre-implementation: parse `O_62`, anchor at ansatz `p_i^F=y_i(0)` (closed-form `Fix(A_F)`), integrate orbit/variational `M_i`, compute `partial_epsilon M_i`, quotient `N_C`, build typed `rho(sigma3)` and `rho(F_beta)`, project `D3`, compute full `Gamma_i`, SVD/rank/floor, and write protected receipt. Pre-implementation gates: typed `D3` product ordering, explicit reduced symplectic form, deterministic basis convention, no SVD/eigenvalue vocabulary mixing, and refinement-A precision limits. Partner-orbit integration is receipt sanity only. |
| 2026-05-21 | **v0.3h 21-ROW SWEEP FLOOR CALIBRATION.** The first 21-row Gamma sweep showed `closure_floor=1e-8` split the kernel noise cluster on several rows, producing false F_beta/kernel leakage and non-structural `c_i=0` readings. Runner default moved to `closure_floor=1e-7`, inside the observed gap (`last kernel <= 7.5e-8`, first non-kernel `>= 5.7e-2`). The joint-baseline gate moved from `1e-9` to `1e-8` relative after `jb_rel` clustered at `1.1e-9..4.6e-9`. Clean rows `O_62/O_64/O_231` read `ker(M-I)=T(2)+S(5)+E(0)`, so `d_i=0`; if this persists across all 21 under the calibrated floor, v0.3 Gamma becomes a catalog-level structural negative, not a numerical failure. |
| 2026-05-21 | **v0.3h CALIBRATED 21-ROW SWEEP.** Under `closure_floor=1e-7` and joint-baseline floor `1e-8`, 21/21 rows pass D3/omega/partial-epsilon/Gamma mechanics and all read `E=0`, `c_i=0`, `d_i=0`. However, only 16/21 are structurally confirmed: five rows (`O_524`, `O_623`, `O_793`, `O_1488`, `O_1497`) have `F_beta` kernel leakage above `1e-3`, so their `c_i=0` readings are conditional until the leakage is explained. Runner Gamma pass now requires D3 kernel stability at the projector floor, preventing leaky rows from silently counting as structural negatives. Verified clean rows support `ker(M-I)=T(2)+S(5 or 6)+E(0)`: no standard `D3` isotypic appears, so v0.3 Gamma is collapsing to a structural zero on this catalog. |
| (next)     | Implementation pass may scaffold `npm run isotrophy:kfacet:sentinel` exactly to the runner spec, but still only for the single sentinel scope. Do not run until the implementation has the typed `D3` products and reduced `omega` checks in place. |

---

## 11. Citation

Li, X. & Liao, S. *Discovery of 10,059 new three-dimensional periodic orbits of the general three-body problem.* arXiv:2508.08568 (2025).
