Skip to content

CI: widen the required check gate so non-essential test failures cannot land on master #530

Description

@jepegit

Context

Only "essential (linux / uv)" is a required check on this repo. On
2026-07-17, master carried four failing tests without any red CI:

  • tests/test_cell_readers.py::test_save_cellpyfile_auto_extension
  • tests/test_cell_readers.py::test_save_cellpyfile_auto_extension_pathlib
  • tests/test_merge_campaign.py::test_single_test_steps_have_no_test_id_column
  • tests/test_merge_campaign.py::test_campaign_merges_precomputed_steps_and_summary

All four were fallout of deliberate changes (v9 default save in #521; the
cellpycore 0.2.2 bridge sync in #523) that landed green because none of the
affected tests carry the essential marker — and one of them was masking a
real bug (the campaign summary test_id concat, fixed in PR #524). The
essential-only gate is a speed/coverage trade-off that just demonstrated its
failure mode.

Options (pick one or combine)

  1. Add a full-suite job to the required checks. The full suite runs in
    ~2.5–4 min locally, so the cost is modest; keep "essential" as the fast
    signal and make full (linux / uv) required too.
  2. Promote markers instead: sweep the suite and mark the
    contract-pinning tests (save/load defaults, merge semantics, bridge
    parity) as essential so the existing gate covers them. Cheaper CI,
    but the four above show how easily pins are missed.
  3. Full suite on a merge queue / push-to-master with required status,
    keeping PR CI fast. Catches breakage at merge time rather than PR time.

Recommendation: option 1 — the suite is fast enough that the marker split no
longer buys much on Linux (keep the split for the slow OS-matrix jobs).

Note: changing the required-checks set is a branch-protection (admin)
setting — the workflow change can come by PR, but an admin must flip the
requirement.

Refs

PR #524 (the fix for the four failures), #521/#523 (the changes whose
fallout slipped through).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions