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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions