build-evidence.md

back to table · edit · history · where entries came from · files · download

5715 bytes, as of the version from 2026-11-01 06:59 (current). Recorded here, not run.

# Build evidence for T643

Draft: https://numberdb.org/T643 (Zagier traces of singular moduli).
Proposal: numberdb-data issue #282. This build does not offer, review or publish.

## Governing instructions

Read the family first with `python3 agents/queue.py show 282`. Read the archived
skill copies identified by
`agents/runs/20261101T063157Z-build-skills/manifest.json`.
The SHA-256 of each of the local and live copies is
`a2b28d9953264d7b0ca62663785c2952190c5be6d6d3597fd695d9a54d606278`.
Both copies were available and identical. `skill-manifest.json` preserves the
runner's record. The campaign gate and argument-review helper were also read.

## Corpus and family checks

`already_here` and `already_asked` were run. Searches by Zagier, singular moduli,
Hilbert class, Faber, j-invariant, McKay and Monster found the expected inputs
and companions, with no existing trace table. API text lookups can return digit
matches unrelated to exact integer equality; therefore typed integer lookups
were also made using `numberdb.search_integer`. Each of -248, 492, -4119 and
53008 had no exact integer match. No published table was edited.

T79, T83, T129, T255 and T634–T636 were read. Slugs came from live search results,
not guessed titles. The direct links are T79, T83, T129 and T635, and explanatory
context links to T634 and T636 distinguish individual CM samples and roots from
weighted traces. The inputs actually used for companion checks are archived in
`companions.json`; the generator itself has no downloaded input dependency.

Existing tags were checked through the tag API: number theory, modular function,
modular form, elliptic curves. The proposal's recommendations for new tags remain
recommendations only: complex multiplication would connect T83, T129, T634 and
T643; moonshine would connect T634, T635 and T636. No tag or published companion
was edited. A false singleton warning for modular form is documented separately.

## Mathematical decisions

The table holds one quantity t_m(d), ordered by m then d, with m=1..4 and every
positive d<=200 congruent to 0 or 3 modulo 4. It includes nonfundamental
discriminants, imprimitive forms and their exceptional PSL stabilizer weights.
It uses J=j-744 and J_m=q^(-m)+O(q), without a division by m. No convention differs
from the family. The finite cutoffs were reassessed and retained, with the
parameter-by-parameter rationale in `argument-selection.md`.

The coefficients and all trace arithmetic are exact. There are 400 entries;
the longest is 78 characters. A 100-significant-digit approximation is neither
needed nor substituted for an exact integer. The dry run was clean.

## Independent verification actually performed

1. All 400 exact class-polynomial traces equal a separate integer computation
   from Zagier's weight-3/2 coefficient recurrences and Hecke operators. For
   order 4, use T(2)^2-T(4)=2 in the stated normalization.
2. Every value is enclosed by a direct weighted CM sum, enumerating all reduced
   integral forms and summing Hecke translates of j-744 at 1024 bits. Finite real
   and imaginary component radii are each rigorously less than 10^-110. The
   largest observed real radius is approximately 6.994e-229; this floating
   diagnostic is not used as the rigorous bound.
3. Known controls j(i)=1728 and j((-1+i sqrt(3))/2)=0 are checked first, and both
   the exact and ball checkers reject deliberately incorrect integers.
4. All 100 class polynomials equal the T129 entries. Their degrees equal an
   independently enumerated count of primitive reduced forms. The 13 rational
   CM cases agree with T83 for all four orders; the higher Faber polynomials
   agree with T635. Laurent principal parts agree with T79's j coefficients.
5. All 16 printed ordinary traces and the explicit degree-2, 3 and 4 polynomials
   in Zagier agree. The generating product is checked through discriminant 200.
   The j-versus-J conversion and the imprimitive d=12 and d=16 cases are checked.
6. The displayed Sage program agrees on all 400 pairs and on the additional
   example (m,d)=(1,203), whose value is -27502410406723586976.
7. After filling, `verify(sample=None)` reports 400/400 matched, no differing,
   missing or extra entries. All the independent checks were repeated on the
   integers read back from the draft. `numerical-evidence.json` records results.

The primary sources are archived in the run workspace. Definitions and weights
were checked in Zagier §§1 and 6 and independently in Bruinier–Funke's
Introduction. The polynomial trace construction and FLINT/Arb algorithm were
checked against the SageMath CM documentation. No decimal rounding chooses an
integer in the generator.

The checker initially encountered Sage API naming errors (Kronecker symbol as
an Integer method; finite/containment methods on ComplexBall). They were traced
to missing methods and corrected to the named arithmetic function, componentwise
finite checks, and membership. There was no numerical disagreement after those
errors were fixed. Existing lesson proposals already describe the finite-check
trap, so no duplicate skill change is proposed.

## Review handoff

The controller must arrange the independent critique and argument-selection
sidecar. This build has not written an acceptance sidecar. Fingerprint all live
selection-relevant attachments, starting with the self-contained `generate.py`,
and independently review `argument-selection.md`. `checks.py` additionally uses
`check.py` and `companions.json`; they are attached for reproduction. The single
remaining audit finding is the documented draft tag-count bug. No computation
is left running, and no offer or publication action is authorized to this actor.