Release record and checklist#
Current production beta: 0.3.0b5, published on 2026-10-26. All five engineering objectives are included; stable qualification remains pending.
Previous production release: 0.3.0a5 on 2026-10-24, correcting the author metadata and documentation. Version 0.3.0a4 addressed the six nonblocking review findings. Numerical algorithms are unchanged from the reviewed 0.3.0a2 source. See Scientific review packet for the review scope, original report and dispositions.
The 0.3.0a3 restoration passed full validation, TestPyPI upload, hash verification and installation outside the checkout. It remains available; the earlier a1/a2 files were deleted.
The replacement TestPyPI publisher authorizes publish.yml, environment pypi.
Production PyPI separately accepted that identity in the
authentication preflight.
The frozen ca31a681ccd60e03883dcf16fbc13ba3dbe2bfee candidate passed the
final TestPyPI rehearsal
and the production release workflow,
including validation, uploads and fresh index installations outside the checkout.
Published wheel/sdist hashes were checked against each workflow’s validated
artifacts. The release assets
retain the verification records, source archive, review report and dispositions.
Metadata correction for 0.3.0a5#
Version 0.3.0a5 corrects the author credit to Reet and updates documentation.
The numerical algorithms are unchanged. The frozen candidate
8163607ea7cd7aa14f95480efc41da321a69e785 passed the
TestPyPI rehearsal
and production workflow,
including fresh installations outside the checkout. The first install on each
index ran before the new version appeared in its package listing; rerunning
those install jobs succeeded.
Both published artifacts have the corrected author field and README, and their
hashes match the validated production artifacts. The
0.3.0a5 release assets
retain the verification records and fresh numerical audit. The original
review, benchmark evidence and completed checklist below refer to 0.3.0a4.
Local preparation#
[x] Document the RMT and Taylor derivations, convergence domains and errors.
[x] Run the fixed-seed numerical audit and record source hashes.
[x] Prepare a runnable research notebook and contribution instructions.
[x] Keep
pyproject.toml,__version__andCITATION.cffconsistent.[x] Complete the final candidate artifact checks and record their outcomes.
Local evidence for 0.3.0a4: 455 tests and 19 doctests passed; all 34 fixed-seed audit cases, the 18-point default-budget grid, six notebook code cells and all 67 documentation examples passed. Sphinx, actionlint, strict Twine checks, and fresh-environment wheel/sdist installs passed. The full tests emitted one existing SciPy reference-quadrature roundoff warning. These local results do not substitute for the hosted and external steps below.
python -m pip install ".[test]" build twine
python -m pytest -q
python tools/audit_sunset.py --output benchmarks/data/sunset_audit.json
python tools/check_notebook.py notebooks/research_alpha.ipynb
python tools/check_doc_snippets.py docs
python tools/check_release_metadata.py --tag v0.3.0a5
python -m build --outdir dist .
python -m twine check --strict dist/*
python tools/smoke_release.py --dist dist --format wheel
python tools/smoke_release.py --dist dist --format sdist
Use a clean output directory containing one wheel and one source distribution. The artifact checks create fresh virtual environments outside the checkout and verify the series APIs without SciPy. The source distribution includes tests, reference data, audit tooling, documentation and the research notebook.
Completed release gates for 0.3.0a4#
[x] Record the supplementary review and its limitations in Scientific review packet.
[x] Address the six nonblocking review corrections. Human peer review remains welcome.
[x] Run hosted CI on the frozen
ca31a68candidate.[x] Verify its Linux, Windows and macOS artifacts and supported Python jobs.
[x] Freeze the final candidate/version and rerun validation on that exact commit.
[x] Review the generated documentation and notebook from the candidate.
[x] Confirm the candidate version is unused on each target index; if needed, increment it consistently before rebuilding. Never replace a published artifact.
[x] Configure the separate TestPyPI publisher (
publish.yml, environmentpypi) and run the manual TestPyPI rehearsal on the candidate ref.[x] Verify the rehearsed install-from-TestPyPI job succeeds outside the checkout.
[x] Rehearse the final candidate on TestPyPI if its artifacts have changed.
[x] Pass real-browser startup, example, numerical-reference and reset checks on the final candidate in the documentation run.
[x] Verify the production
pypitrusted publisher/environment through authentication.[x] Approve the concrete candidate, tag its matching version, and publish a prerelease with the reviewed notes. This triggers PyPI publication only after validation.
The TestPyPI and PyPI services require separate configuration. Trusted
Publishing setup follows PyPI’s documentation.
The rehearsal installs dependencies from PyPI and this package with --no-deps
from TestPyPI, following the TestPyPI guide.
The reusable .github/workflows/validate.yml runs tests, the numerical audit,
notebook and documentation checks, builds the artifacts once, and tests those
artifacts on three operating systems. publish.yml depends on all these jobs
and publishes the same artifact bundle. Release tags must match the metadata.
JavaScript actions use Node.js 24 runtimes, including the nested artifact
upload in the Pages composite action. When updating action versions, inspect
their action.yml runtime and nested actions as well as their release notes.
Hosted jobs, account configuration, independent review and uploads cannot be
verified by a local build alone.
Authentication and TestPyPI upload#
Dispatch publish.yml on a frozen v* tag. The default operation is
authenticate, with index=pypi or index=testpypi. Authentication uploads no
files. PyPI can activate a pending publisher and create its empty project during
token exchange. Credentials remain in memory and are not logged or archived.
For each new release, use an unused version and freeze its matching tag.
TestPyPI upload requires a refs/tags/v* ref, and validation checks that the
ref and tag both match package metadata. A branch named like a version is
still rejected before upload.
For the 0.3.0a5 correction:
gh workflow run publish.yml --ref v0.3.0a5 -f operation=testpypi-release -f index=testpypi
testpypi-release always uploads to https://test.pypi.org/legacy/, regardless
of the authentication-only index input. It uses the protected pypi
environment because that is the name in the configured replacement TestPyPI
publisher. The workflow builds once, validates the resulting artifacts and
installs the uploaded version outside the checkout. The separate production
upload job runs only when a GitHub release is published, after full validation.
For a new project, the account owner must configure a pending publisher on production PyPI with these exact values:
Field |
Value |
|---|---|
Project |
|
Owner |
|
Repository |
|
Workflow |
|
Environment |
|
GitHub environment configuration and TestPyPI authentication do not establish production PyPI trust. The preflight uses the documented OIDC exchange, an implementation-specific interface; actual uploads still use the supported PyPA publishing action. After publication, the production workflow installs that exact version from PyPI and runs the smoke check outside the checkout.
Trust and first-use checks#
An independent reviewer should examine normalization, convergence regions, collision limits and error estimates, with findings tied to a source commit. Automated tests do not substitute for this review.
Keep the method visible in examples: RACE for Mellin products, RMT scale plus numerical sectors for general graph input, and the specific sunset RMT/Taylor series. Do not describe statistical or arithmetic estimates as interval proofs.
Demonstrate graph input, a justified method, the result/error diagnostics and an independent reference. Exercise both successful calculations and useful domain/budget refusals in the notebook and browser console.
Keep installation and scope documentation consistent with the released version. The production
pip install --pre ramanujan-qftcommand should be advertised as available only after the production upload and a fresh install succeed.Publish the candidate’s audit, known limitations, change log and instructions for reporting a numerical error, including graph, conventions and precision.
Released scope#
Version 0.3.0a4 includes exact graph-polynomial and Schwinger bracket compilation, a hybrid numerical graph evaluator, and justified multivariate Gamma series for two massive D=2 sunset charts. A separately named equal-mass Taylor backend adds vacuum and finite Euclidean momentum coverage with an analytic tail bound.
Both series backends return explicit method and error diagnostics and refuse unmet work budgets. The source includes independent references, a reproducible audit grid and a notebook demonstrating the overlap between methods.
The mathematical methods are established in the cited literature. The software contribution is their implementation, graph interface, validation and error controls. This release does not claim general multiloop RMT evaluation, epsilon expansions, massless or physical-region series coverage, or rigorous interval certification. Unequal-mass continuation between the RMT charts remains open. The supplementary review and its limitations are recorded in the review packet.
Development checks for the first stable release#
The rc2 candidate was rehearsed successfully; beta 0.3.0b5 packages that implementation. Stable qualification remains pending. The rc1 rehearsal was stopped before upload after the source-archive review support files were found to be incomplete. Its frozen tag is unchanged. The stable milestones and remaining external gates are in Plan for the first stable release. Do not upload a changed artifact under the already published 0.3.0a5 name.
The validation workflow adds these combinations:
Check |
Interpreter / dependencies |
|---|---|
Supported-version suite |
CPython 3.9, 3.11 and 3.13 with currently resolvable dependencies |
Minimum declared dependencies |
CPython 3.9; mpmath 1.3.0, SymPy 1.12, NumPy 1.24.0, SciPy 1.10.0, pytest 7.0.0, jsonschema 4.18.0 |
Installed wheel and source archive |
CPython 3.12 on Linux, macOS and Windows; base numerical APIs with SciPy imports blocked |
Upgrade from published 0.3.0a5 |
CPython 3.12 on Linux; base install and separate optional-SciPy install |
Browser |
Pyodide 0.26.4 with its bundled compiled dependencies; all visible examples, reference assertions, reset and custom dependency wheels |
Minimum pins live in tests/constraints-minimum.txt. This checks a compatible
combination, not every cross-product of interpreter and dependency versions.
The explanation schema is shipped in both distributions and exercised after
installation, outside the checkout. Upgrade tests verify the old version first,
then the artifact’s actual version, retained imports and numerical references.
python tools/audit_stability.py --output /tmp/stability-audit.json
python tools/check_notebook.py notebooks/stable_walkthrough.ipynb
python examples/08_first_calculations.py
python tools/check_release_metadata.py
python -m build --outdir /tmp/stable-dist .
python -m twine check --strict /tmp/stable-dist/*
python tools/smoke_release.py --dist /tmp/stable-dist --format wheel --upgrade-from 0.3.0a5
python tools/smoke_release.py --dist /tmp/stable-dist --format wheel --upgrade-from 0.3.0a5 --with-multiloop
After an upload, tools/install_from_index.py permits at most six installation
attempts, 15 seconds apart. Only pip’s exact missing-version response for the
requested package/version is retried. Connection warnings, incompatible-Python
errors, other dependency/build failures and timeouts fail immediately. Smoke
checks run once after installation. No retry uploads or rebuilds a package.
The selected index is fixed to PyPI or TestPyPI, and dependencies are installed
separately from production PyPI.
Before qualifying the candidate, bind a fresh audit and review packet to the final source, replace the development notebook’s branch reference with the candidate tag, collect review findings and user feedback, and resolve their blockers. Rehearse that frozen candidate on TestPyPI and verify artifact hashes. Those external steps and final production publication are not completed by these development checks.
Corrected candidate 0.3.0rc2: TestPyPI rehearsal#
On 2026-10-25, tag v0.3.0rc2 at commit
e44085bd363248a46223ddb4afd9e28aada49278 passed the complete
TestPyPI workflow,
including scientific tests, minimum dependencies, six platform/artifact jobs,
both upgrades, numerical audits, upload and installation outside the checkout.
The candidate documentation/browser run
also passed. The candidate is available on
TestPyPI.
The wheel’s 20 package source/schema files match the frozen reviewer packet. Both published file digests and independently downloaded bytes match the validated workflow artifacts:
Artifact |
SHA-256 |
|---|---|
|
|
|
|
Evidence, workflow logs, audits and hash verification are retained at
/home/reet/ramanujan-qft-0.3.0rc2-release-evidence. The corrected human-review
packet is /home/reet/ramanujan-qft-0.3.0rc2-review.
The preceding rc1 rehearsal was cancelled before upload after discovering missing source-archive review-support files. Its frozen tag is unchanged; rc2 includes those files and validates archive contents in CI.
At the rc2 rehearsal, production remained 0.3.0a5. The maintainer explicitly retained the human scientific-review and outside-user/interactive-Colab gates on 2026-10-25. The successful rehearsal does not mark them complete or authorize stable publication. See Stable-development review findings and disposition and Plan for the first stable release.
Beta 0.3.0b5#
The maintainer authorized production publication as a beta prerelease, including all five implemented engineering objectives and the rc2 review corrections. Human scientific review and outside-user/hosted-Colab feedback remain gates for stable 0.3.0, not completed claims for this beta.
On 2026-10-26, frozen tag v0.3.0b5, commit
a519de91038f77d001c930a4547365a394bc6f51, passed the
TestPyPI rehearsal
and production workflow.
Both workflows passed all 14 validation jobs, uploaded the validated artifacts,
and installed the exact published version outside the checkout. Validation
covered 538 tests (513 fast and 25 slow), dependency minima, Linux/macOS/Windows
wheel and source installs, upgrades from a5, audits, notebooks and documentation.
The frozen commit’s documentation/browser run
also passed.
Both indexes’ published hashes and independently downloaded bytes matched their respective validated builds. All 20 wheel source/schema files matched the frozen source. Production artifacts:
Artifact |
SHA-256 |
|---|---|
|
|
|
|
The GitHub prerelease assets
retain the production distributions, per-index verification records, automated
review and dispositions, audits and source-bound review packet. Local evidence
is retained at /home/reet/ramanujan-qft-0.3.0b5-release-evidence and the human-review
packet at /home/reet/ramanujan-qft-0.3.0b5-review.
The extended audit met all 128 hybrid accuracy targets, with 125/128 reported error estimates covering the reference difference. Three coverage alerts remain explicit; the hybrid evaluator remains experimental. Scientific algorithms and supported domains are unchanged from rc2.
Install this production beta explicitly:
python -m pip install --upgrade "ramanujan-qft==0.3.0b5"
Stable 0.3.0 still requires qualified human scientific review, outside-user and hosted-Colab feedback, and validation of its own final frozen artifacts. The beta publication does not mark these gates complete.