Skip to content

ci: queue the ordering cells after the unit legs, run Engines 3.15 on main only, drop Engines (DPKT) (#1538) - #1551

Merged
JarryShaw merged 1 commit into
mainfrom
ci/1538-p4-p6-p8
Oct 10, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/1538-p4-p6-p8

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

Please follow the guide below

What is the purpose of your pull request?

Tick the commit type your subject line carries.

  • fix — corrects a defect
  • feat — adds a feature
  • perf — changes performance, not behaviour
  • refactor — changes neither behaviour nor performance
  • test — tests only
  • docs — documentation only
  • ci — workflows or build tooling
  • release — bumps the version or rolls up a distribution
  • chore — anything else

Description of your pull request and other information

Refs #1538: P4 option (a), P6 and P8. #1538 stays open for P1, P2 and P7.

  • P4(a). unittest-ordering gets needs: [test]. Its if: is the old one with !cancelled() && in front, so the cells still run when test fails or is skipped, and a red cell still fails the push run that Pages, Conda, Vendor and Release wait on. No concurrency group is added (ci: stop dropping a commit's validation when the next one lands #394).
  • P6. Run the 3.15 cell (experimental, non-blocking) gets if: ${{ github.event_name != 'pull_request' }}. The name and continue-on-error: true are unchanged. This narrows ci: engines not exercised across their claimed Python ranges — PyShark has no real-capture coverage, PyPCAPFile dark on 3 of 5 legs #845's ruling to main pushes.
  • P8. DPKT is removed from engine-tests' matrix and from both case arms. The premise holds: the cell's only TEST_PATHS entry was tests/toolkit/test_dpkt_unit.py. test installs .[test,DPKT,crypto,NGAP] on 3.10–3.14 and runs that file, since none of its --ignores match it. The DPKT job failed in 0 of the 120 cached runs from Oct 5–9. What is lost: that file run in a venv with only .[test] and DPKT, and run on 3.15.
  • Required checks. Nothing is renamed, required-checks' needs: is unchanged, and no other workflow needs: these jobs. No permission is added. The net line change above changelog: is zero, so every unit-tests.yml:N citation still resolves.

Saving. Figures are estimates unless measured.

  • Measured on 3 PR runs: each used 76.9–77.8 runner-min. The DPKT job took 2.9–3.6 min (median 3.07 over 120 runs). The other five engines' 3.15 steps took 133–161 s per run.
  • That is about 5.6 runner-min per PR run (~7%) and ~3.1 per push run. At Oct 5–9's rate of 77 PR and 48 push runs a day, that comes to ≈580 runner-min/day (estimate).
  • P4(a) saves 0 runner-min. In push runs 38008314081 and 38008792570, the cells started 13–15 min before that run's own Python legs, and those legs queued for 13–19 min.
  • The cost of P4(a): the push run now ends at least ~5.8 min later. That figure is the slowest cell's run time and excludes queue wait (estimate). Any gain in PR latency is unmeasured.

Tests. Three new TestJobGating cases each fail on main's workflow. The tier-guard doctoring now edits the Scapy/PyShark arms instead of the retired DPKT ones. Results: tests/project 469 passed, tests/test_tier_guard.py 109 passed.

… main only, drop Engines (DPKT) (#1538)

- unittest-ordering: needs: [test], with !cancelled() leading its if:, so its
  11 cells queue behind the push run's own legs instead of ahead of them, still
  run when test fails, and still fail the push run (#1052 item H unchanged).
- engine-tests: the 3.15 step skips on pull requests; same name, still
  continue-on-error. Narrows #845's ruling to main pushes.
- engine-tests: no DPKT cell; its only path, test_dpkt_unit.py, already runs in
  test with DPKT on 3.10-3.14.
- Tests pin all three; tier-guard doctoring moves off the retired DPKT arms;
  workflows.rst documents the cuts.

Refs #1538
@JarryShaw JarryShaw added ci Pull requests that change CI or workflow configuration (ci: subject prefix) review: running A cross-review is in flight against the current head - no verdict yet labels Oct 10, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Verdict: GOOD TO GO at e184be0ec. Cross-reviewed on Sonnet; the author ran Opus.

  • P4(a): needs: [test] together with !cancelled() means the cells still run when test fails, and a red cell still fails the push run. The push run is what deploy-pages.yml:66-70, cron-conda.yml:64-68 and cron-vendor.yml:68-72 key on, so publishing is still gated. !cancelled() matters here: in 7 of the last 8 failed push runs, test and protocols (rest) were red together.
  • P6: only the 3.15 step gains if: event_name != 'pull_request'. Its name and continue-on-error are kept.
  • P8: the DPKT cell's only path, test_dpkt_unit.py, already runs in test on 3.10–3.14. What is lost is the clean .[test]+DPKT venv and DPKT on 3.15. Nothing else referenced the cell.
  • Required contexts, permissions and doc citations: all unchanged. TestDocCitationsResolve gives 249 subtests passed. tests/project gives 469 passed, and the three new TestJobGating tests fail on main's workflow.

For the owner, P4(a) measured: this comes from 60 push runs and 127 PR runs, replayed against the 20-slot pool.

  • PR runs: about 0.7 min faster on average (mean wall time 20.1 → 19.4 min, p90 47.2 → 43.6).
  • Push runs: they finish about 2.6 min later at the median, so Pages, Conda and Vendor publish that much later.
  • Verdict: it is a small, roughly even trade, not a clear win. The replay omits CodeQL, Compat and Lint, so the real contention is higher.

Not blocking:

  • In workflows.rst, "ahead of that run's own Python legs" reads as if it still holds after the change.
  • "About 6 min" is the p90; the median delay is 3.2 min.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Oct 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Coverage: 90.02% (unit tier, Python 3.14, e184be0ec, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 4 20 4 93.55%
pcapkit/const 18795 842 2356 756 92.09%
pcapkit/corekit 2204 67 712 34 96.26%
pcapkit/dumpkit 258 2 90 2 98.85%
pcapkit/foundation 2797 132 986 48 94.18%
pcapkit/interface 108 7 36 5 91.67%
pcapkit/protocols 16992 229 4546 190 98.03%
pcapkit/toolkit 635 98 198 5 83.31%
pcapkit/utilities 431 4 124 4 98.56%
pcapkit/vendor 4409 2342 1006 157 43.25%

Per-file detail: the coverage-html artifact of this run.

@JarryShaw
JarryShaw merged commit 2b797dc into main Oct 10, 2026
40 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Oct 10, 2026
@JarryShaw
JarryShaw deleted the ci/1538-p4-p6-p8 branch October 10, 2026 03:36
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Oct 10, 2026
@JarryShaw JarryShaw added this to the PyPCAPKit v1.5 milestone Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Pull requests that change CI or workflow configuration (ci: subject prefix)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant