Automated Claude review: ramanujan-qft 0.3.0rc1.dev1 development snapshot#

Automated review, not human peer review. This report was produced by an automated Claude reviewer with a local shell. No human took part in the assessment. It may support a decision to proceed to human review or to candidate qualification. It does not constitute human scientific approval, and it does not authorize stable publication.

1. Identity and scope#

Date

2026-10-25

Reviewer

Claude Opus 5.5, model identifier claude-opus-5-5 (Anthropic), running in Claude Code

Label

Automated scientific and software review

Brief followed

/home/reet/Ramanujan_master_theorem/docs/CLAUDE_REVIEW_BRIEF.md (areas A–E)

Tools available

Linux shell; Python 3.12.3; pip; mpmath/SymPy/NumPy/SciPy/jsonschema; git; read-only gh

Not available or not used

No browser, no Google Colab, no Python 3.9 interpreter, no Sphinx run, no actionlint, no index upload

Files examined in depth:

  • ramanujan_qft/ modules: multiloop.py, brackets.py, sunset_rmt.py, sunset_taylor.py, explain.py, the schema schemas/sunset-rmt-v1.json, sunset.py (alias only), __init__.py.

  • tools/: audit_stability.py, audit_sunset.py, prepare_review_packet.py, install_from_index.py, smoke_release.py, check_release_metadata.py, check_notebook.py.

  • tests/: test_index_install.py, test_report_reproducibility.py.

  • .github/workflows/: validate.yml, publish.yml, tests.yml.

  • Examples and notebooks: examples/08_first_calculations.py, notebooks/stable_walkthrough.ipynb.

  • Docs: CAPABILITIES.md, API_STABILITY.md, STABILITY_AUDIT.md, SCIENTIFIC_REVIEW.md, RELEASING.md, user_guide/{conventions,sunset_rmt,sunset_taylor,explanation}.md, getting_started/choose_method.md.

Examined by execution only, not line-by-line: mellin.py, one_loop.py, sunset.py beyond the alias, the legacy core/solvers/utils modules, and the remaining test modules.

Omitted:

  • Python 3.9 minimum-dependency matrix: no 3.9 interpreter is available. Hosted CI evidence only (§5.5).

  • Sphinx build and actionlint: not run.

  • Interactive Colab and browser (Pyodide) checks: not run.

  • TestPyPI or production upload rehearsal: not attempted.

  • Literature: no primary sources were re-read during this review. Derivations are my own (§4), and statements about cited papers are not independently verified here.

Prior context. I previously reviewed the frozen 0.3.0a2 source (commit e74a223). Since then the series evaluators changed only in their error messages (verified by git diff e74a223 d998357). I did not carry that review’s conclusions over. All numerical checks below were re-run against this snapshot’s installed code.

2. Reviewed artifact#

Item

Value

Package version

0.3.0rc1.dev1: a development version, not a frozen rc1. The published baseline is 0.3.0a5

Packet

/home/reet/ramanujan-stable-development-review

SHA-256 of SHA256SUMS

3ed86502713643a27fb6a85356bf5caf56479261549b1fc265257820237ec731

SHA-256 of stability-audit.json

a8762dc2b836df40807f7aeb3942a64c4f5f3ff05082f12fc24090524a0077a0

Manifest verification

sha256sum -c SHA256SUMS: exit 0, 127/127 OK. The manifest covers every file in the packet; nothing extra, nothing missing

Audit source binding

All 22/22 source_sha256 entries in stability-audit.json match source/

Repository context

d998357235083d2cb83ca6175245e4ecb46680f1. Every file in source/ is byte-identical to that commit. The packet omits benchmarks/, .gitignore, requirements.txt and setup.py (see R1). The audit’s base_commit is 3fed46f, the parent commit; per the brief this is context only

Assessed source

Exactly the files in source/, copied unchanged to a separate workspace. The original packet was not modified. The manifest still verifies after the review (§5.1)

3. Findings#

No critical findings. I found no materially wrong accepted value and no unsafe upload behaviour.

ID

Severity

Status

Location

Finding

