**STATUS: REJECTED** — moved to failed/ on 2026-07-04
**Reason:** Chiral discrimination of Sidon sets is FALSE — positional permutation is Sidon-invariant (chiral variants are not distinct channels).
**Receipt:** C3 run 019f2f07 — all 64 chiral configs identical (see ENCODE_ENGINE_NECESSITY.md, CHIRAL_INVARIANCE_FINDING.md).

---

# Chiral Batch Encoding: Hundreds of Configurations per Run

**Status:** REFINEMENT — connects chiral braid chirality to batch Sidon filtering
**Date:** 2026-07-04
**Depends on:** `DUAL_QUATERNION_SIDON_FILTER.md`, `braid_group_action.md`,
`TOROIDAL_POLOIDAL_REFINEMENT.md`, `weird_machine_conservation_law.md`
**Key insight:** Chirality (over/under = ±1 per crossing) means a braid word of
length k encodes 2^k configurations. Batch-encode hundreds, Sidon-filter in one pass.

---

## 1. The Chiral Braid Structure

### 1.1 Chirality = Handedness = ±1 per Crossing

In the braid group B_n, each generator σ_i has two chiral forms:
  σ_i⁺¹ = over-crossing (right-handed)
  σ_i⁻¹ = under-crossing (left-handed)

A braid word of length k has 2^k possible chiral configurations:
  w = σ_{i₁}^{ε₁} σ_{i₂}^{ε₂} ... σ_{iₖ}^{εₖ}  where εⱼ ∈ {+1, -1}

### 1.2 Chirality in the CRT Embedding

The CRT embedding already has chirality built in:
  Identity axis: a mod L₀ = poloidal (no reflection = "straight through")
  Reflection axes: S-a mod Lᵢ = toroidal (reflection = "flipped")

The S-a reflection IS the chiral operation:
  S-a = "over" (positive chirality)
  a-S = "under" (negative chirality, equivalent to -(S-a))

Each reflection axis Lᵢ contributes one chiral bit. With k reflection
axes, there are 2^k chiral configurations per identity axis choice.

### 1.3 Chirality in Dual Quaternions

Dual quaternions have natural chirality:
  q = q_r + ε q_d (standard)
  q* = q_r - ε q_d (conjugate = opposite chirality)

The conjugate reverses the translation direction (toroidal flip) while
preserving the rotation (poloidal). This is exactly the S-a ↔ a-S flip.

A dual quaternion pair (q_i, q_j) has 4 chiral configurations:
  (q_i, q_j) — both standard
  (q_i*, q_j) — i flipped
  (q_i, q_j*) — j flipped
  (q_i*, q_j*) — both flipped

With n boundary points, there are 4^(n choose 2) chiral configurations
of the full pairwise product set. We don't test all of these — we
batch-encode a representative sample and Sidon-filter.

---

## 2. Batch Encoding: How It Works

### 2.1 The Problem with Sequential Testing

Current approach (v2/v3): test one (shape, n, q) configuration per run.
- 5 shapes × 3 n-values × 5 q-values = 75 configurations
- Each takes ~10s = 12.5 minutes total
- Each is a separate Sidon check

This is slow and doesn't exploit the braid structure.

### 2.2 Chiral Batch Encoding

The chiral braid allows encoding MANY configurations into a SINGLE run:

1. Choose a base braid word w = σ₁ σ₂ σ₃ ... (the "spine")
2. For each crossing, choose chirality εᵢ ∈ {+1, -1}
3. A batch of B configurations = B different chirality assignments
   ε¹ = (+1, +1, +1, ...), ε² = (+1, +1, -1, ...), etc.
4. All B configurations share the same braid SPINE (which strands cross)
   but differ in CHIRALITY (how they cross)

5. For each configuration, compute the CRT embedding with the chiral
   reflection choices:
   - εᵢ = +1 → S-a mod Lᵢ (standard reflection)
   - εᵢ = -1 → a-S mod Lᵢ (flipped reflection)

6. Apply the Sidon filter ONCE to the entire batch:
   - For each configuration, check if the CRT-reconstructed sums are Sidon
   - The filter selects which chiral configurations produce unique
     pairwise signatures

