API stability and compatibility#
This is the proposed contract for 0.3.0, implemented for evaluation in beta 0.3.0b5. The interfaces below are candidates for stability, subject to the validation and release gates in Plan for the first stable release. No new stable release is announced by this page.
Stability concerns how callers use a function and interpret its result. Supported mathematical domains and error guarantees are specified separately in Supported calculations and error guarantees; the contract does not broaden those domains.
Interfaces targeted for stability#
Use explicit imports from ramanujan_qft or the documented defining module.
These names and their existing arguments are the proposed compatibility surface:
Group |
Interfaces |
Contract |
|---|---|---|
Basic RMT |
|
Scalar mpmath result; theorem hypotheses remain the caller’s responsibility |
Mellin products |
|
Factory-created factors, scalar result or |
Scalar one-loop |
|
Existing scalar return types, LoopTools conventions and documented kinematic restrictions |
Dispersive sunset |
|
Four-dimensional sunset combinations; derivative names refer to the same calculation |
Graph input |
|
Connected graphs, ordered edges, positive squared masses/powers and exactly conserved Euclidean momenta |
D=2 sunset evaluation |
|
Explicitly chosen method, documented convergence domains, result attributes and typed refusals |
MellinFunction remains importable as the type returned by atlas factories.
Calling a factory-created factor as factor(x) is supported. Its constructor,
build, tail and internal pole data are extension machinery, outside the
stable contract. Use the factories rather than constructing private Mellin data.
sunset_second_derivative(s, m1sq, m2sq, m3sq, dps=None) is the clearer spelling
introduced during this development cycle. sunset_d2 remains supported without
a deprecation warning. Both compute S’’(s) below threshold in the existing
four-dimensional dispersive convention. For a D=2 integral, use one of the
explicit graph evaluators. The new spelling is included in 0.3.0b5 and was absent from 0.3.0a5.
Experimental and legacy interfaces#
The hybrid integrate_graph, MultiloopResult and
MultiloopConvergenceError remain experimental. Their current float64 and
statistical-error behavior is documented, but their interfaces may evolve with
validation and sector improvements. Changes must be described in release notes.
Exact graph algebra and series compilation are inspectable research interfaces:
ScalarGraph.symanzik, ScalarGraph.uv_margins, schwinger_brackets,
BracketSystem, BracketSolution, compile_sunset_rmt, SunsetRMTSeries,
compile_sunset_taylor and SunsetTaylorSeries. Their symbolic expressions,
family ordering and dataclass layouts are not frozen. explain_sunset_rmt and
sunset_rmt_schema provide a separate, provisional version 1 JSON export; see
Inspect and export an RMT calculation. Its schema does not freeze compiler internals.
The version 0.1 classes and modules under core, solvers and utils retain
their documented compatibility behavior; see Legacy interface (version 0.1). Withdrawn
methods continue to raise NotImplementedError. They are not the recommended
interface for new work. An importable symbol is not automatically a stable API;
underscore-prefixed helpers and incidental module imports are internal.
Inputs and conventions#
Feynman mass parameters named
msq,m1sq, etc., and edgemass_squaredare squared masses. Atlas parameters have their own documented meaning; for example,inverse_power(m, v)means(x + m)**(-v).One-loop and dispersive sunset functions use their documented Minkowski signs, branches and normalization. Graph functions use positive Euclidean propagators and
d^D k / pi^(D/2)per loop. No automatic conversion is implied.Preserve documented positional arguments and keyword names. A
dpsrequest concerns decimal precision and numerical checks, not a proof of correctness.sunset_thresholduses the current mpmath context rather than adpsargument.Exact decimal inputs should be strings. Passing a binary float cannot restore decimal digits already lost before the call. Precision checks must not leave a changed global mpmath precision behind.
An explicitly requested RMT or Taylor calculation never silently becomes a hybrid numerical calculation. Optional analytic continuation of Mellin products requires
continuation=True; it need not represent a convergent integral.
Results and diagnostics#
Scalar routines retain mpmath results rather than introducing a common wrapper. The graph series retain result objects. Read their attributes by name; their positional constructors, textual representation and pickled form are not a serialization contract.
Result |
Attributes callers may rely on |
|---|---|
|
Tuple |
|
|
|
|
chart identifies momentum or mass in the current RMT evaluator. method
is explanatory text: display it, but do not parse its wording for control flow.
Additional diagnostic keys or attributes may be added; callers should tolerate
them. Numerical values, work counts and working precision can change as accuracy
or efficiency improves. Compatibility does not promise identical floating-point
bits, identical timings or identical automatic chart selection.
truncation_bound bounds the mathematical series tail with the documented
working-precision qualifications. error_estimate also includes estimated
arithmetic effects. Neither provides a full interval-arithmetic enclosure.
The experimental hybrid diagnostics have statistical meanings described in
Massive Euclidean multiloop graphs; they must not be treated as series tail bounds.
Exceptions#
Catch documented types, not exact message strings. The following distinctions are retained; the function-specific reference documents individual cases:
Condition |
Handling |
|---|---|
Invalid numeric inputs or a divergent requested Mellin integral |
|
Wrong graph object passed to a graph series evaluator |
|
Unsupported series topology, dimension, propagator powers or Taylor mass pattern |
|
Supported RMT topology outside all implemented convergence charts |
|
Mellin series cannot reach its target |
|
RMT/Taylor work or precision budget exhausted |
|
Scalar quadrature or precision agreement fails |
|
RMT/Taylor convergence exceptions expose .result, which can be None when
no partial evaluation was possible. A partial result is not a successful return;
inspect its diagnostics and do not assume that it meets the requested tolerance.
The experimental hybrid convergence exception likewise carries its estimate.
Some invalid work-budget inputs raise ValueError before evaluation.
Change policy for the stable line#
Once 0.3.0 is released, compatible 0.3.x changes may add optional keyword arguments, diagnostics or supported inputs while preserving existing calls and meanings. Existing argument defaults are part of the contract. A bug fix may correct a value, error estimate or previously unsafe acceptance; it must be explained in the changelog and accompanied by a regression against a reference. Never preserve a known wrong answer for compatibility.
An incompatible rename or removal of a stable interface requires a documented
migration path and a DeprecationWarning for at least two released versions
and at least 90 days, whichever is longer, before removal in a later minor or
major line. Urgent correctness restrictions may take effect immediately with
an explicit release note. No such removal is scheduled for sunset_d2.
The compatibility tests retain the baseline calling signatures, required result fields and exception relationships. Existing numerical tests establish the mathematical behavior; these contract tests do not replace them. Changes to the baseline require a review of this policy and the migration notes.