R1

Major

Confirmed

tools/prepare_review_packet.py:27; tests/test_report_reproducibility.py:7

The review packet is not self-contained; its prescribed test command fails at collection

R2

Minor

Confirmed

tools/audit_stability.py:201,228; prepare_review_packet.py:17

The hybrid audit’s 100% coverage pass rule depends on which seeds are declared

R3

Minor

Confirmed (static)

.github/workflows/publish.yml:8,30,65-66; validate.yml:75-79; docs/RELEASING.md:111

TestPyPI upload by dispatch is not restricted to a frozen v* tag

R4

Minor

Confirmed

ramanujan_qft/explain.py:34-37; examples/08_first_calculations.py:36

Exported and printed decimals contain digits beyond the requested precision

R5

Minor

Confirmed

ramanujan_qft/sunset_rmt.py:260,275

The domain-refusal message reports masses in sorted order, not the caller’s edge order

R6

Improvement

—

tools/audit_stability.py:123; tools/audit_sunset.py:122

Audit reports store values only as rounded decimal strings

R7

Improvement

—

docs/getting_started/choose_method.md:52

The Colab statement is phrased as a fact

R1. The review packet is not self-contained; its prescribed test command fails#

Severity: Major, by the brief’s definition of “broken supported usage”. This is the frozen reviewer artifact’s primary reproduction command. No numerical value is affected, which is why it is not critical.

Inputs: the packet’s REVIEW_REQUEST.md instructions (cd source; python -m pip install ".[test]"; python -m pytest -q) on Python 3.12.3.

Expected

The suite runs. Commit d998357 is titled “Keep reviewer snapshots self-contained”

Observed

Exit 2 after 4 s: ModuleNotFoundError: No module named 'benchmarks' while collecting tests/test_report_reproducibility.py. The collection error aborts the session, so zero tests run (evidence/reproduction/tests.log)

Cause

prepare_review_packet.py:27 copies a fixed folder list ('ramanujan_qft','tools','tests','docs','examples','notebooks','.github') that omits benchmarks/. That module imports benchmarks.bench_release

Also missing

Docs in the packet cite benchmarks/data/sunset_budgets.json and other benchmarks/ reports (docs/user_guide/sunset_rmt.md:276, COMPARISON.md, SCIENTIFIC_REVIEW.md). A packet-only reviewer cannot inspect them

Minimal reproduction:

cp -a source /tmp/x
cd /tmp/x
python -m pip install '.[test]'
python -m pytest -q   # exit 2

Impact:

  • With only that module ignored, 521 tests pass.

  • The ignored module passes 6/6 when benchmarks/ is copied from d998357. That is a declared substitution, made outside the packet.

  • So the code is fine, but a reviewer following instructions gets no test evidence.

  • Hosted CI runs from a full checkout and cannot detect this.

Proposed fix:

  • Add benchmarks (.py and .json) to the packet folder list.

  • Make the builder fail if any test module imports a top-level package that is absent from the packet.

Regression check: a test that builds a packet in tmp_path and runs python -m pytest --collect-only -q inside source/, expecting exit 0.

R2. The hybrid audit’s pass rule depends on which seeds are declared#

Severity: Minor. The documentation already says hybrid coverage is “empirical fixed-grid coverage, not a confidence level”, so no guarantee is misstated. But passed gates packet creation, and its outcome is close to a coin flip under other seed choices.

Audit rule: a hybrid sample passes only if outcome=='value' and target_met and error_covered. The audit passes only if all 32 samples (4 graphs × seeds 1729–1736) pass, and prepare_review_packet.py refuses failing audits.

Inputs: the audit’s four graphs, plus five new ones (below). Seeds 1000–1031 (32 per graph), epsrel=1e-3, max_evaluations=4e6, strict=False. All 288 outcomes are retained in evidence/hybrid_coverage.json.

Expected, if coverage were reliable

All samples covered

Accuracy target

Met in 288/288 samples

Error-estimate coverage

285/288. The three misses are all on the audit’s own graphs and all converged=True

Miss 1

D=1 one-loop banana, seed 1011: actual/reported = 1.597

Miss 2

Same graph, seed 1010: actual/reported = 1.046

Miss 3

D=1 three-loop banana, seed 1004: actual/reported = 1.001

Audit rule on alternative seed blocks

Applied to four disjoint 8-seed blocks: FAIL on 1000–1007 and 1008–1015, PASS on 1016–1023 and 1024–1031 (evidence/hybrid_rescore.log)

Why this is expected: a miss rate near 1% per sample is consistent with error = max(3·stderr, change, roundoff) computed from 8 replicates. For a Student-t with 7 degrees of freedom, P(|t|>3) ≈ 0.02. All 32 samples would then be covered with probability of roughly 0.5–0.7.

New stress cases: all five were fully covered (32/32 each):

  • a mass hierarchy (1,1,30);

  • high momentum (p² = 2500);

  • the D=2 bubble with powers 0.55/0.55 (UV margin 0.1);

  • the D=1.5 vacuum sunset;

  • the D=2 vacuum sunset with powers (0.55,0.55,1) (margins 0.1).

That last case needed a corrected reference. My first position-space quadrature disagreed between 20 and 35 digits by 8×10⁻⁵ relative. I did not count it until re-resolved, with dense breakpoints at 30/45 digits (spread 5.5×10⁻¹⁴); see singular_sunset_reference.log. The other new references were validated against independent closed forms at unit powers and integer D (hybrid_reference_validation.log).

Proposed fix:

  • Report coverage as k/n with a Clopper–Pearson interval.

  • Gate on target_met plus a predeclared coverage threshold, for example a lower bound ≥ 0.85 at n=32.

  • Keep listing outliers.

  • Optionally, widen the estimator with a t-quantile for the replicate count (t₇,0.995 ≈ 3.5).

  • Keep integrate_graph experimental.

Regression check: run the audit on two disjoint seed sets. Its pass/fail result should not change because of a single 1–2σ miss.

R3. TestPyPI upload by dispatch is not restricted to a frozen v* tag#

Severity: Minor. Confirmed by static reading only; I did not execute it. The risk is limited to TestPyPI, and the procedure documents the right practice.

Expected

RELEASING.md:111 and the workflow comment say to dispatch “on a frozen v* tag”

Observed

No job condition checks github.ref. check_release_metadata.py --tag runs only if: github.event_name == 'release' (validate.yml:75-79)

Consequence

gh workflow run publish.yml --ref <branch> -f operation=testpypi-release would build and upload whatever version is on that branch, e.g. 0.3.0rc1.dev1. TestPyPI file names are immutable, so this permanently consumes the version and “rehearses” a non-frozen source

The rest of the release logic is sound:

  • the upload index is fixed per job;

  • the install-check index is chosen by event type and cannot cross over;

  • production upload happens only on a release event, after full validation;

  • retries never upload (see §5.6).

Proposed fix:

  • Add if: startsWith(github.ref, 'refs/tags/v') to the testpypi job.

  • Run check_release_metadata.py --tag "$GITHUB_REF_NAME" for dispatch too.

Regression check: a workflow-lint test asserting both conditions, plus a dispatch from a branch that is refused before the upload job.

R4. Exported and printed decimals contain digits beyond the requested precision#

Severity: Minor (clarity). The exact binary fields are correct; only the human-readable string invites misreading.

What happens: _diagnostics exports decimal=mp.nstr(value, dps+8) for a value already rounded to dps digits, so the last 8 digits are rounding noise.

Example: examples/08_first_calculations.py (dps=25):

Value

Printed

RMT value: 0.62901670759061414959082725578282

True value

0.62901670759061414959082725388358…

Estimated error printed alongside

5.2×10⁻²⁷

The difference is consistent with that error, so nothing is wrong numerically, but readers may copy insignificant digits.

Proposed fix: export decimal at dps significant digits, or add an explicit significant_digits field. In the example, print mp.nstr(value, 25).

Regression check: assert that the exported decimal has at most dps significant digits.

R5. The domain-refusal message reports masses in sorted order#

