fusepoint 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ # License Notice
2
+
3
+ This software is licensed under a **dual-license model**:
4
+
5
+ 1. **For Open Source and Non-Commercial Use**
6
+ - Licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**.
7
+ - You may use, modify, and distribute this software **provided that any derivative works are also licensed under the AGPL-3.0**.
8
+ - See `license_AGPL.txt` for full license terms.
9
+
10
+ 2. **For Commercial Use**
11
+ - Companies, organizations, and other commercial entities **must obtain a commercial license**.
12
+ - The commercial license allows proprietary use without the copyleft requirements of the AGPL.
13
+ - See `license_COMMERCIAL.txt` for details and contact information.
14
+
15
+ By using this software, you agree to these terms.
16
+ For commercial licensing inquiries, contact: **nfo@forgottenforge.xyz**
17
+
18
+ ---
19
+
20
+ ## Summary of Key Terms
21
+
22
+ | License Type | Permitted Uses | Restrictions |
23
+ |---------------|----------------|---------------|
24
+ | **AGPL-3.0** (for open-source / non-commercial use) | Free use, modification, redistribution under AGPL | Must disclose source code of modified versions and networked services |
25
+ | **Commercial License** (for companies) | Proprietary use, closed-source integration, internal business use | Requires commercial agreement, no resale without consent |
26
+
27
+ For full details, see:
28
+ - `license_AGPL.txt`
29
+ - `license_COMMERCIAL.txt`
@@ -0,0 +1,164 @@
1
+ Metadata-Version: 2.4
2
+ Name: fusepoint
3
+ Version: 0.1.0
4
+ Summary: Fuse — find where your system breaks, before it does.
5
+ Author-email: Forgotten Forge <nfo@forgottenforge.xyz>
6
+ License-Expression: AGPL-3.0-or-later
7
+ Project-URL: Homepage, https://www.forgottenforge.xyz
8
+ Project-URL: Repository, https://github.com/forgottenforge/fusepoint
9
+ Project-URL: Documentation, https://github.com/forgottenforge/fusepoint#readme
10
+ Keywords: tipping-point,stability,phase-transition,critical-point,data-analysis
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Topic :: Scientific/Engineering
16
+ Requires-Python: >=3.9
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ License-File: license_AGPL.txt
20
+ License-File: license_COMMERCIAL.txt
21
+ Requires-Dist: numpy>=1.22
22
+ Requires-Dist: scipy>=1.9
23
+ Requires-Dist: matplotlib>=3.6
24
+ Requires-Dist: pandas>=1.5
25
+ Dynamic: license-file
26
+
27
+ # Fuse
28
+ [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
29
+ [![Commercial License](https://img.shields.io/badge/License-Commercial-orange.svg)](mailto:nfo@forgottenforge.xyz)
30
+ [![Version](https://img.shields.io/badge/version-0.1.0-green.svg)](https://pypi.org/project/fusepoint/)
31
+ [![Python](https://img.shields.io/badge/python-%E2%89%A53.9-blue.svg)](https://python.org)
32
+ [![Status](https://img.shields.io/badge/status-production-success.svg)]()
33
+
34
+ **Know your breaking point.**
35
+
36
+ One function. Two columns of data. A publication-quality Fuse Report.
37
+
38
+ ```python
39
+ from fusepoint import analyze
40
+
41
+ card = analyze(x, y, current_x=0.01)
42
+ print(card.score) # 87
43
+ card.save("fuse_report.png")
44
+ ```
45
+
46
+ ## What it does
47
+
48
+ You have a parameter you turn and a result you measure. Fuse tells you:
49
+
50
+ - **Where the tipping point is** (and how sure it is — bootstrap CI)
51
+ - **Whether it's real or noise** (permutation test, not guessing)
52
+ - **How sharp it is** (k — is it a cliff or a gentle slope?)
53
+ - **How safe you are** (distance to the edge, as a percentage)
54
+ - **A single Stability Score** from 0 to 100
55
+
56
+ All of this in a beautiful Fuse Report you can screenshot, share, put in a presentation.
57
+
58
+ ## Install
59
+
60
+ ```bash
61
+ pip install fusepoint
62
+ ```
63
+
64
+ Dependencies: numpy, scipy, matplotlib, pandas. That's it.
65
+
66
+ ## Quick Start
67
+
68
+ ### Array mode
69
+
70
+ ```python
71
+ import numpy as np
72
+ from fusepoint import analyze
73
+
74
+ lr = np.linspace(1e-5, 0.1, 80)
75
+ loss = your_training_function(lr)
76
+
77
+ card = analyze(lr, loss, current_x=0.01,
78
+ x_name="Learning Rate", y_name="Loss",
79
+ label="Training Stability")
80
+ print(card.score) # 87 — you're safe
81
+ print(card.critical_x) # 0.035 — this is where it blows up
82
+ card.save("lr_report.png")
83
+ ```
84
+
85
+ ### DataFrame mode — the natural API
86
+
87
+ ```python
88
+ import pandas as pd
89
+ from fusepoint import analyze
90
+
91
+ df = pd.read_csv("server_metrics.csv")
92
+ card = analyze(df, x="concurrent_requests", y="response_time_ms",
93
+ current_x=5000, label="Production Server")
94
+ card.save("server_report.png")
95
+ ```
96
+
97
+ Column names become axis labels automatically.
98
+
99
+ ### Scan mode — analyze everything at once
100
+
101
+ ```python
102
+ from fusepoint import scan
103
+
104
+ results = scan("data.csv") # auto-detect x, analyze all y columns
105
+ results = scan(df, x="time", top_n=5) # explicit x, top 5 results
106
+
107
+ for r in results:
108
+ print(f"{r.y_name}: {r.score} ({r.grade})")
109
+ r.save(f"{r.y_name}_report.png")
110
+ ```
111
+
112
+ Accepts CSV, TSV, JSON (Plotly, Elasticsearch, Pandas formats), Excel, and Parquet.
113
+
114
+ ### Before / After — the comparison
115
+
116
+ ```python
117
+ from fusepoint import compare
118
+
119
+ delta = compare(x, y_before, x, y_after,
120
+ current_x=0.2,
121
+ label_before="Before Fix",
122
+ label_after="After Fix")
123
+ print(delta.delta_score) # +18 points
124
+ delta.save("improvement.png")
125
+ ```
126
+
127
+ ## The Score
128
+
129
+ The Stability Score (0-100) is built from four independently validated
130
+ statistical components:
131
+
132
+ | Component | Weight | What it measures |
133
+ |-----------|--------|-----------------|
134
+ | **Detection** | 40% | Is the tipping point real? (permutation p-value) |
135
+ | **Clarity** | 20% | How sharp is it? (k = peak/mean ratio) |
136
+ | **Precision** | 15% | How precisely located? (CI width / range) |
137
+ | **Safety** | 25% | How far from the edge? (margin / range) |
138
+
139
+ The score is **self-calibrating**: Detection is measured against your own data's
140
+ null distribution, not against arbitrary thresholds.
141
+
142
+ ## What it's NOT
143
+
144
+ - Not a curve fitter (use scipy for that)
145
+ - Not an anomaly detector (use isolation forests for that)
146
+ - Not a time-series tool (use ruptures for changepoint detection)
147
+
148
+ Fuse finds **parameter-space tipping points** — the critical value of a
149
+ knob where your system's behavior qualitatively changes. And it tells you how
150
+ confident it is.
151
+
152
+ ## Built on
153
+
154
+ The mathematics behind Fuse come from [sigmacore](https://github.com/forgottenforge/sigmacore),
155
+ a peer-reviewed universal criticality analysis framework published in
156
+ [AVS Quantum Science](https://doi.org/10.1116/5.0254846).
157
+ Fuse is the simple door to that building.
158
+
159
+ ## License
160
+
161
+ Copyright (c) 2026 Forgotten Forge — [forgottenforge.xyz](https://www.forgottenforge.xyz)
162
+
163
+ Dual-licensed: **AGPL-3.0** for open-source use, **commercial licenses** available.
164
+ Contact nfo@forgottenforge.xyz for commercial inquiries.
@@ -0,0 +1,138 @@
1
+ # Fuse
2
+ [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
3
+ [![Commercial License](https://img.shields.io/badge/License-Commercial-orange.svg)](mailto:nfo@forgottenforge.xyz)
4
+ [![Version](https://img.shields.io/badge/version-0.1.0-green.svg)](https://pypi.org/project/fusepoint/)
5
+ [![Python](https://img.shields.io/badge/python-%E2%89%A53.9-blue.svg)](https://python.org)
6
+ [![Status](https://img.shields.io/badge/status-production-success.svg)]()
7
+
8
+ **Know your breaking point.**
9
+
10
+ One function. Two columns of data. A publication-quality Fuse Report.
11
+
12
+ ```python
13
+ from fusepoint import analyze
14
+
15
+ card = analyze(x, y, current_x=0.01)
16
+ print(card.score) # 87
17
+ card.save("fuse_report.png")
18
+ ```
19
+
20
+ ## What it does
21
+
22
+ You have a parameter you turn and a result you measure. Fuse tells you:
23
+
24
+ - **Where the tipping point is** (and how sure it is — bootstrap CI)
25
+ - **Whether it's real or noise** (permutation test, not guessing)
26
+ - **How sharp it is** (k — is it a cliff or a gentle slope?)
27
+ - **How safe you are** (distance to the edge, as a percentage)
28
+ - **A single Stability Score** from 0 to 100
29
+
30
+ All of this in a beautiful Fuse Report you can screenshot, share, put in a presentation.
31
+
32
+ ## Install
33
+
34
+ ```bash
35
+ pip install fusepoint
36
+ ```
37
+
38
+ Dependencies: numpy, scipy, matplotlib, pandas. That's it.
39
+
40
+ ## Quick Start
41
+
42
+ ### Array mode
43
+
44
+ ```python
45
+ import numpy as np
46
+ from fusepoint import analyze
47
+
48
+ lr = np.linspace(1e-5, 0.1, 80)
49
+ loss = your_training_function(lr)
50
+
51
+ card = analyze(lr, loss, current_x=0.01,
52
+ x_name="Learning Rate", y_name="Loss",
53
+ label="Training Stability")
54
+ print(card.score) # 87 — you're safe
55
+ print(card.critical_x) # 0.035 — this is where it blows up
56
+ card.save("lr_report.png")
57
+ ```
58
+
59
+ ### DataFrame mode — the natural API
60
+
61
+ ```python
62
+ import pandas as pd
63
+ from fusepoint import analyze
64
+
65
+ df = pd.read_csv("server_metrics.csv")
66
+ card = analyze(df, x="concurrent_requests", y="response_time_ms",
67
+ current_x=5000, label="Production Server")
68
+ card.save("server_report.png")
69
+ ```
70
+
71
+ Column names become axis labels automatically.
72
+
73
+ ### Scan mode — analyze everything at once
74
+
75
+ ```python
76
+ from fusepoint import scan
77
+
78
+ results = scan("data.csv") # auto-detect x, analyze all y columns
79
+ results = scan(df, x="time", top_n=5) # explicit x, top 5 results
80
+
81
+ for r in results:
82
+ print(f"{r.y_name}: {r.score} ({r.grade})")
83
+ r.save(f"{r.y_name}_report.png")
84
+ ```
85
+
86
+ Accepts CSV, TSV, JSON (Plotly, Elasticsearch, Pandas formats), Excel, and Parquet.
87
+
88
+ ### Before / After — the comparison
89
+
90
+ ```python
91
+ from fusepoint import compare
92
+
93
+ delta = compare(x, y_before, x, y_after,
94
+ current_x=0.2,
95
+ label_before="Before Fix",
96
+ label_after="After Fix")
97
+ print(delta.delta_score) # +18 points
98
+ delta.save("improvement.png")
99
+ ```
100
+
101
+ ## The Score
102
+
103
+ The Stability Score (0-100) is built from four independently validated
104
+ statistical components:
105
+
106
+ | Component | Weight | What it measures |
107
+ |-----------|--------|-----------------|
108
+ | **Detection** | 40% | Is the tipping point real? (permutation p-value) |
109
+ | **Clarity** | 20% | How sharp is it? (k = peak/mean ratio) |
110
+ | **Precision** | 15% | How precisely located? (CI width / range) |
111
+ | **Safety** | 25% | How far from the edge? (margin / range) |
112
+
113
+ The score is **self-calibrating**: Detection is measured against your own data's
114
+ null distribution, not against arbitrary thresholds.
115
+
116
+ ## What it's NOT
117
+
118
+ - Not a curve fitter (use scipy for that)
119
+ - Not an anomaly detector (use isolation forests for that)
120
+ - Not a time-series tool (use ruptures for changepoint detection)
121
+
122
+ Fuse finds **parameter-space tipping points** — the critical value of a
123
+ knob where your system's behavior qualitatively changes. And it tells you how
124
+ confident it is.
125
+
126
+ ## Built on
127
+
128
+ The mathematics behind Fuse come from [sigmacore](https://github.com/forgottenforge/sigmacore),
129
+ a peer-reviewed universal criticality analysis framework published in
130
+ [AVS Quantum Science](https://doi.org/10.1116/5.0254846).
131
+ Fuse is the simple door to that building.
132
+
133
+ ## License
134
+
135
+ Copyright (c) 2026 Forgotten Forge — [forgottenforge.xyz](https://www.forgottenforge.xyz)
136
+
137
+ Dual-licensed: **AGPL-3.0** for open-source use, **commercial licenses** available.
138
+ Contact nfo@forgottenforge.xyz for commercial inquiries.
@@ -0,0 +1,26 @@
1
+ """
2
+ Fuse — Find where your system breaks, before it does.
3
+
4
+ Usage:
5
+ from fusepoint import analyze
6
+ card = analyze(x, y, x_name="Load", y_name="Latency")
7
+ card = analyze(df, x="load", y="latency") # DataFrame mode
8
+ print(card.score)
9
+ card.save("stability.png")
10
+
11
+ https://www.forgottenforge.xyz
12
+ """
13
+
14
+ from fusepoint.core import analyze, scan, compare
15
+ from fusepoint.result import StabilityResult
16
+ from fusepoint.parsers import parse_json, detect_x_column
17
+
18
+ __version__ = "0.1.0"
19
+ __all__ = [
20
+ "analyze",
21
+ "scan",
22
+ "compare",
23
+ "StabilityResult",
24
+ "parse_json",
25
+ "detect_x_column",
26
+ ]