Skip to content

ci: share the cron gate and verdict head through one reusable workflow (#1967) - #2002

Merged
JarryShaw merged 1 commit into
mainfrom
ci/1967-cron-head
Oct 21, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/1967-cron-head

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

What is the purpose of your pull request?

  • ci — workflows or build tooling

Description of your pull request and other information

Step 6 of #1967. Conda Update, Vendor Update and GitHub Pages each carried the same gate (unit-tests with gate-only unless the event is a pull request or a workflow_run) and the same verdict head. That head now lives once, in the new reusable cron-head.yml, which is workflow_call only and grants contents: read.

Each of the three replaces those two jobs with a head job ("Conda gate", "Vendor gate", "Docs gate"). Their acting jobs now read needs.head.result and needs.head.outputs.verified.

The following are unchanged:

  • triggers, concurrency and repository-maintenance;
  • environment: lines, deploy-key steps and per-job permissions;
  • !cancelled() on every acting job;
  • the vendor-update job name, which Create Release reads.

Not done: a single weekly gate. It would move publish times, because Pages runs at 02:00 and Vendor and Conda at 10:00. Each would also publish main's tip at gate time rather than at its own schedule. That needs a ruling, which I'll ask for on #1967.

Checks:

  • New pins check that all three call one identical head, that nothing else calls it, and that it asks for no more than contents: read. Against the old layout, 13 of them fail.
  • The related tests/project files pass.
  • actionlint 1.7.12 is clean on the changed files.

Part of #1967.

@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 20, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 949779da9. A Sonnet review found the move a straight lift:

  • Conditions: the gate's and verdict's if: match the old ones, and no caller still reads needs.verdict or needs.unit-tests.
  • Outputs: verified maps through on.workflow_call.outputs. It is empty when verdict skips, which == 'true' already treats as false.
  • Nesting and permissions: the chain is three levels deep, within GitHub's limit of ten. Every level holds contents: read, and the write permissions in deploy-pages sit outside the chain.
  • Names: every consumer filters on unchanged workflow names or on vendor-update, which keeps its name.

I ran the files the review did not, all passing: test_release_reads_the_vendor_update_1748, test_superseded_runs_1938, test_conda_platform_pin_refresh_1851, test_vendor_comment_only_no_bump_1674, test_unit_tests_queue, and the docs-claims, changelog and isort pins.

Unverified: what needs.head.result reports when every inner job skipped. The docs don't say. Either skipped or success passes != 'failure'.

@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 20, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Oct 20, 2026
@JarryShaw JarryShaw added review: pending No verdict for the current head - never reviewed, or the head moved since the last one and removed review: good-to-go Cross-review at the current head says ready; CI state is separate labels Oct 20, 2026
@JarryShaw JarryShaw added review: running A cross-review is in flight against the current head - no verdict yet review: needs-changes Cross-review at the current head says changes are required; see the verdict comment and removed review: pending No verdict for the current head - never reviewed, or the head moved since the last one review: running A cross-review is in flight against the current head - no verdict yet labels Oct 20, 2026
- Conda Update, Vendor Update and GitHub Pages each carried the same test
  gate and `verdict` job. Both now live in cron-head.yml, a `workflow_call`
  workflow that each calls as its `head` job; the acting jobs read
  `needs.head.result` and `needs.head.outputs.verified`.
- The Saturday schedules are spread eight hours apart (Pages 02:00, Vendor
  10:00, Conda 18:00 UTC), so no two heads gate the same commit at once and
  Conda Update follows Vendor Update's release.
- Triggers otherwise, concurrency groups, environments, deploy-key steps and
  permissions are unchanged; the head holds `contents: read` only.
- Tests: the verdict and conda gate tables decide the head's jobs against
  cron-head.yml; new tests pin that the three call one head and the spread.
- Docs: workflows.rst gains the Cron Head row, node, calls and schedule
  rationale, cited by name; pep.rst drops a line citation.
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at fc192dd87. Following the #1967 ruling, the crons now run eight hours apart on Saturdays: Pages at 02:00, Vendor at 10:00, Conda at 18:00.

A Sonnet delta review confirmed:

fc192dd87 fixes the two comments the review found stale, in project-status.yml and ci-timing.yml. A repo-wide grep found nothing else. The workflow-reading tests pass, and actionlint is clean apart from main's existing concurrency.queue finding.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: needs-changes Cross-review at the current head says changes are required; see the verdict comment labels Oct 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Coverage: 91.54% (unit tier, Python 3.15, fc192dd87, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 4 20 2 95.16%
pcapkit/const 19597 881 2618 867 92.11%
pcapkit/corekit 2540 71 808 37 96.54%
pcapkit/dumpkit 276 3 100 3 98.40%
pcapkit/foundation 2929 23 1020 25 98.78%
pcapkit/interface 138 4 52 3 96.32%
pcapkit/protocols 17468 222 4600 187 98.13%
pcapkit/toolkit 872 36 298 10 95.21%
pcapkit/utilities 523 2 158 4 99.12%
pcapkit/vendor 4431 1995 1018 167 51.73%

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

@JarryShaw
JarryShaw merged commit f2e06d7 into main Oct 21, 2026
57 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Oct 21, 2026
@JarryShaw
JarryShaw deleted the ci/1967-cron-head branch October 21, 2026 00:52
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Oct 21, 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