Severity: Minor (diagnostic clarity).

Input: edges with squared masses (9,1,4) and p=5.

Message

RMTDomainError

squared masses=(1, 4, 9): sorted

Taylor refusal

(9, 1, 4): the caller’s order (evidence/refusal_message_order.log)

Proposed fix: report the caller’s edge order, and the sorted chart order separately if useful.

Regression check: assert that the message contains (9, 1, 4).

R6. Audit reports store values only as rounded decimal strings (improvement)#

The audits store value as a decimal string of dps+15 or dps+5 digits. When the error estimate is dominated by the final rounding term, the margin between actual and reported error can be far below that resolution.

Example: the mass_hierarchy row (masses² 10⁻¹⁶, 1, 10¹⁶):

  • Re-checked from the report strings, it appears uncovered: actual and reported error are both 6.07×10⁻¹⁷ relative.

  • Re-computed with exact mpf values, it is covered at dps 15–30. The margin equals the truncation bound, about 10⁻⁴³ absolute (evidence/mass_hierarchy_margin.log).

The accounting is sound by the triangle inequality, but independent re-verification from the report alone is impossible.

Suggestion: store the exact binary encoding already used by explain.py.

R7. The Colab statement is phrased as a fact (improvement)#

choose_method.md says the notebook “also runs in Colab”. No hosted Colab evidence is in the packet, and the next sentence correctly calls a Colab session “a separate user check”. Reword it as “is intended to run in Colab (not yet verified)”. The install cell also pins the mutable branch stable/01-api-contract; this is documented as needing a freeze before qualification.

Unresolved concerns (not defects)#

  • U1. Analytic continuation in the propagator powers for the momentum chart is argued in the guide but not proven by me. My evidence is that the regulated family sums converge to the finite coefficient along five regulator paths (§4.3), plus agreement of the summed series with an independent reference.

  • U2. The Python 3.9 minimum-dependency matrix was not reproduced locally. It is green in hosted CI (§5.5).

  • U3. Browser/Pyodide and Colab behaviour were not tested.

Earlier findings (0.3.0a2 review), checked in this snapshot#

Finding

Status in this snapshot

N1 (git required)

Fixed: _base_commit returns None, with tests

N2 (“certified”)

Fixed: now “precision-checked”; no “certified” remains in README.md, docs/index.md or COMPARISON.md

N3 (vanishing family)

Fixed: now says the family vanishes “independently of dimension and propagator powers”

N4 (default-budget coverage)

Addressed: a measured default-budget table was added (consistent with my measurements)

N5 (base_commit)

Addressed: SCIENTIFIC_REVIEW.md:50

N6 (benchmark reference)

Addressed: triple_reference is an angular representation with no quadosc

4. Derivation assessment#

These are my own derivations; no literature was consulted during this review.

