Real-time streaming anomaly detection via a Three-Channel Dissipative Network Model
Project description
Fracttalix Sentinel v12.1
Streaming anomaly detection grounded in the Three-Channel Model of Dissipative Network Information Transmission — extended with four physics-derived capabilities from Session 36.
Sentinel ingests one scalar (or multivariate) observation at a time and emits a rich result dictionary on every call — no batching, no retraining, no warmup gap once past the configurable warmup window.
Theoretical foundation: Fractal Rhythm Model Papers 1–6 DOI: 10.5281/zenodo.18859299 License: CC0 — public domain
Full documentation | Examples | CHANGELOG
Table of Contents
- Overview
- Three-Channel Model
- V12.1 Changes
- Installation
- Quick Start
- SentinelConfig — Configuration
- Pipeline Architecture — 37 Steps
- Alert Types and Data Structures
- SentinelResult API
- MultiStreamSentinel
- SentinelBenchmark
- SentinelServer — REST API
- CLI Reference
- Backward Compatibility
- Theoretical Foundation
- Authors & License
Overview
Fracttalix Sentinel is a Python package (pip install fracttalix) for real-time streaming anomaly detection. Its design priorities are:
- Zero external dependencies for core operation — works on the Python standard library alone; numpy, scipy, numba, matplotlib, and tqdm are optional accelerators.
- Immutable, inspectable configuration —
SentinelConfigis a frozen dataclass; every parameter is readable and picklable. - Composable pipeline — 37
DetectorStepsubclasses execute in sequence. - Three-channel anomaly model — monitors structural properties, broadband rhythmicity, and temporal degradation sequences as independent information channels.
- Physics-derived collapse dynamics — maintenance burden, PAC pre-cascade detection, diagnostic window estimation, and reversed sequence detection derived from the Kuramoto synchronization framework.
- Full backward compatibility — all v7.x, v8.0, v9.0, and v10.0 call patterns continue to work unchanged.
Three-Channel Model
Implemented from Meta-Kaizen Paper 6:
| Channel | Name | What it monitors |
|---|---|---|
| 1 | Structural | Network topology as active transmitter — mean, variance, skewness, kurtosis, autocorrelation, stationarity |
| 2 | Rhythmic | Broadband multiplexed oscillatory transmission — FFT decomposition into five carrier-wave bands and cross-frequency phase-amplitude coupling |
| 3 | Temporal | One-way irreversible carrier wave — temporal sequence and ordering of channel degradation events |
Degradation cascade logic (v9.0):
Band anomaly detected → Cross-frequency coupling degrades →
Structural-rhythmic channels decouple → CASCADE PRECURSOR (CRITICAL)
Extended diagnostics (v10.0):
PAC pre-cascade detected → Δt window opens → Maintenance burden μ → 1 →
Coupling rate dκ̄/dt negative → Collapse imminent
V12.1 Changes
Bug Fixes
- VarCUSUM non-reset (
VarCUSUMStep): accumulatorss_hi/s_lonow re-arm after each threshold crossing. Normal alert rate: 97% → 35.6%. - ChannelCoherence unit mismatch (
ChannelCoherenceStep): replaced rate-difference formula with Pearson correlation (scale-invariant). Normal data now scores ~0.5 above threshold.
v12.1 Benchmark (n=1000, seed=42)
| Archetype | F1 | Normal alert rate |
|---|---|---|
| point | 0.415 | — |
| contextual | 0.247 | — |
| collective | 0.239 | — |
| drift | 0.723 | — |
| variance | 0.876 | — |
| normal | — | 35.6% |
Physics-Derived Capabilities
Four capabilities derived from the Kuramoto synchronization framework (added v10.0):
1. Maintenance Burden μ (Tainter Regime Detection)
μ = N · κ̄ · E_coupling / P_throughput
When μ → 1, the network spends all energy on coupling maintenance with zero adaptive reserve — the Tainter collapse condition.
| μ range | Regime | Meaning |
|---|---|---|
| < 0.5 | HEALTHY |
Full adaptive reserve |
| 0.5 – 0.75 | REDUCED_RESERVE |
Adaptive capacity diminishing |
| 0.75 – 0.9 | TAINTER_WARNING |
Approaching critical burden |
| ≥ 0.9 | TAINTER_CRITICAL |
Spending all energy on maintenance |
mb = result.get_maintenance_burden()
# {"mu": 0.82, "regime": "TAINTER_WARNING"}
2. PAC Pre-Cascade Detection (Extended Diagnostic Window)
Phase-Amplitude Coupling (PAC) measures the depth of nonlinear coupling architecture — the structural memory of the network. PAC degrades before mean coupling strength κ̄ measurably decreases, providing an earlier warning signal than the v9.0 cascade precursor.
Method: Modulation Index (Tort et al. 2010) across 6 slow-phase/fast-amplitude band pairs.
pac = result.get_pac_status()
# {"mean_pac": 0.41, "degradation_rate": 0.18, "pre_cascade_pac": True}
3. Diagnostic Window Δt Estimation (Time-to-Collapse)
Δt = (κ̄ - κ_c) / |dκ̄/dt|
The estimated number of observations remaining before coherence collapse, given current coupling strength and its rate of change. Sentinel stops just detecting that collapse is coming and starts estimating when.
- Only active when κ̄ > κ_c and dκ̄/dt < 0
- Confidence graded:
HIGH/MEDIUM/LOWbased on rate stability - Detects supercompensation (adaptive recovery in progress)
dw = result.get_diagnostic_window()
# {"steps": 47.3, "confidence": "HIGH", "supercompensation": False}
4. Reversed Sequence Detection (Intervention Signature)
The thermodynamic arrow of network collapse is irreversible: coupling degrades before coherence collapses. A reversed sequence — coherence collapsing before coupling degrades — indicates:
- Measurement error
- Non-universality class membership
- Deliberate external intervention (a civilization being collapsed vs. one that collapses)
if result.is_reversed_sequence():
sig = result.get_intervention_signature()
# {"score": 0.74, "sequence_type": "REVERSED",
# "phi_rate": -0.18, "coupling_rate": -0.01}
Installation
pip install fracttalix # zero dependencies — pure stdlib core
pip install fracttalix[fast] # + numpy, scipy
pip install fracttalix[full] # + numpy, scipy, numba, matplotlib, tqdm
Optional accelerators (install any or none):
pip install numpy # FFT, PAC computation, Hilbert transform
pip install scipy # scipy.signal.hilbert (falls back to numpy)
pip install numba # JIT compilation for hot loops
pip install matplotlib # plot_history() dashboard
pip install tqdm # progress bars in benchmark
Run tests (405 tests, all expected to pass):
pip install fracttalix[dev] # pytest, ruff, mypy, mkdocs
pytest
Quick Start
Basic scalar stream
from fracttalix import SentinelDetector, SentinelConfig
det = SentinelDetector(SentinelConfig.production())
for value in my_data_stream:
result = det.update_and_check(value)
if result["alert"]:
print(f"Step {result['step']}: {result['alert_reasons']}")
Collapse dynamics
result = det.update_and_check(value)
# Tainter regime
mb = result.get_maintenance_burden()
if mb["regime"] == "TAINTER_CRITICAL":
print(f"Tainter critical: μ={mb['mu']:.2f}")
# PAC pre-cascade (earlier warning than cascade precursor)
pac = result.get_pac_status()
if pac["pre_cascade_pac"]:
print("PAC pre-cascade: coupling architecture degrading")
# Time to collapse estimate
dw = result.get_diagnostic_window()
if dw["steps"] is not None:
print(f"Δt ≈ {dw['steps']:.0f} steps ({dw['confidence']} confidence)")
if dw["supercompensation"]:
print("Supercompensation detected — adaptive recovery in progress")
# Intervention signature
if result.is_reversed_sequence():
sig = result.get_intervention_signature()
print(f"Reversed sequence — intervention score {sig['score']:.2f}")
V9.0 three-channel status
if result.is_cascade_precursor():
print("CRITICAL: cascade precursor")
status = result.get_channel_status()
# {"structural": "healthy", "rhythmic_composite": "degrading",
# "coupling": "healthy", "coherence": "healthy"}
print(result.get_degradation_narrative())
print(result.get_primary_carrier_wave()) # "mid", "low", etc.
Multivariate mode
cfg = SentinelConfig(multivariate=True, n_channels=3)
det = SentinelDetector(config=cfg)
result = det.update_and_check([v1, v2, v3])
Async usage
result = await det.aupdate(value)
Auto-tune from labeled data
labeled = [(value, is_anomaly), ...]
det = SentinelDetector.auto_tune(data=[], labeled_data=labeled)
SentinelConfig — Configuration
SentinelConfig is a frozen dataclass (slots=True). All fields are immutable after construction. Use dataclasses.replace(cfg, field=value) to derive a new config.
Factory presets
| Preset | alpha |
warmup |
Notes |
|---|---|---|---|
SentinelConfig.fast() |
0.3 | 10 | Fastest response, higher FP rate |
SentinelConfig.production() |
0.1 | 30 | Balanced defaults |
SentinelConfig.sensitive() |
0.05 | 50 | Catches subtle anomalies; tight multiplier (2.5) |
SentinelConfig.realtime() |
0.2 | 15 | Quantile-adaptive thresholds |
Parameter groups
A — Core EWMA
| Field | Default | Description |
|---|---|---|
alpha |
0.1 |
EWMA smoothing factor (0 < α ≤ 1) |
dev_alpha |
0.1 |
EWMA factor for deviation estimation |
multiplier |
3.0 |
Alert threshold = EWMA ± multiplier × dev_ewma |
warmup_periods |
30 |
Observations before alerts are issued |
B — Regime Detection
| Field | Default | Description |
|---|---|---|
regime_threshold |
3.5 |
Z-score magnitude triggering regime change |
regime_alpha_boost |
2.0 |
Multiplicative alpha boost during transitions |
regime_boost_decay |
0.9 |
Decay rate of regime boost per observation |
C — Multivariate
| Field | Default | Description |
|---|---|---|
multivariate |
False |
Enable Mahalanobis distance mode |
n_channels |
1 |
Number of input channels |
cov_alpha |
0.05 |
EWMA factor for covariance (Woodbury rank-1) |
D — FRM Metrics
| Field | Default | Description |
|---|---|---|
rpi_window |
64 |
Rhythm Periodicity Index FFT window |
rfi_window |
64 |
Rhythm Fractal Index R/S window |
rpi_threshold |
0.6 |
Minimum RPI for "rhythm healthy" |
rfi_threshold |
0.4 |
RFI alert threshold |
E — Complexity & EWS
| Field | Default | Description |
|---|---|---|
pe_order |
3 |
Permutation Entropy embedding dimension |
pe_window |
50 |
PE sliding window |
pe_threshold |
0.05 |
PE deviation alert threshold |
ews_window |
40 |
EWS rolling window (independent from scalar window) |
ews_threshold |
0.6 |
EWS "approaching critical" threshold |
F — Fluid Dynamics
| Field | Default | Description |
|---|---|---|
sti_window |
20 |
Shear-Turbulence Index window |
tps_window |
30 |
Temporal Phase Space window |
osc_damp_window |
20 |
Oscillation damping window |
osc_threshold |
1.5 |
Oscillation damping alert multiplier |
cpd_window |
30 |
Change-Point Detection window |
cpd_threshold |
2.0 |
CPD alert z-score threshold |
G — Drift / Volatility / Seasonal
| Field | Default | Description |
|---|---|---|
ph_delta |
0.01 |
Page-Hinkley incremental sensitivity |
ph_lambda |
50.0 |
Page-Hinkley cumulative threshold |
var_cusum_k |
0.5 |
VarCUSUM allowance |
var_cusum_h |
5.0 |
VarCUSUM decision threshold |
seasonal_period |
0 |
Seasonal period (0 = auto-detect via FFT) |
H — AQB / Scoring / IO
| Field | Default | Description |
|---|---|---|
quantile_threshold_mode |
False |
Use Adaptive Quantile Baseline |
aqb_window |
200 |
AQB quantile estimation window |
aqb_q_low |
0.01 |
Lower AQB quantile |
aqb_q_high |
0.99 |
Upper AQB quantile |
history_maxlen |
5000 |
Maximum result records in memory |
csv_path |
"" |
Stream results to CSV if non-empty |
log_level |
"WARNING" |
Python logging level |
V9.0 — Frequency Decomposition
| Field | Default | Description |
|---|---|---|
enable_frequency_decomposition |
True |
Enable FFT into five carrier-wave bands |
min_window_for_fft |
32 |
Minimum window before FFT runs |
V9.0 — Cross-Frequency Coupling
| Field | Default | Description |
|---|---|---|
enable_coupling_detection |
True |
Enable phase-amplitude coupling |
coupling_degradation_threshold |
0.3 |
Composite score below this → COUPLING_DEGRADATION |
coupling_trend_window |
10 |
FrequencyBands snapshots for coupling trend |
V9.0 — Structural-Rhythmic Coherence
| Field | Default | Description |
|---|---|---|
enable_channel_coherence |
True |
Enable Channel 1–2 coherence |
coherence_threshold |
0.4 |
Score below this → STRUCTURAL_RHYTHMIC_DECOUPLING |
coherence_window |
20 |
Rolling coherence window |
V9.0 — Cascade Precursor & Sequence Logging
| Field | Default | Description |
|---|---|---|
enable_cascade_detection |
True |
Enable CASCADE_PRECURSOR detection |
cascade_ews_threshold |
2 |
Minimum EWS indicators elevated |
enable_sequence_logging |
True |
Enable temporal degradation sequence logging |
sequence_retention |
1000 |
Maximum sequences to retain |
Pipeline Architecture — 37 Steps
Every call to update_and_check() runs all 37 steps in order. Steps read from and write to a shared StepContext.scratch dictionary.
| # | Step | Version | Description |
|---|---|---|---|
| 1 | CoreEWMAStep |
v8 | EWMA baseline + deviation; must run first |
| 2 | StructuralSnapshotStep |
v9 | Channel 1: mean, variance, skewness, kurtosis, autocorrelation, stationarity |
| 3 | FrequencyDecompositionStep |
v9 | Channel 2: FFT into 5 carrier-wave bands with power and phase |
| 4 | CUSUMStep |
v8 | CUSUM persistent shift detection |
| 5 | RegimeStep |
v8 | Regime change with soft alpha boost |
| 6 | VarCUSUMStep |
v8 | CUSUM on variance |
| 7 | PageHinkleyStep |
v8 | Page-Hinkley drift detector |
| 8 | STIStep |
v8 | Shear-Turbulence Index |
| 9 | TPSStep |
v8 | Temporal Phase Space reconstruction |
| 10 | OscDampStep |
v8 | Oscillation damping detection |
| 11 | CPDStep |
v8 | Change-Point Detection |
| 12 | RPIStep |
v8 | Rhythm Periodicity Index (FFT) |
| 13 | RFIStep |
v8 | Rhythm Fractal Index (Hurst / R-S) |
| 14 | SSIStep |
v8 | Synchronization Stability Index — Kuramoto proxy (rsi alias preserved) |
| 15 | PEStep |
v8 | Permutation Entropy (FRM Axiom 3) |
| 16 | EWSStep |
v8 | Early Warning Signals — variance + AC(1) (FRM Axiom 9) |
| 17 | AQBStep |
v8 | Adaptive Quantile Baseline |
| 18 | SeasonalStep |
v8 | Seasonal decomposition with FFT auto-period |
| 19 | MahalStep |
v8 | Mahalanobis distance (multivariate) |
| 20 | RRSStep |
v8 | Robust Residual Score |
| 21 | BandAnomalyStep |
v9 | Per-carrier-wave anomaly invisible to composite |
| 22 | CrossFrequencyCouplingStep |
v9 | PAC coupling matrix + COUPLING_DEGRADATION alert |
| 23 | ChannelCoherenceStep |
v9 | Structural-rhythmic coherence + SR_DECOUPLING alert |
| 24 | CascadePrecursorStep |
v9 | CASCADE_PRECURSOR — CRITICAL; requires all three conditions |
| 25 | DegradationSequenceStep |
v9 | Channel 3: temporal degradation sequence log |
| 26 | ThroughputEstimationStep |
v10 | P_throughput from band amplitudes; populates band_amplitudes, band_powers, node_count, mean_coupling_strength |
| 27 | MaintenanceBurdenStep |
v10 | μ = N·κ̄ / P_throughput → Tainter regime classification |
| 28 | PhaseExtractionStep |
v10 | FFT bandpass + Hilbert transform → instantaneous phase per band |
| 29 | PACCoefficientStep |
v10 | Modulation Index (Tort 2010) across 6 slow/fast band pairs |
| 30 | PACDegradationStep |
v10 | Rolling PAC history → pac_degradation_rate, pre_cascade_pac |
| 31 | CriticalCouplingEstimationStep |
v10 | κ_c = 2/(π·g(ω₀)) from power-weighted frequency spread |
| 32 | CouplingRateStep |
v10 | dκ̄/dt from rolling coupling history |
| 33 | DiagnosticWindowStep |
v10 | Δt = (κ̄−κ_c)/ |
| 34 | KuramotoOrderStep |
v10 | Φ = |
| 35 | SequenceOrderingStep |
v10 | COUPLING_FIRST / COHERENCE_FIRST / SIMULTANEOUS / STABLE per step |
| 36 | ReversedSequenceStep |
v10 | Reversed thermodynamic sequence → intervention signature |
| 37 | AlertReasonsStep |
v8 | Must run last — aggregates all alert signals |
Custom steps
from fracttalix import DetectorStep, StepContext, register_step
@register_step
class MyStep(DetectorStep):
def __init__(self, config):
self.cfg = config
def update(self, ctx: StepContext) -> None:
ctx.scratch["my_metric"] = ctx.current * 2.0
def reset(self) -> None:
pass
def state_dict(self):
return {}
def load_state(self, sd):
pass
V9.0 Alert Types and Data Structures
Frozen data structures
| Class | Channel | Description |
|---|---|---|
FrequencyBands |
2 | Five carrier-wave band powers and phases |
StructuralSnapshot |
1 | Mean, variance, skewness, kurtosis, autocorrelation, stationarity |
CouplingMatrix |
2 | PAC coefficients between adjacent bands + composite score |
ChannelCoherence |
1↔2 | Structural-rhythmic coherence score |
DegradationSequence |
3 | Temporal ordering of channel degradation events |
Alert types
AlertType |
AlertSeverity |
Trigger |
|---|---|---|
BAND_ANOMALY |
WARNING | Per-carrier-wave anomaly |
COUPLING_DEGRADATION |
WARNING | composite_coupling_score below threshold |
STRUCTURAL_RHYTHMIC_DECOUPLING |
ALERT | coherence_score below threshold |
CASCADE_PRECURSOR |
CRITICAL | All three: coupling + decoupling + ≥N EWS |
SentinelResult API
SentinelResult is a dict subclass. All v8.0/v9.0 dictionary access patterns work unchanged.
Core fields
| Key | Type | Description |
|---|---|---|
"step" |
int |
Monotonic observation counter |
"value" |
float |
Raw input value |
"ewma" |
float |
Current EWMA estimate |
"alert" |
bool |
Any anomaly triggered |
"warmup" |
bool |
True during warmup period |
"anomaly_score" |
float |
Normalized composite score |
"z_score" |
float |
EWMA deviation in sigma units |
"alert_reasons" |
list[str] |
Triggered conditions |
"cascade_precursor_active" |
bool |
CASCADE_PRECURSOR active |
V9.0 convenience methods
result.is_cascade_precursor() -> bool
result.get_channel_status() -> dict
result.get_degradation_narrative() -> str
result.get_primary_carrier_wave() -> str
V10.0 convenience methods
result.is_reversed_sequence() -> bool
result.get_maintenance_burden() -> dict
# {"mu": 0.82, "regime": "TAINTER_WARNING"}
result.get_pac_status() -> dict
# {"mean_pac": 0.35, "degradation_rate": 0.19, "pre_cascade_pac": True}
result.get_diagnostic_window() -> dict
# {"steps": 47.3, "confidence": "HIGH", "supercompensation": False}
result.get_intervention_signature() -> dict
# {"score": 0.74, "sequence_type": "REVERSED",
# "phi_rate": -0.18, "coupling_rate": -0.01}
V10.0 scalar result keys
| Key | Type | Description |
|---|---|---|
"maintenance_burden" |
float |
μ (0.0–1.0) |
"tainter_regime" |
str |
HEALTHY / REDUCED_RESERVE / TAINTER_WARNING / TAINTER_CRITICAL |
"mean_pac" |
float |
Current PAC strength (0.0–1.0) |
"pac_degradation_rate" |
float |
Fractional PAC decline rate |
"pre_cascade_pac" |
bool |
PAC warning before cascade precursor |
"diagnostic_window_steps" |
float|None |
Steps until coherence collapse |
"diagnostic_window_confidence" |
str |
HIGH / MEDIUM / LOW / NOT_APPLICABLE |
"supercompensation_detected" |
bool |
Adaptive recovery in progress |
"kuramoto_order" |
float |
Φ inter-band phase coherence (0.0–1.0) |
"reversed_sequence" |
bool |
Coherence collapsing before coupling |
"intervention_signature_score" |
float |
0.0–1.0 confidence of deliberate intervention |
"sequence_type" |
str |
ORGANIC / REVERSED / AMBIGUOUS / INSUFFICIENT_DATA |
"coupling_rate" |
float |
dκ̄/dt (negative = degrading) |
"critical_coupling" |
float |
κ_c estimated from frequency distribution |
MultiStreamSentinel
Thread-safe manager for multiple independent named streams.
from fracttalix import MultiStreamSentinel, SentinelConfig
mss = MultiStreamSentinel(config=SentinelConfig.production())
result = mss.update("sensor_42", 3.14)
result = await mss.aupdate("sensor_42", 3.14)
mss.list_streams()
mss.get_detector("sensor_42")
mss.status("sensor_42")
mss.reset_stream("sensor_42")
mss.delete_stream("sensor_42")
state_json = mss.save_all()
mss.load_all(state_json)
SentinelBenchmark
Built-in evaluation harness with five labeled anomaly archetypes.
| Archetype | Description |
|---|---|
point |
Sparse large spikes (8σ) at fixed intervals |
contextual |
Values anomalous given sinusoidal seasonal context |
collective |
Extended runs of moderately elevated values |
drift |
Slow linear mean drift starting mid-series |
variance |
Sudden 4× variance explosion in second half |
from fracttalix import SentinelBenchmark, SentinelConfig
bench = SentinelBenchmark(n=500, config=SentinelConfig.sensitive())
bench.run_suite() # reports F1, AUPRC, VUS-PR, mean lag, 3σ baseline
data, labels = bench.generate("drift")
metrics = bench.evaluate(data, labels)
SentinelServer — REST API
Asyncio HTTP server wrapping a MultiStreamSentinel. No framework dependencies.
python -m fracttalix --serve --host 0.0.0.0 --port 8765
| Method | Path | Description |
|---|---|---|
GET |
/health |
Version, uptime, stream count |
GET |
/streams |
List all stream IDs |
POST |
/update/<id> |
Feed observation: {"value": 3.14} |
GET |
/status/<id> |
Stream stats and last result |
DELETE |
/stream/<id> |
Delete stream |
POST |
/reset/<id> |
Reset stream to factory state |
curl -X POST http://localhost:8765/update/my_sensor \
-H "Content-Type: application/json" \
-d '{"value": 42.0}'
CLI Reference
fracttalix [OPTIONS]
# or: python -m fracttalix [OPTIONS]
| Flag | Default | Description |
|---|---|---|
--file, -f |
— | CSV file to process (reads first column) |
--alpha |
0.1 |
EWMA smoothing factor |
--multiplier |
3.0 |
Alert threshold multiplier |
--warmup |
30 |
Warmup periods |
--benchmark |
— | Run benchmark suite and exit |
--serve |
— | Start HTTP server |
--host |
0.0.0.0 |
Server host |
--port |
8765 |
Server port |
--version |
— | Print version and exit |
--test |
— | Run smoke suite and exit |
Backward Compatibility
v12.1 is a strict superset of all prior versions. No step is removed. No result key is removed.
V8.0 root-cause fixes (all preserved)
| Fix | Label | Description |
|---|---|---|
| α | Frozen config | SentinelConfig is a frozen dataclass |
| β | WindowBank | Named independent deques per consumer |
| γ | Pipeline decomposition | 37 DetectorStep subclasses |
| δ | Soft regime boost | Multiplicative boost + decay |
| ε | SSI naming | result["rsi"] alias preserved |
V7.x compatibility
from fracttalix import SentinelDetector
det = SentinelDetector(alpha=0.1, multiplier=3.0, warmup_periods=30) # v7.x kwargs accepted
State persistence
json_str = det.save_state()
det2 = SentinelDetector(config)
det2.load_state(json_str)
Theoretical Foundation
| FRM Component | Sentinel Implementation |
|---|---|
| FRM Axiom 3 (ordinal pattern complexity) | PEStep — Permutation Entropy |
| FRM Axiom 9 (critical slowing down) | EWSStep — variance + lag-1 autocorrelation |
| Rhythm Periodicity Index | RPIStep — FFT spectral coherence |
| Rhythm Fractal Index | RFIStep — Hurst exponent via R/S |
| Synchronization Stability Index | SSIStep — Kuramoto proxy via FFT phase coherence |
| Three-channel model (Paper 6) | StructuralSnapshotStep, FrequencyDecompositionStep, ChannelCoherenceStep, CascadePrecursorStep, DegradationSequenceStep |
| Maintenance burden μ | ThroughputEstimationStep, MaintenanceBurdenStep |
| PAC pre-cascade (Tort 2010) | PhaseExtractionStep, PACCoefficientStep, PACDegradationStep |
| Diagnostic window Δt | CriticalCouplingEstimationStep, CouplingRateStep, DiagnosticWindowStep |
| Kuramoto order Φ / reversed sequence | KuramotoOrderStep, SequenceOrderingStep, ReversedSequenceStep |
Channel 2 — AI Layers
Machine-readable falsification layers for the Fracttalix corpus. All layers conform to ai-layers/ai-layer-schema.json (v2-S42, Dual Reader Standard).
| ID | Paper | Status | File |
|---|---|---|---|
| P1 | Fractal Rhythm Model (Paper 1) | PHASE-READY | ai-layers/P1-ai-layer.json |
| MK-P1 | Meta-Kaizen Paper 1 | PHASE-READY | ai-layers/MK-P1-ai-layer.json |
| DRP-1 | Dependency Resolution Process | PHASE-READY | ai-layers/DRP1-ai-layer.json |
| SFW-1 | Sentinel v12 | PHASE-READY | ai-layers/SFW1-ai-layer.json |
Authors & License
Authors: Thomas Brennan & Claude (Anthropic) & Grok (xAI)
License: CC0 1.0 Universal (Public Domain) — no restrictions, no attribution required.
GitHub: https://github.com/thomasbrennan/Fracttalix
Version history:
| Version | Notes |
|---|---|
| v10.0.0 | 4 physics-derived capabilities, 37 steps, 98 tests |
| v9.0.0 | Three-channel model, 26 steps, 65 tests |
| v8.0.0 | Frozen config, WindowBank, 19-step pipeline |
| v7.11–v7.6 | Earlier releases |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fracttalix-12.1.0.tar.gz.
File metadata
- Download URL: fracttalix-12.1.0.tar.gz
- Upload date:
- Size: 89.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
409af2678ae3fb47d30ff9c6034b5e3bdd7eb4f30d48deefed232288c8ca7a49
|
|
| MD5 |
8c94d8283731c470c018e8fd3c9d33bc
|
|
| BLAKE2b-256 |
9c62c0343305dbc995f846f249f371a76deaf7a7da9389d507770937b51ac0e3
|
Provenance
The following attestation bundles were made for fracttalix-12.1.0.tar.gz:
Publisher:
release.yml on thomasbrennan/Fracttalix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fracttalix-12.1.0.tar.gz -
Subject digest:
409af2678ae3fb47d30ff9c6034b5e3bdd7eb4f30d48deefed232288c8ca7a49 - Sigstore transparency entry: 1078010524
- Sigstore integration time:
-
Permalink:
thomasbrennan/Fracttalix@8f70373d87936d440e66b2d9ec050fac1f76d425 -
Branch / Tag:
refs/tags/v12.1.0 - Owner: https://github.com/thomasbrennan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8f70373d87936d440e66b2d9ec050fac1f76d425 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fracttalix-12.1.0-py3-none-any.whl.
File metadata
- Download URL: fracttalix-12.1.0-py3-none-any.whl
- Upload date:
- Size: 79.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69dd871322f623c99cc5b951abfd85bea067c13a7e15f42178489ce9dd77a98c
|
|
| MD5 |
f29c521db84646ae2dafc8c06bff0e1b
|
|
| BLAKE2b-256 |
983383858723c4e7234726c88ae7fe1a71e1772a54b9e08e5d6e9508236fb859
|
Provenance
The following attestation bundles were made for fracttalix-12.1.0-py3-none-any.whl:
Publisher:
release.yml on thomasbrennan/Fracttalix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fracttalix-12.1.0-py3-none-any.whl -
Subject digest:
69dd871322f623c99cc5b951abfd85bea067c13a7e15f42178489ce9dd77a98c - Sigstore transparency entry: 1078010531
- Sigstore integration time:
-
Permalink:
thomasbrennan/Fracttalix@8f70373d87936d440e66b2d9ec050fac1f76d425 -
Branch / Tag:
refs/tags/v12.1.0 - Owner: https://github.com/thomasbrennan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8f70373d87936d440e66b2d9ec050fac1f76d425 -
Trigger Event:
push
-
Statement type: