Skip to content

Commit d3d3d77

Browse files
committed
2026-03-05 v0.0.16 — MODEL_INFO elimination, registry SSoT, ETS refit fix, refit contract tests
1 parent 3716059 commit d3d3d77

16 files changed

Lines changed: 66 additions & 79 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,42 @@ All notable changes to Vectrix will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.0.16] - 2026-03-05
9+
10+
Code quality and architecture cleanup release — eliminates MODEL_INFO indirection layer, enforces registry as single source of truth for all model metadata, fixes ETSModel refit bug, and adds refit contract tests.
11+
12+
### Fixed
13+
14+
**ETSModel refit() State Corruption**
15+
- `engine/ets.py`: `_computeSSE()` called `_filter()` which mutated `self.level/trend/seasonal` as a side-effect during optimization
16+
- This caused refit() on the same data to produce 175%+ divergence from original fit()
17+
- Added state save/restore in `_computeSSE` using try/finally pattern
18+
- All 6 refit-capable models now pass same-data similarity test (<5% divergence)
19+
20+
### Changed
21+
22+
**Registry as Single Source of Truth (SSoT)**
23+
- `engine/registry.py`: Added `tier`, `seasonal`, `hourly` fields to `ModelSpec`
24+
- Added `selectModels()` for data-characteristic-based model selection
25+
- Added `getCoreModelIds()` for dynamic ensemble core pool
26+
- `vectrix.py`: Replaced hardcoded model lists with `selectModels()` and `getCoreModelIds()`
27+
- `flat_defense/diagnostic.py`: Replaced `MODEL_INFO` import with `getModelInfo()` direct call
28+
- `models/selector.py`: Same — `MODEL_INFO``getModelInfo()` direct call
29+
- `types.py`: Removed `_LazyModelInfo` class and `MODEL_INFO` variable entirely (48 lines deleted)
30+
31+
**Exception Handling**
32+
- `vectrix.py`: Replaced 6 bare `except Exception:` with specific types (`ValueError`, `RuntimeError`, `np.linalg.LinAlgError`, etc.)
33+
34+
**Code Deduplication**
35+
- `vectrix.py`: Unified sequential/parallel model evaluation result handling into `storeResult()` helper
36+
37+
### Added
38+
39+
**Refit Contract Tests**
40+
- `tests/test_refit_contract.py`: 30 tests covering 6 refit-capable models
41+
- Tests: returns_self, output_shape, output_finite, ci_ordering, same_data_similar_output
42+
- Total tests: 573 → 603
43+
844
## [0.0.15] - 2026-03-05
945

1046
Accuracy & engine improvement release — FFT period detection bug fix eliminates spurious seasonal periods that degraded M4 Daily OWA from 0.820 to 0.996. Three new Rust DNA functions added. PeriodicDropDetector seasonal false positive fix. Visualization module (plotly). Overall M4 AVG OWA improved from 0.877 to 0.848.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vectrix"
3-
version = "0.0.15"
3+
version = "0.0.16"
44
edition = "2021"
55
license-file = "LICENSE"
66

constants.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.0.15",
2+
"version": "0.0.16",
33
"rustFunctions": 29,
44
"testCount": 603,
55
"modelCount": "30+",

docs/overrides/home.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<section class="vx-hero">
1212
<div class="vx-hero-badge">
1313
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
14-
v0.0.15 — Built-in Rust Engine
14+
v0.0.16 — Built-in Rust Engine
1515
</div>
1616
<h1 class="vx-hero-title">
1717
Time Series Forecasting<br>

landing/src/lib/components/sections/Hero.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<div class="relative z-10 max-w-4xl mx-auto">
1616
<Badge class="mb-6">
1717
<Zap class="w-3.5 h-3.5" />
18-
v0.0.15 — Built-in Rust Engine
18+
v0.0.16 — Built-in Rust Engine
1919
</Badge>
2020

2121
<h1 class="text-5xl md:text-7xl font-extrabold tracking-tight leading-[1.1] mb-4">

landing/src/routes/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"description": "Zero-config time series forecasting for Python. 30+ models, one line of code, built-in Rust engine.",
4242
"url": "https://eddmpython.github.io/vectrix/",
4343
"downloadUrl": "https://pypi.org/project/vectrix/",
44-
"softwareVersion": "0.0.15",
44+
"softwareVersion": "0.0.16",
4545
"author": { "@type": "Person", "name": "eddmpython", "url": "https://github.com/eddmpython" },
4646
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
4747
"license": "https://opensource.org/licenses/MIT",

landing/static/llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Vectrix is a Python library for time series forecasting. It evaluates 30+ statistical models (ETS, ARIMA, Theta, CES, DOT, MSTL, TBATS, GARCH, and more), validates each on a holdout set, and returns the best one with 95% confidence intervals — in a single function call.
66

7-
- Version: 0.0.15
7+
- Version: 0.0.16
88
- License: MIT
99
- Python: 3.10+
1010
- Dependencies: NumPy, pandas, SciPy (only 3)

llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> Zero-config time series forecasting library for Python. Automatic model selection with built-in Rust engine (29 accelerated functions), adaptive intelligence, full regression suite, and business analytics.
44

5-
- Version: 0.0.15
5+
- Version: 0.0.16
66
- Python: >=3.10
77
- Core deps: numpy>=1.24, pandas>=2.0, scipy>=1.10
88
- Install: `pip install vectrix`

llms.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> Zero-config time series forecasting library for Python. Automatic model selection with built-in Rust engine. NumPy/SciPy/Pandas with adaptive intelligence, regression, and business analytics.
44

5-
- Version: 0.0.15
5+
- Version: 0.0.16
66
- Python: 3.10+
77
- Dependencies: numpy, pandas, scipy (core only)
88
- Install: `pip install vectrix`

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "vectrix"
3-
version = "0.0.15"
3+
version = "0.0.16"
44
description = "Zero-config time series forecasting & analysis library. 30+ models with built-in Rust engine for blazing-fast performance."
55
readme = "README.md"
66
license = {file = "LICENSE"}

0 commit comments

Comments
 (0)