4.1 Normalization (area A)#

  • Projective formula. For positive Euclidean propagators and measure d^Dk/π^{D/2} per loop, Schwinger parameters and Gaussian integration give I = Γ(A−LD/2)/∏Γ(ν_e) ∫δ(1−Σx) ∏x^{ν−1} U^{A−(L+1)D/2} F^{−(A−LD/2)}, with F = U·Σx m² + Σ_{2-forests} p_T² ∏x. multiloop.py:287-304 implements exactly this:

    • s = A − L·D/2;

    • u_power = s − D/2;

    • the prefactor Γ(s)/∏Γ(ν) via ramanujan_master_theorem(lambda n: 1, s) (which is just Γ(s));

    • the F rescaling.

  • Mass inputs are squared. External momentum vectors enter only through Σp² of each forest component, and vectors with several components work, e.g. p=(12,16).

  • D=2 sunset. A=3, L=2: the integrand reduces to ∫_Δ 1/F. I confirmed this numerically against a bubble-insertion representation that shares no formula with the package: I = ∫₀^∞ dt B(t)/√((t−P)² + m₁²(2t+2P+m₁²)), with B the closed-form D=2 bubble. It reproduces 4Cl₂(π/3)/√3 for the equal-mass vacuum, and all committed fixtures to about 10⁻⁵⁰.

  • General-D position space, Δ_ν(r) = 2/((4π)^{D/2}Γ(ν)) (r/2m)^{ν−D/2} K_{D/2−ν}(mr), reproduces the D=2 and D=1 results at unit powers and was used for fractional D and powers.

  • D=1 banana: I = π^{(n−1)/2} M/(∏m (M²+p²)), from e^{−m|x|}/(2m) propagators. This matches audit_stability.py:160 and example 08.

  • D=2 bridge: the tadpole ∫d²k/π (k²+m²)^{−2} = 1/m² and the bridge factor (p²+m²)^{−2} give 1/(2·5·49), matching audit_stability.py:166.

  • Graph polynomials. U and F from symanzik() equal an independent construction (matrix-tree theorem U = ∏x·det L̃(1/x), kinetic term U·pᵀL̃⁻¹p) for five topologies, including a self-loop graph, and for every exported trace (polys_multiloop.log, explain_checks.log).

  • Sunset bracket rows. Re-derived from U^{−D/2}e^{−F/U}: ⟨ν_i + k + r_i + (U-monomials containing x_i)⟩ and ⟨D/2 + k + a+b+c⟩. The factor (−1)ⁿ/n! applies to free indices, Γ(−n_b) to bound indices, with 1/|det B| (the Jacobian of the linear change to bound indices), 1/Γ(D/2+k) and 1/∏Γ(ν).

  • Convergence is not claimed from algebra. The compiler and docs correctly do not treat a nonsingular basis as proof of convergence. Convergence comes from the chart conditions (§4.4).

  • Layers are kept separate:

    • graph polynomials and brackets: general;

    • formal Gamma families: general, formal;

    • the evaluable series: sunset-specific;

    • the hybrid backend: numerical.

  • Alias. sunset_second_derivative equals sunset_d2 (identical values at two points, the same refusal at and above threshold, the same signature) and is documented as the 4-D dispersive S’’. It is not confusable with the D=2 graph value (alias_check.log).

4.2 Family selection (area B)#

  • Momentum chart. The Mellin–Barnes kernel ∏Γ(−z_i)Γ(D/2−ν_i−z_i)·Γ(A+Z−D)/Γ(3D/2−A−Z) closes to the right for Σm_i/Q < 1, giving 2³ pole families. These are exactly the mass-index/paired-U-index choices the compiler makes.

  • The all-U family vanishes identically. At z_i = D/2−ν_i+n_i one has Z = 3D/2−A+N, so 1/Γ(−N) = 0 for any D and powers. I confirmed this in the generated term: the denominator is Γ(−n₀−n₁−n₂).

  • Mass chart: 4 families. The coordinate-space argument (expand the two lighter K₀ factors and J₀; the absolute series is bounded by a polynomial-logarithmic factor times e^{(m_a+m_b+Q)r}, against K₀(Mr) ~ e^{−Mr}) justifies termwise integration by Tonelli in the strict domain.

4.3 Pole limits#

I summed the generated regulated families numerically at fixed (n₀,n₁,n₂) and compared them with series.coefficient:

  • Regulator paths: five, with regulator size 10⁻²⁵: the common shift; distinct shifts (1,2,−3) and (0.7,−1.3,2.9); D = 2+h; and mixed D with distinct shifts.

  • Cases: unequal masses (1,4,9); equal colliding masses; the mass chart at p=1; the mass-chart vacuum with equal light masses; mixed indices up to (3,0,4).

  • Result: across 80 comparisons, the maximum relative difference is 2.4×10⁻²³, which is O(h). The finite harmonic/logarithmic coefficients are the combined limit, independent of path. Individual families are never evaluated as results.

