You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Severity: P0 — this is the single biggest UX blocker in the server today. Verified live over the MCP wire on 2026-08-09 (server at maincbac09f, sktime 1.0.1).
Problem
Any user who loads their own monthly data and picks a seasonal forecaster (sp > 1) hits a dead end: fit succeeds, then predict fails.
load_data_source(monthly sales, 30 rows) -> DatetimeIndex, freq "MS" OK
fit(NaiveForecaster(strategy="last", sp=12), y_handle=<handle>) OK {"fitted": true}
predict(estimator_handle, horizon=6)
-> {"success": false, "error": "<MonthBegin> is not supported as period frequency"}
Same failure with AutoETS(auto=True, sp=12). The failure matrix (all confirmed live):
Demo dataset (PeriodIndex)
Loaded handle (DatetimeIndex "MS")
Non-seasonal (sp=1)
works
works (incl. intervals)
Seasonal (sp>1)
works
fit OK, predict fails
Root cause
load_data_source normalizes monthly data to a DatetimeIndex with freq="MS" (MonthBegin), while sktime's demo datasets carry a PeriodIndex. Seasonal forecasters that internally call _pivot_sp do index.to_period(freq=MonthBegin), and pandas raises <MonthBegin> is not supported as period frequency. So fit (which doesn't pivot) succeeds and predict (which does) fails — a trap, because the user has no signal at fit time.
There is no workaround inside the toolset for datetime-indexed data; the only escapes are demo datasets, sp=1 models, or integer-index loading.
Related (same root cause)
NB-19 — update after a demo-dataset fit, with a load_data_source handle, fails the same way (demo PeriodIndex vs handle DatetimeIndex → object base Index deep in sktime).
Normalize period-compatible DatetimeIndex handles to PeriodIndex at load time (in load_data_source / format_data_handle), so handle-loaded data behaves like demo data. One change resolves this issue, NB-19, and the BUG-05 trigger class. Alternatively, pre-validate at fit time and fail with a clear message instead of letting fit succeed.
Re-verify
load_data_source 24+ monthly rows → fit(NaiveForecaster(sp=12)) → predict(horizon=6) must return a forecast.
(Catalogued as NB-20 / NB-19 in MCP_TEST_FINDINGS.md.)
Severity: P0 — this is the single biggest UX blocker in the server today. Verified live over the MCP wire on 2026-08-09 (server at
maincbac09f, sktime 1.0.1).Problem
Any user who loads their own monthly data and picks a seasonal forecaster (
sp > 1) hits a dead end:fitsucceeds, thenpredictfails.Same failure with
AutoETS(auto=True, sp=12). The failure matrix (all confirmed live):sp=1)sp>1)Root cause
load_data_sourcenormalizes monthly data to aDatetimeIndexwithfreq="MS"(MonthBegin), while sktime's demo datasets carry aPeriodIndex. Seasonal forecasters that internally call_pivot_spdoindex.to_period(freq=MonthBegin), and pandas raises<MonthBegin> is not supported as period frequency. Sofit(which doesn't pivot) succeeds andpredict(which does) fails — a trap, because the user has no signal at fit time.There is no workaround inside the toolset for datetime-indexed data; the only escapes are demo datasets,
sp=1models, or integer-index loading.Related (same root cause)
updateafter a demo-dataset fit, with aload_data_sourcehandle, fails the same way (demo PeriodIndex vs handle DatetimeIndex → object base Index deep in sktime).evaluateall-NaN masking bug (fixed in commit fa26f5f / fix: surface per-fold exceptions in evaluate instead of NaN metrics #524, which now surfaces it honestly — but the underlying interop is still broken).Proposed fix
Normalize period-compatible
DatetimeIndexhandles toPeriodIndexat load time (inload_data_source/format_data_handle), so handle-loaded data behaves like demo data. One change resolves this issue, NB-19, and the BUG-05 trigger class. Alternatively, pre-validate at fit time and fail with a clear message instead of letting fit succeed.Re-verify
load_data_source24+ monthly rows →fit(NaiveForecaster(sp=12))→predict(horizon=6)must return a forecast.(Catalogued as NB-20 / NB-19 in
MCP_TEST_FINDINGS.md.)