### 2.3 Why This Is Hundreds per Run

With k reflection axes:
- 2^k chiral configurations per (identity, label_set) pair
- For k=8 (our standard 8-strand braid): 2^8 = 256 configurations
- For k=10: 2^10 = 1024 configurations

Each run can batch-test ALL 256 (or 1024) chiral configurations with
a SINGLE CRT reconstruction pass — the identity axis is computed once,
and each chiral variant only changes the reflection components.

The Sidon filter then selects which of the 256 configurations are
structurally meaningful (Sidon-clean) vs degenerate (collision).

### 2.4 Connection to the Hutter Prize Filtering

The Hutter prize lesson: compression is dead, filtering works.

Batch encoding is the APPLICATION of this lesson:
- Don't compress 256 configurations into 1 (impossible — conservation law)
- Don't test 256 configurations sequentially (slow)
- DO: batch-encode all 256, then FILTER to the Sidon-clean ones

The filter selects which chiral configurations have unique pairwise
signatures. The rest are noise (degenerate, collision). This is the
same filtering mechanism from the weird machine conservation law:
  program (chiral configuration) + residual (dropped configs) ≥ K(data)
But we don't care about the residual — we care about which configurations
the filter KEEPS.

---

## 3. The Chiral Sidon Filter (Concrete)

### 3.1 Algorithm

```
Input:
  - Label set A = {a₁, ..., aₙ} (Sidon in ℤ)
  - Identity modulus L₀
  - Reflection moduli L₁, ..., Lₖ (pairwise coprime)
  - Reflection point S
  - Batch size B (number of chiral configurations)

Output:
  - For each of B chiral configurations: is_sidon (bool), sidon_score

Algorithm:
  1. Compute identity component once: id_i = a_i mod L₀ for all i
  2. For each chiral configuration c ∈ {0, 1}^k (binary vector):
     a. For each reflection axis j ∈ {1, ..., k}:
        - If c[j] = 0: ref_i_j = (S - a_i) mod Lⱼ  (standard)
        - If c[j] = 1: ref_i_j = (a_i - S) mod Lⱼ  (flipped)
     b. CRT reconstruct: val_i = CRT(id_i, ref_i_1, ..., ref_i_k)
     c. Check Sidon: all pairwise sums val_i + val_j distinct mod M?
  3. Return filter results for all B configurations
```

### 3.2 Computational Cost

- Identity component: O(n) — computed ONCE
- Per configuration: O(n·k) for reflection + O(n²) for Sidon check
- Total: O(n) + B × O(n·k + n²)
- For n=21, k=8, B=256: 21 + 256 × (168 + 441) = 21 + 155,904 ≈ 156K ops
- vs sequential: 256 × (21 + 168 + 441) = 256 × 630 = 161K ops

The speedup is modest for small k, but the REAL advantage is:
1. The identity component is shared (not recomputed)
2. The Sidon check can be parallelized across configurations
3. The filter selects which configurations are worth deeper analysis

### 3.3 What the Filter Selects

The chiral Sidon filter selects configurations where:
- The chiral choices (which axes are flipped) produce unique pairwise sums
- This means the chiral pattern is "informative" — it breaks symmetries
  that would otherwise cause collisions

Configurations that FAIL the filter:
- Have chiral choices that create sum collisions (degenerate)
- The chiral pattern doesn't break existing symmetries
- These are "uninformative" — the chirality doesn't help

The filter rate (fraction of configurations that pass) measures how
much chiral information the braid structure carries:
- High pass rate (>50%): chirality doesn't matter much (symmetric problem)
- Low pass rate (<10%): chirality is critical (most configs degenerate)
- Medium pass rate (~30%): chirality selects a specific structural class

---

## 4. Connection to q-Profile

### 4.1 q-Profile as Chiral Ratio

The q-profile = L₁/L₀ (reflection/identity = toroidal/poloidal).

In the chiral batch:
- q < 1: L₁ < L₀ → reflection axis smaller → chiral flip has less impact
- q > 1: L₁ > L₀ → reflection axis larger → chiral flip has more impact
- q = 1: L₁ = L₀ → chiral flip is symmetric → degenerate