4.4 Domains and tail bound#

  • Domain decisions use integer-square-root rational enclosures of Σ√r. They are rigorous, with no floats.

  • Exact boundaries are refused. That includes Q = 3 and 2.99999999999999999999 for unit masses, the mass-chart boundary (1,4,16) at Q=1, and the momentum boundary (1,4,9) at p=6.

  • Points just inside a boundary are accepted, then refused by the work budget with a typed error.

  • The gap and the equal-mass vacuum raise RMTDomainError, with no fallback.

  • Multinomial majorant: Σ_{|n|=N} W_n rⁿ ≤ (Σ√r_i)^{2N} = ρᴺ holds because a sum of squares is at most the square of the sum.

  • Log-factor bounds: c(L+H_N)²+d with (3, π²/4) for momentum and (1, π²/12) for mass.

  • Tail formula: with H_{N+k} ≤ H_N + k/(N+1), the geometric moments give exactly the implemented expression (sunset_rmt.py:180-184).

  • What is not rigorous: the mathematical bound is separate from the arithmetic estimate, the two-precision difference and final rounding. None of these is an interval enclosure, as the docs state.

4.5 Taylor chart#

  • ODE: substituting t = −9r/(1−r), f = (1−r)G into the stated Picard–Fuchs equation gives the documented G-equation times (r−1), which is nonzero on [0,1).

  • Recurrence: coefficient matching (SymPy) gives the stated recurrence exactly.

  • Moments: recurrence values b₀…b₆ from the Clausen seed equal direct 2-D quadrature of ∫(1−9v)ⁿ/U. At fixed 30 digits they lose about one digit per step, confirming the (−8)ⁿ parasitic mode that the guard digits address.

  • Tail bound: 0 ≤ I−I_K ≤ b₀rᴷ/m² follows from 0 ≤ b_n ≤ b₀.

  • Seed: b₀ is confirmed directly as the vacuum integral, so the Laporta–Remiddi factor of 16 is not needed for correctness. I did not consult that paper.

4.6 Gaps#

  • The continuation in powers for the momentum chart (U1).

  • No interval or ball arithmetic anywhere. All error estimates are numerical, apart from the analytic tail.

5. Execution evidence#

All logs are under /home/reet/ramanujan-stable-development-claude-review/evidence/.

Environment (reproduction/python-version.txt, dependencies.txt):

  • Python 3.12.3 (GCC 13.3.0), Linux 7.0.0-38-generic x86_64;

  • mpmath 1.3.0, SymPy 1.14.0, NumPy 2.5.4, SciPy 1.18.1, pytest 9.1.1, jsonschema 4.26.0;

  • pip check: exit 0.

Workspace. I used the session scratchpad instead of the brief’s mktemp -d /tmp/.... Both are isolated temporary locations; this one is session-private.

Interpreter difference. The packet’s audit used NumPy 1.26.4 and SciPy 1.11.4. My regenerated audit is nonetheless bit-identical: 15/15 series values and 32/32 hybrid samples (audit_regeneration_comparison.log).

5.1 Reproduction commands from the brief#

Command

Exit

Time

Result

sha256sum -c SHA256SUMS, before

0

—

127/127 OK

python -m pip install '.[test]'

0

—

reproduction/pip-install.log

python -m pytest -q

2

4 s

Collection error; 0 tests run (R1). reproduction/tests.log

python -m pytest -q --ignore=tests/test_report_reproducibility.py

0

807 s

521 passed, 1 known SciPy QUADPACK roundoff warning. reproduction/tests-ignore1.log

The ignored module, with benchmarks/ added from d998357 (declared substitution)

0

12 s

6 passed. reproduction/tests-report-repro-with-benchmarks.log

tools/audit_sunset.py --output …

0

30 s

34/34 PASS

tools/audit_stability.py --output …

0

34 s

passed: true; series {value 15, domain 4, budget 6}; hybrid 32/32

examples/08_first_calculations.py

0

4 s

reproduction/example08.log

tools/check_notebook.py notebooks/stable_walkthrough.ipynb

0

3 s

2 code cells passed. The network-install cell is skipped by design; this is not a Colab test

sha256sum -c SHA256SUMS, after

0

—

127/127 OK; packet unchanged

5.2 Independent sunset references#

