# EXPECTED — `owned-3d-end-effect`

<!-- kit:claim witness="PYTHONPATH=. python3 scripts/audit/verify_bem3d_truth_gate.py" extract="PASS\|\| 3D ring-BEM truth lane: R1 sphere ([0-9.eE+-]+), R2 Kelvin ([0-9.eE+-]+), R3 coax ([0-9.eE+-]+), R4->2D ([0-9.eE+-]+) \(canonical end-fraction ([0-9.]+)\)" -->
<!-- repro:expect [{"group": 1, "max": 1e-06}, {"group": 2, "max": 1e-06}, {"group": 3, "max": 0.0005}, {"group": 4, "max": 0.005}, {"group": 5, "near": 0.40, "abs_tol": 0.006}] -->

**The claim** (`top40.json` rank 35, `CROWN_JEWELS_RESOLVED.md` §3): Genesis owns a 3-D electrostatic solver, validated
against exact references before use, that measures how much capacitance the 2-D model misses at via ends. The
end-effect is roughly 40% of the pair coupling at the canonical geometry.

**What this packet reproduces.** `verify_bem3d_truth_gate.py` (§9 Gate 94) solves each reference live with
`genesis.solvers.bem3d_ring` and compares it with an exact answer computed separately (`genesis.physics.exact_reference_3d`,
mpmath):

| parsed group | bar | measured here | meaning |
|---|---|---|---|
| 1 | ≤ 1e-6 | 1.4e-16 | R1: isolated sphere against C = 4πε₀R |
| 2 | ≤ 1e-6 | 3.1e-07 | R2: two spheres against the Kelvin image-charge series |
| 3 | ≤ 5e-4 | 2.7e-07 | R3: long coax per-unit-length capacitance against 2πε₀/ln(b/a) |
| 4 | ≤ 5e-3 | 5.4e-05 | R4: a long via pair converging to the 2-D per-unit-length slope |
| 5 | 0.40 ± 0.006 | 0.40 | canonical end-fraction at d 70 / p 350 / t 300 µm (committed witness 0.40421887760277575) |

**Tolerances.**
- The four error bounds are the lab's own targets, `R1_TARGET`…`R4_SLOPE_TARGET` in the gate, fixed before this
  packet.
- The end-fraction is printed to 2 decimals, and the committed value is 0.4042. The band 0.394–0.406 covers the
  print rounding plus solver round-off. It excludes any real change in the 3-D end correction: a 1% change in the
  permittivity constant already fails R1 by ten orders of magnitude.
- The claim's "roughly 40%" is only reported by the gate, never used as a threshold
  (`dataroom/witness_quality.json`: unbound), so this packet is the first thing that pins it.

**Environment-dependent line.** The gate's `[5]` check also runs FastCap on a fresh N=8 layout when a FastCap binary
is present (it was here: diag 7.96e-03, dominant off-diagonal 1.04e-02). When no binary is present it records
`SKIP:no_fastcap_binary` and does not fail. That status is not parsed.

**Measured** 2026-09-17 in a tree holding exactly commit `a16c009b`: exit 0 in 47.9 s under the input tracer,
FastCap present.