The q-profile sweep showed q > 1 has 100% Sidon rate. In chiral terms:
larger reflection axis → chiral flips create more diverse products →
fewer collisions → higher Sidon rate.

### 4.2 Chiral q-Sweep

Instead of sweeping q across fixed chiral configurations:
1. Fix q at the optimal value (q > 1, e.g. q = 3/2)
2. Sweep chiral configurations (256 variants)
3. Measure: which chiral patterns have highest Sidon score?

This separates the q-effect (axis ratio) from the chirality effect
(which axes are flipped). The q-profile sweep couldn't do this —
it tested one chirality per q value.

---

## 5. Implementation Plan

### Phase 1: Chiral Batch CRT (Python, exact arithmetic)

```python
def chiral_batch_sidon(labels, S, L0, Ls, batch_configs=None):
    """Batch-test chiral configurations for Sidon property.
    
    Ls = [L1, ..., Lk] reflection moduli
    batch_configs = list of binary tuples (length k), each specifying
                    which axes are flipped (1 = flipped, 0 = standard)
    If None, test ALL 2^k configurations.
    """
    k = len(Ls)
    if batch_configs is None:
        batch_configs = list(product([0, 1], repeat=k))
    
    # Identity component (computed once)
    id_comp = [a % L0 for a in labels]
    
    results = []
    for config in batch_configs:
        # Reflection components with chiral choices
        embedded = []
        for a in labels:
            row = [a % L0]  # identity
            for j, Lj in enumerate(Ls):
                if config[j] == 0:
                    row.append((S - a) % Lj)  # standard
                else:
                    row.append((a - S) % Lj)  # flipped
            embedded.append(row)
        
        # CRT reconstruct + Sidon check
        sidon = sidon_check(embedded, [L0] + Ls)
        results.append({
            "config": config,
            "is_sidon": sidon["is_sidon"],
            "sidon_score": sidon["sidon_score"],
            "collisions": sidon["collisions"],
        })
    
    return results
```

### Phase 2: Chiral q-Sweep

1. Fix L₀ = 7 (optimal from capacity envelope)
2. For each q ∈ {3/2, 2, 5/2, 3}:
   - Set L₁ = L₀ × q
   - Batch-test all 2^k chiral configurations
   - Measure: pass rate, best config, worst config
3. Compare to sequential q-sweep results

### Phase 3: Dual Quaternion Chiral Filter

1. For each chiral configuration, compute dual quaternion products
2. Apply Sidon filter to dual quaternion products (not CRT sums)
3. Compare: does the dual quaternion filter select different configs
   than the CRT filter?

---

## 6. What This Enables

### 6.1 Orders of Magnitude More Configurations

Current: 75 configurations per run (5 shapes × 3 n × 5 q)
With chiral batch: 75 × 256 = 19,200 configurations per run
With k=10: 75 × 1024 = 76,800 configurations per run

### 6.2 Statistical Power

With 256+ configurations per (shape, n, q):
- Can compute Sidon pass rate with statistical confidence
- Can identify which chiral patterns are optimal
- Can detect phase transitions (where pass rate drops sharply)

### 6.3 Connection to the Moving Sofa

The sofa motion through the L-corridor IS a braid:
- Boundary point worldlines = braid strands
- Corner navigation = braid crossings
- Each crossing has chirality (over/under = which strand is in front)

Batch-encoding chiral braid configurations = batch-encoding different
sofa motion variants. The Sidon filter selects which motions have
unique boundary interactions (structurally meaningful) vs degenerate
(symmetric, uninformative).

---

## 7. claim_boundary

```
chiral-batch-encoding:efficiency-multiplier:conceptual
```

The chiral braid structure allows batch-encoding 2^k configurations
per run (k = number of reflection axes). The Sidon filter then selects
which configurations are structurally meaningful. This is the Hutter
prize lesson applied: filtering works, compression doesn't, and
batching makes filtering efficient.

**MEASURED:** q > 1 has 100% Sidon rate (from q-profile sweep)
**PREDICTED:** chiral batch will show ~30-50% pass rate per q value,
  with specific chiral patterns being optimal
**OPEN:** does the chiral filter select different configs than the
  CRT sum filter?