Stability-audit cross-check (stability_audit_crosscheck.log):

  • Every accepted value in the packet’s stability-audit.json, and in my regenerated copy, agrees with my bubble-insertion reference, which uses neither package code nor the Cheng–Wu reduction.

  • The audit’s Cheng–Wu references agree with mine to 10⁻⁴⁵–10⁻⁴⁷ relative, and my reference’s own two-precision spread is ≤ 10⁻⁵⁵.

  • The one row that looked uncovered from report strings is covered with exact values (R6).

30-digit sweep, 63 inputs (sweep30.log, sweep_30.json). The inputs cover:

  • both charts, Taylor, and the dominant-mass and equal-mass vacua;

  • permutations;

  • hierarchies from 10⁻³⁰ to 10¹⁶;

  • 20 random unequal-mass points from random.Random(20261024);

  • domain and budget refusals.

Results: 40 values, 3 domain refusals, 20 budget refusals. 36 of the 40 values meet 10⁻³⁰ and lie within the reported error against a resolved reference. The other 4 (mom_huge_scale, mom_tiny_scale, taylor_scale_small, taylor_scale_big) are flagged only because my reference is not scale-normalized: its own spread there is 2×10⁻⁵ to 5×10⁻⁵, so it is unresolved and is not counted as a pass or a failure. With the scale-normalized reference, all four are covered at 30 digits (scale_check.log, below). The 20 budget refusals are typed and expose .result. They lie near a chart boundary, consistent with the default-budget table.

Extreme scales (scale_check.log): squared-mass scales 10⁻¹⁰⁰…10²⁰², and a 600-decade hierarchy (10⁻³⁰⁰, 1, 10³⁰⁰). 6/6 are covered at 30 digits, with reference spread ≤ 10⁻⁵⁶.

Adversarial precisions (adversarial.log): dps 10, 15, 60 and 100 on seven cases, including logarithmic hierarchies of 10⁻⁴⁰ and 10⁻⁶⁰ and ρ = 0.49. Results: 22 values, all covered, with actual/reported between 0.035 and 0.78, and 6 typed budget refusals at dps 60/100.

5.3 Derivation scripts#

Script

Result

taylor_derivation.py

ODE transform and recurrence re-derived; moments match

family_limits.py

80 comparisons, max relative difference 2.4×10⁻²³

polys_multiloop.py

U/F match on 5 topologies; D=2 bubble and sunset hybrid values; integrate_graph coverage 10/10 at epsrel=1e-5; D=3 and D=4 sunsets refused by UV margins

5.4 Explanation export (area D; explain_checks.log, 42/42 PASS)#

  • JSON round trip with global mp.dps=5 and requested dps=80 is equal, for momentum, mass and mass-vacuum charts.

  • The binary encoding (-1)^sign·int(mantissa_hex,16)·2^exponent2 reproduces the evaluator’s mpf exactly.

  • Exported values lie within the exported error of the independent reference; e.g. the momentum chart has actual 6.4×10⁻⁸² versus reported 9.5×10⁻⁸².

  • The trace matches the compiler: U/F equal the independent construction; the matrix, chart and condition match; there are 8 or 4 families; rho_upper is at least the true ρ and below 1.

  • Graphs rebuilt from the exported rational strings reproduce the trace.

  • Schema (Draft 2020-12):

    • valid for not_requested, converged, budget_exceeded with a partial result, and budget_exceeded with diagnostics: null (at max_dps equal to dps);

    • rejects schema version 2, float-valued number fields and unknown keys.

  • Domain refusals (equal-mass vacuum, gap, exact boundary) raise RMTDomainError with no fallback.

  • Symbolic strings are display strings. My script parsed U/F with sympify only to compare them with my own construction. The guide correctly warns against eval.

  • Global precision: 14 success and refusal paths across the one-loop, dispersive, Mellin, RMT, Taylor, explain and hybrid APIs leave global mpmath precision unchanged (global_precision_check.log).

