7d96a796

By: ValentinHirschi <valentin.hirschi@gmail.com>

add rustred scalar reduction through two loops

Implement the first Vakint integration milestone of the requested Stage 1 plan: ship the sealed K=1 and K=3 artifacts, consume the existing matcher/routing witness, lower exact scalar numerators, reduce to typed masters without FORM, and reuse Vakint's pure-Rust master finalization. Existing evaluation defaults and the FORM tensor prepass remain unchanged.

Requested plan (verbatim):

PLEASE IMPLEMENT THIS PLAN:
# Stage 1: Closing IBPs through three loops and Vakint integration

## Summary

- After the green light, create the currently absent tool-managed goal scoped to Stage 1, then revise GOAL.md, README, and stable technical docs so this staged directive supersedes the old active six-loop/tensor roadmap.
- Treat the existing one-loop recurrence and two-loop sunset rule as useful foundations, not yet as closed artifacts: RustRed still lacks complete closure, artifact publication, and recursive application.
- Freeze the existing experimental RustRed tensor code without removing or extending it. Stage 1 keeps Vakint’s FORM tensor prepass unchanged.
- Stage 2—new tensor technology, extreme scaling work, and four- through six-loop closure—remains explicitly prohibited until new guidance and approval.

## Stage 1 implementation

- Freeze a matcher-derived manifest containing all eight Vakint graph classes through three loops: one 1L class, the 2L sunset and its pinch, and the 3L K4/Mercedes parent plus four inequivalent contractions.
- Produce three sector-complete unit-mass family artifacts: K=1, K=3, and K=6. The single K4 artifact must prove coverage of all five three-loop graph classes.
- Complete the generic foundry with translated-source search, exact coefficient/guard applicability, exceptional-domain refinement, symmetry/zero/factorization handling, immutable lower-sector feedback, explicit master terminals, and deterministic fixed-point closure. Required ordinary-source counts are 1, 4, and 9.
- Add versioned immutable artifact ownership and a deterministic, memoized, strictly descending rule applier. Validate artifacts once at the untrusted load boundary; do not repeat expensive authentication in the hot path.
- Restore a general common mass after unit-scale reduction by dimensional homogeneity, including the coefficient factor (m²)^(Σmaster−Σtarget).
- Extend the existing Rust library, campaign CLI, and import rustred Python API with closing-artifact generation, inspection, and reduction/application surfaces. Algorithms remain topology- and loop-count-generic despite the Stage 1 pressure targets.

## Vakint interface

- On the existing vakint_rustred branch, add the opt-in scalar backend EvaluationMethod::RustRed(RustRedEvaluationOptions) and EvaluationOrder::rustred_only() without changing defaults or existing method behavior.
- The adapter consumes Vakint’s existing topology match and simultaneous routing witness; it must not rematch graphs or dispatch on topology names.
- RustRed returns exact coefficients of typed integral-key masters. Vakint maps these to the existing MATAD master basis and reuses only its pure-Rust master substitution/evaluation machinery—never its FORM reduction.
- RustRedEvaluationOptions exposes master substitution control, defaulting to substitution enabled. The scalar backend reports no FORM dependency and never invokes or falls back to FORM.
- Production artifacts are generated once, checked into and shipped with Vakint, loaded once, and never regenerated during ordinary evaluation. Local-path RustRed dependencies may be used during development; pushed GammaLoop milestones pin the corresponding RustRed Git revision.

## Validation and milestones

1. Commit and push the authoritative staged goal/documentation update.
2. Close and publish the 1L artifact together with the artifact/reducer spine.
3. Close 2L, cover its pinch, and expose the Rust/CLI/Python application APIs.
4. In parallel with 3L closure, integrate and validate Vakint RustRed reduction through 2L.
5. Close the K=6 family and prove coverage of all five registered 3L classes.
6. Pass all applicable single-scale Vakint tests through 3L, update documentation, commit and push both repositories, then pause.

Acceptance requires:

- exact regenerated-source replay, strict descent, explicit terminals, and zero uncovered branches for every artifact;
- deterministic results across supported worker counts;
- reducer tests for guard selection, termination, memoization, symmetry routing, master-only output, and non-unit-mass restoration;
- exact raw master-coefficient comparison against AlphaLoop/MATAD oracles and matching existing Laurent-series references;
- scalar RustRed tests with an invalid FORM path;
- tensor-bearing acceptance tests using the unchanged FORM tensor prepass followed by the FORM-free RustRed scalar tail;
- unchanged Vakint defaults and backward-compatibility tests;
- optional PySecDec comparisons as non-gating supplemental checks.

Every milestone receives delegated implementation and independent audit passes. Every Git operation uses the requested ValentinHirschi identity, and reference-only content is never committed to RustRed.
GitHub
gammaloop-checkgammaloop-clippygammaloop-docgammaloop-fmtgammaloop-guppy-workspace-graphgammaloop-nextest-binaries-clinnetgammaloop-nextest-binaries-coregammaloop-nextest-binaries-integrationgammaloop-nextest-binaries-linnetgammaloop-nextest-binaries-python-apigammaloop-nextest-binaries-spensogammaloop-nextest-binaries-vakintlinnest-wasmconfiguredeploy:nix-ci-passedclinnetdevShellfullcargoArtifactsci-workspace-graph-jsonclinnetclinnet-clicrate-deps-gammaloop-workspace-hackcrate-deps-gammalooprscrate-test-binaries-clinnetcrate-test-binaries-gammaloop-apicrate-test-binaries-gammaloop-integration-testscrate-test-binaries-gammaloop-tracing-filtercrate-test-binaries-gammaloop-tracing-filter-macroscrate-test-binaries-gammalooprscrate-test-binaries-idensocrate-test-binaries-kurvstcrate-test-binaries-linnestcrate-test-binaries-linnetcrate-test-binaries-linnet-pycrate-test-binaries-python-api-gammaloop-integration-testscrate-test-binaries-spensocrate-test-binaries-spenso-hep-libcrate-test-binaries-spenso-macroscrate-test-binaries-symbolica-utilscrate-test-binaries-vakintcrate-test-dependencies-clinnetcrate-test-dependencies-gammaloop-apicrate-test-dependencies-gammaloop-integration-testscrate-test-dependencies-gammaloop-tracing-filtercrate-test-dependencies-gammaloop-tracing-filter-macroscrate-test-dependencies-gammalooprscrate-test-dependencies-idensocrate-test-dependencies-kurvstcrate-test-dependencies-linnestcrate-test-dependencies-linnet-pycrate-test-dependencies-python-api-gammaloop-integration-testscrate-test-dependencies-spensocrate-test-dependencies-spenso-hep-libcrate-test-dependencies-symbolica-utilscrate-test-dependencies-vakintgammaloopgammaloop-python-modulegammaloopApiPackageArtifactslinnest-wasmlinnestWasmCargoArtifactsnix-ci-check-gammaloop-doctestnix-ci-check-gammaloop-nextest-clinnetnix-ci-check-gammaloop-nextest-corenix-ci-check-gammaloop-nextest-integrationnix-ci-check-gammaloop-nextest-linnetnix-ci-check-gammaloop-nextest-python-apinix-ci-check-gammaloop-nextest-spensonix-ci-check-gammaloop-nextest-vakintnix-ci-passedx86_64-linuxtest:nix-ci-check-gammaloop-doctesttest:nix-ci-check-gammaloop-nextest-clinnettest:nix-ci-check-gammaloop-nextest-coretest:nix-ci-check-gammaloop-nextest-integrationtest:nix-ci-check-gammaloop-nextest-linnettest:nix-ci-check-gammaloop-nextest-python-apitest:nix-ci-check-gammaloop-nextest-spensotest:nix-ci-check-gammaloop-nextest-vakint