Skip to content

No CI + zero tests on the stages that define the benchmark (masking generators, Track 3 metric math, split disjointness) #94

Description

@NarayanSchuetz

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:

  1. 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.)
  2. 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.
  3. Track 3 raw metric math untestedpoint_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.
  4. No split-disjointness test for the canonical sharable_users_seed42_2026.json or the split loaders (see Track 2: split loader dropped train/val/test overlap validation (leaky split files accepted silently) #84).
  5. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions