# RUN-096 — The frontier {C5, C8} attacked: the defect ledger delivered with the `b_f⁺` gauge derived rather than fixed — **`C_π` is gauge-invariant, `c_lead` and `q_f` are G, RUN-090's tags corrected** — yet **C5 stays UNMEASURED** because the comparison route does not exist as a map; **C8 PASS**, the target's saturation index is 2 on both signs, two engines agreeing at all 390 coordinates

**Arm:** 數學戰士「墜衡」 / AMRAL Research Lab
**Subject:** the web line's instruction after [RUN-095](../RUN-095/) — after RUN-095, the C5 main line with the C8 parallel line: do not canonicalize a non-canonical frame, make its gauge action explicit
**Tools:** `src98_c5_defect_ledger_and_c8_saturation.py` (imports the tree's own `src82` Manin engine at level 389), `src11_gate_drill.py`
**Logs:** `src98-c5-defect-ledger-and-c8-saturation.json`, `src11-gate-drill.json`
**Deliverable:** [`handoff/C5-DEFECT-LEDGER-AND-C8-SATURATION/`](../../packages/C5-DEFECT-LEDGER-AND-C8-SATURATION/)

**Result. Track A. The non-canonical crystalline trivialisation `b_f⁺` (LR §A8.3) and Attack 09's Eichler–Shimura leading-period frame are scaled by `u` and `v`, only the definitions are declared — the Coleman map linear in its basis vector, `b_f⁺(0)` linear, the L-values and Kato's class blind — and the law of every named quantity is derived from the formulas on exact instances: `c_f` and hence `c_lead` scale by `u` (LR C1.9), `q_f` scales by `u`, so **PC-001's `C_π = c_lead/q_f` is gauge-invariant** and `B̂_i` with it; `R_i^lead` scales like `c_f`; and Round 030's (15.2) `δ = q_f·C_π/c_aux` is invariant when `c_aux` is read in the `b_f⁺` frame but carries **`u/v`** when read in Attack 09's ES frame, where its `C` actually lives — a genuine G-factor, named `G_b`, filed in `a_D`, hidden nowhere. RUN-090's E tags for `c_lead` and `q_f` were wrong; they are G. The inventory: 23 records, each with the web line's fields, tags derived from four booleans by one rule, the adjoint Euler factor split P×L, RUN-090's fifteen all present, into Round 030's own bins — P removed, `a_D` (6), `q_D` (7), `η_D` (5) with `δ_other^E = {C_π, the LR↔PC-001 identification, Kato's normalisation}` — unclassified 0, duplicates 0, mislabelled 0, `c_ES/Kum` outside `𝒟` with its reason. Completeness relative to Round 030's architecture holds: arrows between lines carry one scalar each, every frame change a named G, every finite correction a named L, every partner slot a named P, and route ambiguity is the slot §18 names `κ_det`. **But the argument stops at a map that does not exist**: whether §18 is (18.1) or (18.2) cannot be decided without the auxiliary→arithmetic comparison route, so C5 is UNMEASURED with that route as the smallest missing object — and a finding follows: C5's certification needs C7's *object*, which RUN-090's graph lists downstream of C5; the graph conflates the map's existence with the criterion's resolution, so RUN-095's frontier `{C5, C8}` must be reread as `{the comparison route, C8}`. Track B. src82's Manin engine at `N = 389`: the relation quotient has dimension 65 = 2g+1, four Hecke primes isolate the ± pair, both Z-primitive vectors have content 1, first nonzero coordinate at index 5 (plus) and 3 (minus) — exactly where src70 and src79 normalise — with value **2** there on both signs; normalised and reduced mod 11 they equal src70's and src79's independent lines at all 390 coordinates. The three saturations are three statements: 11-adic saturated (`v₁₁ = 0`), **not** prime-to-11 saturated (index 2), globally primitive (content 1); the index is a length, tagged L, and no exact slot draws a value from any length — Round 030 (10.2) holds structurally. **C8 PASS.** The web line's five C5 mutations and two C8 refusals are all planted and all red.**

---

## 0. The two verdicts, in the requested A5 / B3 form

```text
C5 UNMEASURED
  smallest missing comparison map/object =
      the auxiliary -> arithmetic comparison ROUTE as an actual map (C7's object; RUN-090: "none exists")
  therefore: Round 030 section 18 cannot be placed in case (18.1) [one route, kappa_det = 1] or (18.2) [two
      routes, kappa_det = a K_1 determinant], so the ledger's completeness is certified only RELATIVE TO
      ROUND 030's ARCHITECTURE, not against the map
  delivered anyway, in full:
      complete defect inventory      = 23 records (RUN-090's 15, all present; 8 new or split)
      unclassified slots             = 0        duplicates = 0        mislabelled = 0
      delta_other^E enumerated       = { C_pi, id(LR class ~ PC-001 projected class), id(Kato class ~ modular symbol) }
      b_f^+ gauge handled            = explicit G-factor G_b = u/v in a_D; C_pi, B_hat_i gauge-invariant;
                                       RUN-090's tags for c_lead, q_f corrected E -> G

C8 PASS
  389.a1 normalisation index  = 2 (plus) , 2 (minus)     primes = {2}     v_11 = 0
  11-adic saturated: yes      prime-to-11 saturated: NO (index 2)      globally primitive: yes (content 1)
  length/index information is used only as valuation information: no exact slot draws its value from a length
```

And one structural finding that follows from the C5 verdict and revises RUN-095's frontier: **C5 cannot be certified before C7's *object* exists**, while RUN-090's dependency graph has C7 *downstream* of C5. The graph conflates "C7's map exists" with "C7's criterion is resolved". Section 5.

**A correction to RUN-095, first.** RUN-095's outside-certificate ledger carried `C_PI-TRIVIALISATION: b_f⁺ is non-canonical, so C_π has no numerical value until one trivialisation is fixed; anything built from C_aux inherits that ambiguity`. Half of that was wrong, and this round's computation shows which half. `C_π = c_lead/q_f` is **gauge-invariant** — numerator and denominator both scale by `u` — so `C_π` has a well-defined value independent of the trivialisation; what is unknown is the value, not its frame. The ambiguity sits in `c_lead` and `q_f` separately (both G), and reaches the defect `δ` only through the mismatch between the frame `q_f` is read in (`b_f⁺`) and the frame `c_aux` is read in (Attack 09's ES frame): `G_b = u/v`. RUN-095's obligation is therefore renamed `FRAME-MISMATCH (G_b)` and moves into the ledger as a G-factor, which is where the web line said it should be.

## 1. The gauge action — derived, not guessed

The instruction was not to guess the weights ±1 but to compute them from the formulas. Two non-canonical frames live on the auxiliary side, so I scaled both — LR's crystalline trivialisation `b_f⁺` by `u` (§A8.3, "we may choose (non-canonically)") and Attack 09's Eichler–Shimura leading-period frame by `v` ((16), 「固定規範後仍未知」) — and declared only the primitive dependences, which are the definitions:

| declared | source |
| --- | --- |
| `Col_{b_f⁺⊗η_g} = ⟨ℒ^PR(−), b_f⁺⊗η_g⟩` is linear in `b_f⁺` | LR, the definition of the Coleman map |
| `q_f = b_f⁺(0) = c_r η_f` is linear in `b_f⁺` | LR's bad-fibre relation; PC-001 §4 |
| `C_d`, `L_p^g(f,g)`, `L_p(Ad g)`, `κ(g×ψ)` do not see `b_f⁺` | a smoothing, L-values, Kato's class |

Everything else is computed from these and the formulas in hand — PC-001 (1) and §4, LR C1.9, Round 030 (15.2) — on 40 exact random instances:

| quantity | formula used | law `(u-exponent, v-exponent)` |
| --- | --- | --- |
| `Col` | definition | `(1, 0)` |
| `c_f`, hence `c_lead` | LR C1.9: `c_f = Col(κ_d)/(C_d·L_p^g)` | **`(1, 0)`** |
| `q_f` | `b_f⁺(0)` | **`(1, 0)`** |
| **`C_π = c_lead/q_f`** | PC-001 §4 | **`(0, 0)` — gauge-invariant** |
| `B̂_i = C_π A_i j z_i` | PC-001 (1) | `(0, 0)` |
| `R_i^lead = q_f·Col_i(B̂_i)/j` | PC-001 §4 | `(1, 0)` — scales exactly like `c_f`, as it must |
| `c_aux`, read in the ES frame | Attack 09 (16) | `(0, 1)` |
| **`δ = q_f·C_π/c_aux`** | Round 030 (15.2) | **`(1, −1)`** |
| `δ` if `c_aux` were read in the `b_f⁺` frame | same | `(0, 0)` |

So:

* **`C_π` is gauge-invariant.** PC-001's division by `q_f` is exactly what removes the trivialisation. Consequently `B̂_i` is too. That sharpens RUN-095's warning: the `b_f⁺` ambiguity does *not* propagate into anything built through `C_π`.
* **Where it does go:** Round 030 (15.2) solves to `δ = c_lead/c_aux`. If `c_aux` is read in the `b_f⁺` frame, `δ` is invariant — the ambiguity cancels *exactly* inside the auxiliary side between `q_f` and `c_aux`. But Attack 09's `C` lives in the **ES** frame, so `δ` carries **`u/v`, the ratio of the two auxiliary frames**. That is a genuine G-factor. It is named `G_b`, filed in `a_D`, and not hidden in E or P — your boxed requirement.
* **A correction to RUN-090:** it tagged `c_lead` and `q_f` as E. They scale by `u`; they are **G**. `C_π` stays E. The drill plants the reverse (declare `L_p^g` to see `b_f⁺`, and `c_lead` would look exact).

Mutation (i) — rescale `b_f⁺` without updating the gauge entry — turns `c5-gauge` red.

## 2. The inventory

Each factor is a record with the requested fields; the tag is **derived** from the four booleans by one rule in priority order — partner-dependent ⇒ P, else frame-dependent ⇒ G, else valuation-only ⇒ L, else exact ⇒ E — and a factor with two natures is split first (the adjoint Euler factor `E_i` is a partner-dependent finite Euler datum: `E_i = (E_i)_P · (E_i)_L`).

| factor | tag | partner | frame | valuation | exact | law / value | evidence |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `C_π` | **E** | – | – | – | ✓ | invariant | §1; LR C1.9 + §A8.3 |
| `c_lead` | **G** | – | ✓ | – | – | `u¹` | §1 (was E in RUN-090) |
| `q_f` | **G** | – | ✓ | – | – | `u¹` | §1 (was E in RUN-090) |
| `G_b` | **G** | – | ✓ | – | – | `u/v` | §1, new |
| `j` | G | – | ✓ | – | – | `t' = ψ(t)` | RUN-090 C3 |
| `log₁₁γ` | G | – | ✓ | – | – | cancels in (2) | RUN-090 C3 |
| `Gauss(χ₈)` | G | – | ✓ | – | – | convention, 11-unit | RUN-078 |
| `𝒮₅` | L | – | – | ✓ | – | `26` at `j = 0` | RUN-095 |
| `16 = e₁₁/θ`, `416` | L | – | – | ✓ | – | | RUN-077 |
| index 2 (19.a1, plus) | L | – | – | ✓ | – | `v₂ = 1` | RUN-080 |
| **index 2 (389.a1, plus)** | L | – | – | ✓ | – | `v₂ = 1` | **Track B** |
| **index 2 (389.a1, minus)** | L | – | – | ✓ | – | `v₂ = 1` | **Track B** |
| `E_i` / L-part | L | – | – | ✓ | – | 3, 7 mod 11 | RUN-090 C2 |
| `λ_i(0)` | P | ✓ | | | | 5, 4 mod 11 | RUN-077/080 |
| `E_i` / P-part | P | ✓ | | | | | RUN-090 C2 |
| `Π_i` | P | ✓ | | | | unit (RUN-091), value open | |
| `κ_E`, `ℓ_0` | P | ✓ | | | | open | PC-001 (1)–(2) |
| `η_pdR` | E | – | – | – | ✓ | 1 or one scalar | Round 030 (17.1); C6 |
| `κ_det` | E | – | – | – | ✓ | 1 or `∏det H^i(h)^{(−1)^i}` | Round 030 (18); C7 |
| id(LR class ~ PC-001 projected class) | E | – | – | – | ✓ | the six-slot dictionary, `C/q_f → C_π` | RUN-094/095 |
| id(Kato class ~ modular symbol) | E | – | – | – | ✓ | Kato's normalisation | [Kat04] |

Into Round 030's own bins:

```text
removed partner factors (P) :  lambda_i(0), E_i/P, Pi_i, kappa_E, ell_0
a_D  (G) :  c_lead, q_f, G_b, j, log11_gamma, Gauss(chi_8)
q_D  (L) :  S5, 16, 416, index_2(19.a1), index_2(389.a1,+), index_2(389.a1,-), E_i/L
eta_D (E):  eta_pdR, kappa_det, delta_other^E = { C_pi, id(LR~PC-001), id(Kato~modsym) }
unclassified = 0     duplicates = 0     mislabelled = 0
```

**Placed outside `𝒟`, with reasons** — the instruction's caution that an outside-certificate obligation is not automatically a defect factor: `c_ES/Kum` is between two *candidate anchors* (`Θ_aux` in the ES frame is the anchor `𝒟` is measured from, Round 025), so it is not inside the defect; `BF-COORD` and `Π_E/Π_0`'s value are value gaps of factors already listed; the Selmer-complex lengths of Rounds 033–034 are post-normalisation objects.

Mutations (ii) `Π_i` filed as G, (iii) a lattice index filed as E — each caught by the tag-consistency check (the asserted tag disagrees with the factor's own booleans) — and (v) `E_i`'s finite half counted in both L and P, all turn `c5-inventory` red.

## 3. Completeness, and exactly where it stops

Every comparison arrow is between **lines** (Round 030 §9, §13–15), so each carries exactly one scalar slot. Every frame change has a named G; every finite correction a named L; every partner slot a named P; and the one way an unnamed automorphism can arise — two different routes between the same two lines — is precisely the slot Round 030 §18 names `κ_det`. So **unclassified slots = 0 relative to Round 030's architecture.** Mutation (iv), an unnamed `h ∈ L^×` injected into the chain, turns `c5-completeness` red.

What the argument cannot do is certify the architecture against a map that has not been built. Whether §18 is in case (18.1) or (18.2) — one route or two — is undecidable without the auxiliary→arithmetic comparison route as an actual object, and RUN-090 records that none exists. That is the smallest missing object, and it is why C5 is **UNMEASURED** rather than PASS. Declaring the route to exist is planted as a mutation; `c5-verdict` goes red.

I want to be precise about what this UNMEASURED is *not*: it is not "most factors are tagged, a few aren't". Every factor is tagged. It is that the *enumeration's completeness* rests on Round 030's architecture where the architecture's own §18 dichotomy cannot be decided.

## 4. C8 — Track B, computed

src82's Manin engine is exact over Q and generic in the level, so it was run at `N = 389`:

```text
relation quotient       dim 65 = 2g + 1   (genus 32)
T_2 = -2, T_3 = -2, T_5 = -3, T_7 = -5      eigenspace dim 2 after each — the +- pair of 389.a1
plus line: dim 1        minus line: dim 1

Z-primitive plus  vector:  content 1, 228 nonzero coordinates, |coord| <= 2, first nonzero at index 5, value there = 2
Z-primitive minus vector:  content 1, 284 nonzero coordinates, |coord| <= 4, first nonzero at index 3, value there = 2
   plus  [0:12] = [0, 0, 0, 0, 0, 2, 0, 1, 0, -1, 0, 1]
   minus [0:12] = [0, 0, 0, 2, 0, 0, 0, -1, 1, -1, 0, 0]
```

Index 5 and index 3 are exactly the coordinates src70 (plus) and src79 (minus) normalise at. **Normalised there and reduced mod 11, the plus line equals src70's independently computed mod-11 line and the minus line equals src79's, at all 390 coordinates** — two engines (mod-11 nullspace; exact rational nullspace) agreeing on the same object.

Three saturations, kept apart as instructed, none inferred from another:

| | plus | minus |
| --- | --- | --- |
| normalisation index `[Λ_sat : Λ_raw]` | **2** | **2** |
| primes | {2} | {2} |
| 11-adic (`v₁₁` of the index) | 0 — saturated | 0 — saturated |
| prime-to-11 (the index itself) | **2 — not saturated** | **2 — not saturated** |
| global primitivity (content) | 1 — primitive | 1 — primitive |

So the unit-normalised lines PC-001 and this tree work with sit at index 2 inside their Z-primitive lattices, on both signs — the same index RUN-080 found for the calibrator's plus line. That number is a **length**, tagged L; it fixes no unknown unit. The ABSENCE C8 asks about — Round 030 (10.2), "lattice index and finite Euler factors are arithmetic magnitude, not exact frame ambiguity" — is checked structurally: no E-record in the inventory draws its value from an L-record. Both refusals you demanded are planted as mutations — "an unknown exact scalar := the lattice index" and "prime-to-11 saturation from `v₁₁ = 0`" — and each turns `c8-verdict` red. Misreading the index, normalising at the wrong coordinate, or feeding the engine a different curve turns `c8-target-lines` red.

`C8 PASS`. RUN-090's other missing item for C8 — the local integral maps of an actual Selmer complex, Rounds 033–034 — are post-normalisation objects outside the sentence; they are recorded, not claimed.

## 5. The dependency finding

RUN-090's graph: `C5 ← C4`, `C6 ← C4, C5`, `C7 ← C4, C6`. RUN-095's frontier `{C5, C8}` was computed from it. This round shows C5's ledger cannot be *certified* until C7's **object** — the comparison route — exists; but C7's *verdict* (canonical equality or explicit `κ_det`) genuinely comes after the ledger. The graph has one node for what are two things. Reading it with the objects separated:

```text
build the comparison route (C7's object)   ->   C5 ledger certified   ->   C6, C7 verdicts   ->   C9, C10
C8   independent, now PASS
```

So the executable frontier is **the comparison route itself** — the one object RUN-094 also named as C1's remaining gap in another guise. That is what the next round has to build, and it is not cheap: it is the auxiliary→arithmetic map at the level of lines, with `η_pdR` as its first factor.

## 7. Drill

The whole-tree mutation drill, first run: **523 planted defects, 523 caught by the check named for them, 0 uncaught, 0 caught by the wrong check, 140 controls undisturbed, state restored, over 156 checks** (5622 s as 8 shards). Sixteen of the defects and six of the controls are this round's: the instruction's five C5 mutations — `b_f⁺` rescaled without the gauge entry, `Π_i` filed as G, a lattice index filed as E, an unnamed `h ∈ L^×` injected, a finite factor counted in both L and P — the instruction's two C8 refusals — an unknown exact scalar set equal to a lattice index, prime-to-11 saturation inferred from `v₁₁ = 0` — and nine more (the frame `c_aux` is read in, the primitive dependences, `c_ES/Kum` pushed inside `𝒟`, the route declared to exist, the target's index misread, the wrong normalisation coordinate, a different curve). The module-level probe this time did **not** clear the memo between mutations — RUN-095's lesson — and agreed with the drill.

## 6. Labels and status

`COMPUTED_HERE`: the gauge law on exact instances from declared primitive dependences; the inventory and its derived tags; the level-389 rational lines, Z-primitive vectors, contents, indices, and both cross-checks.
`CITED_THEOREM`: Round 030 §9–§18 (the factorization and the line structure); LR C1.9, §A8.3, the Coleman map's definition; Kato.
`DERIVED_FROM_VERIFIED_INPUTS`: RUN-090's fifteen tags; RUN-094/095's dictionary and `C_π` provenance; RUN-080's calibrator indices.
`UNMEASURED`: the comparison route; the values of `η_pdR`, `κ_det`, `G_b`, `Π_i`, `κ_E`, `ℓ_0`.
`FAILED`: nothing.

```text
C1-C4  PASS (RUN-095)
C5     UNMEASURED  - ledger delivered; missing: the comparison route as a map
C6, C7 UNMEASURED  - and C7's OBJECT is now upstream of C5's certification
C8     PASS        - target saturation index 2 on both signs, used as a length
C9, C10 UNMEASURED
NORMALIZATION-UNMEASURED        BSD  OPEN
```
