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
From a full-repo review of the ~430-test suite (which is strong where it exists — the reducer/CI math tests are exemplary). Coverage is inverted relative to risk:
No CI at all — .github/ has only dependabot.yml. Nothing runs the tests on PRs. For a public benchmark whose product is correctness, the excellent reducer tests are inert until they gate merges. (Also: no pytest config — unregistered slow marker; bare pytest from repo root collects src/labels/test_api.py and stale build/lib copies; tests/forecasting_training/test_model_registry.py:13 hard-imports pypots without importorskip, so the documented pip install -e ".[dev]" + pytest tests/ errors.)
All 6 Track 2 masking scenario generators have zero tests — nothing imports imputation_evaluation.masking generators (RandomNoise/TemporalSlice/SignalSlice/SleepGap/WorkoutGap/IntensityFailure or generator.py). An off-by-one in gap placement silently corrupts every leaderboard number; everything downstream trusts this stage.
Track 3 raw metric math untested — point_metrics.py (510 lines: MAE/MSE/MASE + hour-of-day seasonal scaling) and quantiles_metrics.py have no value-level tests against known predictions/truth.
The imputation harness's NaN-corruption sites (4 duplicated copies in evaluator.py:298-299,362-363,761-762,833-834) are untested — imputer tests simulate the injection themselves. Also: test_seasonal_naive_fallback_fills_nan_only never asserts the filled values; bootstrap resample multiplicity weighting is never asserted (only the identity draw).
Suggested fix: a minimal GitHub Actions workflow (install .[dev], pytest tests/ with pypots-free skips, ruff) + targeted tests for items 2-5, starting with hand-computed masking-generator fixtures.
From a full-repo review of the ~430-test suite (which is strong where it exists — the reducer/CI math tests are exemplary). Coverage is inverted relative to risk:
.github/has only dependabot.yml. Nothing runs the tests on PRs. For a public benchmark whose product is correctness, the excellent reducer tests are inert until they gate merges. (Also: no pytest config — unregisteredslowmarker; barepytestfrom repo root collectssrc/labels/test_api.pyand stalebuild/libcopies;tests/forecasting_training/test_model_registry.py:13hard-importspypotswithout importorskip, so the documentedpip install -e ".[dev]"+pytest tests/errors.)imputation_evaluation.maskinggenerators (RandomNoise/TemporalSlice/SignalSlice/SleepGap/WorkoutGap/IntensityFailure orgenerator.py). An off-by-one in gap placement silently corrupts every leaderboard number; everything downstream trusts this stage.point_metrics.py(510 lines: MAE/MSE/MASE + hour-of-day seasonal scaling) andquantiles_metrics.pyhave no value-level tests against known predictions/truth.sharable_users_seed42_2026.jsonor the split loaders (see Track 2: split loader dropped train/val/test overlap validation (leaky split files accepted silently) #84).evaluator.py:298-299,362-363,761-762,833-834) are untested — imputer tests simulate the injection themselves. Also:test_seasonal_naive_fallback_fills_nan_onlynever asserts the filled values; bootstrap resample multiplicity weighting is never asserted (only the identity draw).Suggested fix: a minimal GitHub Actions workflow (install
.[dev],pytest tests/with pypots-free skips, ruff) + targeted tests for items 2-5, starting with hand-computed masking-generator fixtures.