5.5 Hosted CI (read-only gh; context, not candidate qualification)#

  • tests run 40123303036 on d998357 (PR #10, branch stable/01-api-contract) succeeded.

  • All 14 jobs were green: minimum dependencies (Python 3.9, constraints-minimum.txt); tests on 3.9, 3.11 and 3.13; audit-and-docs (including Sphinx); build; six installed-artifact jobs (Linux, macOS and Windows; wheel and sdist); upgrade-from-0.3.0a5 for base and multiloop.

  • The docs run also succeeded.

  • The action references checkout@v7, setup-python@v7, upload-artifact@v7 and download-artifact@v8 therefore resolve. I did not independently confirm their Node.js runtime version.

5.6 Release engineering (area E; artifact_checks.log)#

Local builds from the packet copy:

Check

Result

python -m build

exit 0

twine check --strict

exit 0

Wheel SHA-256

f05c5dda…b3ea

sdist SHA-256

1cc904b7…4ad1

These hashes come from local builds and do not identify any uploaded artifact.

tools/smoke_release.py runs (all exit 0):

  • wheel and sdist, with SciPy blocked;

  • the wheel with --with-multiloop;

  • the wheel with --upgrade-from 0.3.0a5, which installs the baseline from production PyPI.

The explanation schema schemas/sunset-rmt-v1.json is present in both artifacts.

Retry policy, by reading install_from_index.py and its tests:

  • A retry happens only when the output has exactly pip’s two missing-version lines for the exact requirement, with no WARNING, Traceback or SSL lines.

  • Timeouts are not retried.

  • The index is restricted to PyPI or TestPyPI and fixed for each attempt.

  • Nothing is uploaded or rebuilt.

  • The smoke check runs once, after installation.

Versions in pyproject.toml, __init__.py, CITATION.cff and docs/citing.md all read 0.3.0rc1.dev1; the CHANGELOG labels it “Unreleased”.

5.7 Not run, timed out or inconclusive#

  • Not run:

    • the Python 3.9 minimum-dependency suite (hosted only);

    • Sphinx and actionlint;

    • browser/Pyodide and interactive Colab;

    • TestPyPI or production upload and hash verification of uploaded files;

    • tools/audit_sunset_budgets.py, so the default-budget table was not regenerated. It is consistent with my 0.3.0a2 measurements.

  • Timed out: none.

  • Inconclusive, then resolved: the singular-power sunset reference (R2) and the mass-hierarchy string margin (R6).

  • Packet integrity after review: sha256sum -c SHA256SUMS exit 0, 127/127 OK. The packet holds 128 files (the 127 entries plus SHA256SUMS) and no __pycache__; the original packet was not modified (reproduction/manifest_check_after.txt).

6. Disposition#

Changes required (R1) before this packet can serve as the reproducible basis for human review. I found no blockers in the scientific content within the reviewed scope:

  • all accepted values tested agree with independent references;

  • the reported RMT and Taylor error estimates bounded the actual error in every case I evaluated with exact values;

  • domain and budget refusals keep their types and expose partial results honestly.

R2 and R3 should be fixed before a frozen candidate. R4–R7 are clarity and reproducibility improvements. “No scientific blockers” is not a guarantee of correctness.

API stability recommendations:

Status

APIs

Suitable to propose as stable, within the documented domains

integrate_graph_rmt, integrate_sunset_taylor, their result and exception types, ScalarEdge/ScalarGraph, sunset_second_derivative/sunset_d2

Should remain experimental

integrate_graph, MultiloopResult, MultiloopConvergenceError (statistical errors with about 1% observed under-coverage; R2)

Keep as inspectable or provisional research interfaces, as documented

explain_sunset_rmt/sunset_rmt_schema (provisional schema v1); compile_sunset_rmt, schwinger_brackets, symanzik and the other compiler internals

7. Remaining gates#

  • Qualified human scientific review: not performed by this report.

  • Outside-user feedback and an interactive Colab/browser session: not performed. I have no outside-user feedback, and none is implied.

  • Frozen release candidate: none exists yet. It needs a freeze, a fresh audit and packet (after R1), and a TestPyPI rehearsal of that exact candidate, including verifying the uploaded hashes. A green PR, an older rehearsal or valid publisher configuration does not substitute for this.

  • Final release qualification and production publication remain with the release owner. This review authorizes neither.