Skip to main content

Fusion Check — The Fusion Threshold Law (FAD)

Author: Jose Miguel Madueño Ortega · MIT · free and open

Fuse trained models with a predictable criterion. Before fusing, the Fusion Threshold Law decides whether your pair of models is compatible, which mix (α) to use, and the expected per-task retention — without running the models, without evaluation data, in under one second. If the law approves, it merges for you (native weight fusion or mergekit) and leaves the model ready as GGUF for llama.cpp.

fusion-check detectar                                    # what can my machine run?
fusion-check verificar base/ m1/ m2/ --acc1 0.76 --acc2 0.83   # the law decides
fusion-check fusionar  base/ m1/ m2/ --acc1 0.76 --acc2 0.83   # native merge + GGUF
fusion-check probar fusion_xxx/model "Once upon a time"         # generate text

The scientific paper is in paper/The Fusion Threshold Law (CC BY 4.0), with formal (z3) and empirical validation.

The law

Let τᵢ be the task vector of model i and the fusion τ_f = α·τ₁ + (1−α)·τ₂. In the high-dimensional limit, the retention of task i after fusing obeys:

R_i  ≈  1 − (1−α)² · γᵢ        with   γᵢ = 2(1 − cos²θ_ij) / d_eff
E[e²] = 2(1−α)²·(1−cos²θ)/d_eff        (mean task error under convex fusion)
  • θ_ij — angle between task vectors (real cosine of the weight deltas)
  • d_eff — effective dimensionality of the task kernel
  • Threshold: cos²θ ≥ 1 − δ²·d_eff/(2(1−α)²) separates "preserves" from "degrades"

With per-side calibrated retention (13 measured pairs, LOOCV corr 0.81, 9/13 correct decisions):

R̂ᵢ = 0.8035 + 8.3267·c − 0.0229·acc_i − 0.2096·acc_j

and the closed-form optimal mixing coefficient (maximizes min(R₁,R₂), verified symbolically and numerically):

α* = √γ₁ / (√γ₁ + √γ₂)

The law is established by three independent routes: analytic derivation, formal verification with the z3 SMT solver (NLSat, real nonlinear arithmetic — theorems T1–T3 plus 28 supporting theorems on projector composition), and empirical validation on real models (embedding-space check on a live transformer with machine-precision agreement ~1e−16; 13-pair fine-tuning study).

Decision policy (FAD v2)

Regime Condition Action
REFUSE any acc < 0.65 model did not learn: don't merge, train
MERGE min(R̂₁,R̂₂) ≥ 0.90 and |Δacc| ≤ 0.05 weight soup, α = 0.50
NO_MERGE min(R̂₁,R̂₂) < 0.80 would degrade: route or ensemble
PRIORITIZE asymmetry > 0.05 balanced mix with α*
VERIFY gray zone mini-test at low α before deciding

Install

git clone <this-repository>
cd fusion-check
pip install -e .                # core (verify, detect, catalog)
pip install -e ".[gguf]"       # + GGUF conversion (gguf, sentencepiece)
# mergekit is optional (pip install mergekit): the tool falls back to native
# weight fusion, which needs no extra dependencies.
# llama.cpp (https://github.com/ggml-org/llama.cpp) is needed only to convert
# to GGUF (its convert_hf_to_gguf.py script) and to probe GGUF models.

Usage

# 1) What can my machine run? (RAM, CPU, disk → models that fit)
fusion-check detectar

# 2) The law decides — no merging, no evaluation data, < 1 s
fusion-check verificar tiny-stories-base/ ft_a/ ft_b/ --acc1 0.76 --acc2 0.83

# 3) If the law approves: merge → GGUF ready for llama.cpp
fusion-check fusionar tiny-stories-base/ ft_a/ ft_b/ --acc1 0.76 --acc2 0.83

# 4) Probe the fused model (transformers, or llama-cli for .gguf)
fusion-check probar fusion_ft_a__ft_b__a0.50/model "Once upon a time"

Pass --d <d_eff> if you know the effective dimensionality of the task kernel; otherwise it is estimated from the delta spectrum (the full calibrated decision needs the fine-tune accuracies).

Why it exists

Blind "soup" (weight averaging) always merges — and when the models are specialists of different tasks, it degrades. FAD provides the necessary and sufficient condition on the task kernel to know beforehand whether the fusion preserves behavior, and the α* to balance it. Demonstrated on a real model (TinyStories-3M, LoRA): two weak, diverse estimators of the same task (0.756/0.762) → soup 0.822; two orthogonal specialists → the law says NO_MERGE and prevents the dilution.

Honesty

  • The per-side predictor is calibrated on 13 pairs (LOOCV 0.81): reliable outside the gray zone; inside it, it tells you (confidence: media/baja).
  • Fusing specialists of different tasks does not synthesize capability: it dilutes. The real gain is soup of estimators of the same task.
  • Out-of-calibration cosines fall back to the pure law with a low-confidence flag; the estimated d_eff is labeled as optimistic.
  • Nothing is uploaded or run on servers: everything is local.

Verification

python -m pytest tests/          # 13 lab pairs + policy + α* + brand

License

MIT — see LICENSE. No patents: the method and the code are free (decision of the author, 2026).


Fusion Threshold Law — discovered by Jose Miguel Madueño Ortega (2026).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fusion_check-0.1.0.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fusion_check-0.1.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file fusion_check-0.1.0.tar.gz.

File metadata

  • Download URL: fusion_check-0.1.0.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for fusion_check-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3a8144718c6b35ca51c7dda96daa46942f6f1a3de00dc3bbd728eee468ff374f
MD5 6aa9bcd408cf2f8dbb49b51c436030b0
BLAKE2b-256 d4ff849122e28d0a160db9ca9c8f0807e5c2c95c80caf1585ae89a5fc720266b

See more details on using hashes here.

File details

Details for the file fusion_check-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fusion_check-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for fusion_check-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c03e549867a56607ebcacaf699ff0f0e1f74e576ee2318a11a2e0a938a990e36
MD5 e5f923dfd07b7d28c7acd8e9d4f0dbf5
BLAKE2b-256 b8ad7f86feb6c92fe269d0f7a4e56c41cdd3bb026e022e866dead59be07da44a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page