# Numerical evidence for T679

This build read both versions named in
`agents/runs/20261102T134642Z-build-skills/manifest.json`. Each SHA-256 is
`a2b28d9953264d7b0ca62663785c2952190c5be6d6d3597fd695d9a54d606278`.
The archived copies agree. `skill-evidence.json` records their sizes and hashes.

## Scope and method

All 56 (template,z) pairs in `generate.py` were computed. The enumeration is
exactly the fourteen-template classification times the conifold and the three
specified S-unit fibers, in the family issue's order. `argument-selection.md`
justifies every parameter. The full 56-row result is preserved in `checks.jsonl`.
No numerical input is obtained from an earlier campaign transcript.

Sage 10.9; mpmath 1.4.1; PARI 2.17.1. Every Sage calculation ran through
`agents/sage.sh`. No computation used the serving website process.

Production uses mpmath.hyper at 140 and 190 decimal digits. The latter working
precision does not mean 190 digits are submitted: the table requests 100 digits
per nonzero component. Component intervals unite the two numerical evaluations.
They represent heuristic agreement only, not rigorously certified enclosures.
For real z>1, mpmath's default is the lower bank; conjugation gives the specified
upper bank. Real fibers have zero imaginary part by Schwarz symmetry and the
chosen continuation, not because a small computed imaginary part was discarded.
The origin is the normalization control and is not a stored row.

## Independent full-range calculation

`checks.py` implements independent numerical formulas, sharing neither the
hypergeometric evaluation nor the generator's template decoding:

- Smooth fibers use ordinary Taylor coefficients obtained from the differential
  equation. Each path segment stays within half the distance to the nearest
  singularity. Taylor order is 680, at 165 decimal working digits. The path to
  2 passes through the upper half-plane and approaches 2 from positive imaginary
  part. It has no detour around 0 or a complete winding around 1.
- Conifold values sum coefficients for 0<=n<1400 and approximate the remaining
  tail from 130 terms of the gamma-ratio asymptotic expansion. The log expansion
  uses Bernoulli polynomials, and the powers of 1/n are summed by Hurwitz zeta.
  This differs from mpmath's Richardson/Shanks convergence acceleration.
- Each reference was compared to the 190-digit production evaluation. The
  required relative agreement was 120 digits. The smallest observed agreement
  was 153.450237580952 digits. All 56 passed; elapsed time was 74.37 seconds.
  The values themselves, not only the pass/fail flag, are saved in checks.jsonl.

## Controls outside the table family

Controls ran before any full-range comparison:

- The tail method applied to 2F1(1,1;3;1), the telescoping sum of
  2/((n+1)(n+2)), returned 2 to about 160.20 digits.
- The same Taylor continuation implementation at rank two agreed with
  2 K(z)/pi at z=1/2,-1,2 to at least 164.50 digits. K uses the parameter z.
  The upper-bank control retains its positive imaginary part.
- PARI's weight-four level-eight modular-form L-function at s=2 gave
  16 L(f,2)/pi^2, for f=eta(2tau)^4 eta(4tau)^4, agreeing with the independent
  all-half conifold calculation to about 153.45 digits. Rogers–Wan–Zucker,
  Section 5, equation (30), is the identity used. It is L(f,2), not L(f,3).

The first modular-control attempt passed an mfinit space directly to lfun and
was refused by PARI's type checker. It returned no numerical value. The corrected
call obtains the L-function with lfunmf before evaluating it. The failed log is
retained as checks-first.jsonl; there was no numerical disagreement to resolve.

## Exact and mechanical checks

`exact_checks.py` checked coefficients n=0,...,200 in exact QQ arithmetic for
each template: cyclotomic fractions against the independent complementary-pair
list, the differential-equation coefficient identity, and the coefficientwise
product relation. It also checked the quintic and all-half factorial rescalings
against their independent factorial expressions. Constant coefficients are one.

The repository's unmodified dry_run.py and check.py were run against the final
selection and row comments. All 56 values passed exactness/type inspection,
prose checks and the exact-in-disguise scan. The longest internal interval
representation was 292 characters, and the annotated block measured 24.5 KB.
These are heuristic intervals; the check's generic phrase “error bound” must
not be interpreted as a proven numerical error bound for this build.

The final readback checked all 56 stored rows in their required order. All 70
nonzero components have exactly 100 significant digits and contain the
independent recomputation within the stated one-unit-last-place interval. The
maximum discrepancy was 0.488784 units of the last place. All 42 real rows have
exact zero imaginary components (serialized as [0, 0]); all 14 upper-bank rows
have positive imaginary parts. See readback-results.json.

Generator.verify(sample=None) matched 56/56 rows, with zero differing, missing
or extra entries. The first site audit requested a shorter definition. Its
redundant differential-equation wording was removed from Definition, retaining
the equation in Formulas and the branch in Comments. The final audit reports
clean=true with no findings. These prose edits did not change any values.

The entries-only API refused the initial fill because the complete local
reference list had not yet been accepted on the empty draft. The complete
document and all 56 serialized, precision-checked generator values were then
submitted in one request, and the reproducible sources attached. No refused
request wrote entries. The draft remains unpublished and was not offered.
