# Build handoff: T490

Draft: https://numberdb.org/T490
Title: Values of the Kelvin function $\operatorname{ber}_\nu(x)$
Permanent slug returned by the API: Values_of_the_Kelvin_function
Family: numberdb-data issue 205.

The draft contains 360 values, each written with 100 significant digits and certified by ball arithmetic. It is unpublished and has not been offered for review. No review, publication, deployment or Git action was performed. The controller must run the separate critique and repair stages before offering it.

## Scope and conventions

The DLMF convention is ber_nu(x) = Re J_nu(x exp(3 pi i/4)), with principal J. Parameters, in citation order, are nu and x, both of type Q. The mathematical parameter domains are nonnegative rational order and positive rational argument. The finite selection is nu = 0,1,2 and all positive reduced rationals a/b with b <= 4 and x <= 20, sorted increasingly within each order (120 arguments). This retains the family's rational rectangle and does not substitute a decimal grid. The origin values are stated exactly in a comment, following the family's common positive-argument convention.

The family had fixed the order range, argument range, precision, parameter keys and tags. The implementation chooses the algebraic rotation (-1+i)/sqrt(2) to enclose its rounding without numerical trigonometry. The definition and branch follow DLMF 10.61.1. The family text has a typo saying ker is fine at zero while also stating ker_0 is singular; the draft uses the correct singular behavior. No unresolved mathematical convention remains.

## Corpus screening

`screen.already_here('Kelvin ber')` found no Kelvin table; the stem "ber" also returned unrelated Bernoulli and similar titles. `already_asked('Kelvin')` returned issue 205. Separate searches for Kelvin and Struve returned no published tables. Four numerical API lookups, at (nu,x) = (0,1),(1,1),(2,1),(0,20), returned no results. Creation of the exact proposed title succeeded as T490, without a collision.

Existing tags `special functions` and `special values` were verified (79 and 108 tables respectively at screening). T187, T190, T196 and T199 were read and their returned search slugs used. The draft links those four Bessel neighbors. The other five proposed Kelvin/Struve siblings were not in public search, so their addresses were not guessed and no links to absent tables were added. No new tag is proposed.

## Numerical evidence

* `dry_run.py`: all 360 entries passed exactness/enclosure and generator-import checks; no suspect exact values or comment issues. The raw ball representations have maximum length 138 characters and occupy approximately 64.2 KiB under the checker.
* Serialized 100-digit decimals: maximum 106 characters, approximately 49.3 KiB under the checker.
* Working precision: 397 bits (`numberdb.bits(100, losing=64)`). Largest measured ball radius approximately 2.636e-113; smallest relative decimal accuracy approximately 115.09 digits. Every ball passed an exact rational relative-width threshold of 1e-110 and was wholly contained in the interval denoted by its decimal string.
* Independent power series: exact rational coefficient accumulation with the cosine cycle, a 600-bit sqrt(2) only for odd order, 200 terms, and a rigorous geometric tail bound below 1e-150. Its enclosures were wholly contained in all 360 written intervals.
* Rotated modified-Bessel identity and order/argument reflections: all 360 rows, with finite, narrow 600-bit enclosures.
* mpmath at 160 decimal digits: all 360 values lie inside the written intervals; largest difference from the displayed center was 0.499468 units in the last place.
* Independent Schlaefli quadrature at 125 decimal digits: all 360 rows; maximum relative discrepancy 1.231e-123. Nonzero and zero origin controls ran first.
* Three-order recurrence: all 120 arguments at nu=1, using all three stored ber values and an independently computed bei_1. Finite, narrow residual enclosures contain zero.
* After filling, `verify(sample=None)` reported 360/360 matched, 0 differing, 0 missing, 0 extra. The full independent series, integral, mpmath, rotation, reflection and recurrence checks were repeated on values fetched from the draft.

Software: SageMath 10.9, Python 3.12.3, mpmath 1.4.1. Exact versions are recorded in the numerical evidence.

## Audit and final state

The initial site audit requested moving the corpus link out of Definition. A prose-only edit moved the definition of J and its principal branch into a comment with the verified Bessel-table link. All 360 stored number strings were compared before and after and are unchanged. The final authenticated audit returned `findings: []`, `clean: true`.

The sources generate.py, checks.py, check.py, source-evidence.md and numerical-checks.json are attached to the website draft. Final stored-value checks, audit evidence and this handoff are attached as well. The exact numerical assertions, including controls and tail proof, are reproducible in checks.py. `sage -python checks.py --stored` checks fetched values and needs the owner's key while the table remains private. The generator defaults to verification; its --fill option writes only to the existing table.

The initial creation revision is 44bb7eaeaf77f38113e70311d37fddb0831172822e8ffd08e5f18d862eb28293. The numbers were filled once at 23a577d2a843f49f68400ce0ba325dff1af30e2069f539e91330b870cd9ee21b. The final prose revision is c06ef323c52c11dc740b6ead30068ee1622d3055fdd9b26753139f4baf40f2ec.

Raw logs, failed-check exceptions, the live skill, family document, neighboring documents, screening responses, computed and stored numerical evidence, all working scripts and a proposed lesson about Sage ball radius coercion are preserved in the run artifact directory. Failed checks were API/coercion errors in the checking code; no competing numerical results were accepted or ignored.
