Skip to content

chore(release): 0.14.6 — CI coverage-job flakefix + actions.cooldown race - #83

Merged
maltsev-dev merged 1 commit into
masterfrom
fix/0.14.6-ci-coverage-rerunfailures-v2
Aug 1, 2026
Merged

chore(release): 0.14.6 — CI coverage-job flakefix + actions.cooldown race#83
maltsev-dev merged 1 commit into
masterfrom
fix/0.14.6-ci-coverage-rerunfailures-v2

Conversation

@maltsev-dev

Copy link
Copy Markdown
Member

Re-opened after PR #82 conflicted against origin/master (the original branch was based off a stale local master that lacked the 0.14.0-0.14.5 chain). This PR is based off origin/master @ 4878402 and contains only the four 0.14.6 changes.

Two CI-only fixes that surfaced as red runs on the 0.14.5 matrix:

  1. coverage job missing pytest-rerunfailures.github/workflows/ci.yml:74. The test matrix already installs pytest-rerunfailures>=14.0,<16.0 (lines 41-45); the coverage job did not. The @pytest.mark.rerunfailures(reruns=2) marker on tests/test_approval_timeout_field.py::TestApprovalTimeoutResolution::test_env_fallback_when_server_value_is_zero was therefore a silent no-op on the coverage leg, and the first thread-scheduling race under -n auto on shared CI runners turned the run red even though all three test legs were green. Local sequential runs pass 15/15. Marker stays the same — only the plugin install on the coverage leg is added.

  2. test_is_paused_respects_cooldown window-of-zero racetests/test_actions.py. Pre-existing 0.13.7-era flake that became 5-in-5 on the 0.14.5 runner pool. The test asserted is_paused(..., cooldown_seconds=0.0) returns False immediately after a PAUSE; the underlying is_paused computes elapsed = time.time() - paused_at and uses elapsed > cooldown (strict greater-than). On any platform where time.time() rounds the same integer as paused_at within the test body, elapsed == 0.0 and the workflow stays "paused" forever. Test now sleeps 0.01s before the post-cooldown assertion to make the check deterministic. ActionHandler.is_paused semantics unchanged.

pyproject.toml + src/nullrun/__version__.py bumped to 0.14.6 (v3.31.5 / 0.14.6) with a changelog entry covering both fixes. uv.lock added (lockfile was previously untracked; CI installs via pip so this is hygiene-only, but it keeps local uv invocations deterministic for dev work).

Verification (local, post-rebase)

  • pytest tests/ --ignore=tests/contract1417 passed, 7 skipped in 44.11s (0 failures)
  • ruff check src/ tests/All checks passed
  • mypy src/Success: no issues found in 37 source files

No public API change. No on-wire change. No SDK_MIN_VERSION bump.

…race

- .github/workflows/ci.yml: install pytest-rerunfailures on the
  coverage job so the @pytest.mark.rerunfailures(reruns=2) marker
  on test_approval_timeout_field fires on the coverage leg too;
  pre-fix it was a silent no-op and the first spawn-vs-release
  race under -n auto on shared CI runners turned the run red
  even though the test (3.10/3.11/3.12) matrix was fully green.

- tests/test_actions.py: TestPauseAction.test_is_paused_respects_cooldown
  sleeps 10ms between the PAUSE handle and the cooldown_seconds=0.0
  assertion so elapsed = time.time() - paused_at > 0.0 deterministically;
  pre-fix the test was a pre-existing 0.13.7-era flake that became
  5-in-5 on the 0.14.5 runner pool. Production is_paused unchanged.

- pyproject.toml + src/nullrun/__version__.py: bump to 0.14.6
  with v3.31.5 / 0.14.6 changelog entry covering both fixes.

Verified locally:
- pytest tests/ --ignore=tests/contract -> 1417 passed, 7 skipped
- ruff check src/ tests/ -> All checks passed
- mypy src/ -> Success: no issues found in 37 source files
@codecov

codecov Bot commented Aug 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@maltsev-dev
maltsev-dev merged commit e7cac4c into master Aug 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant