Skip to content

ci(project-status): stop a superseded sync from leaving a red check (#1066) - #1071

Merged
JarryShaw merged 1 commit into
mainfrom
ci/1066-project-status-superseded
Oct 6, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/1066-project-status-superseded

Conversation

@JarryShaw

@JarryShaw JarryShaw commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Please follow the guide below

What is the purpose of your pull request?

  • 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
  • chore — anything else

Description of your pull request and other information

Closes #1066. This drops cancel-in-progress and sets queue: max. GitHub's concurrency docs say that by default a group cancels its one pending run when a newer run arrives. Under queue: max, up to 100 runs wait instead, and combining it with cancel-in-progress: true is a validation error. So simply serialising without cancelling would still leave cancelled checks after a burst of three or more events.

Freshness does not depend on run order, which the docs say is not guaranteed. Runs on one item never overlap, and each run re-reads the labels. So the last run to execute starts after every other run on that item, including the run for the final event, and its write lands last. Nightly reconcile is unchanged and still covers a run dropped because the queue was full.

TestConcurrency.test_nothing_is_cancelled pins that only group and queue: max are set. It fails against main's workflow.

UNVERIFIED: pull_request_target runs the base branch's workflow file, so this branch cannot exercise the change. It is also unverified that GitHub accepts queue: here and that no cancelled check appears after a label swap. Both show up only after merge.

…1066)

Drop cancel-in-progress and queue runs with `queue: max`, so no run in a per-item or reconcile group is cancelled. Freshness still holds: runs on an item never overlap and each re-reads the labels, so the last to execute sees the final state. TestConcurrency now pins that only `group` and `queue: max` are set.
@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 6, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Cross-review verdict on 1f00944e1: GOOD TO GO (ran on Sonnet; author Opus)

  • queue: max is documented. I checked GitHub's concurrency docs myself, and the reviewer re-checked them along with the workflow-syntax reference:
    • up to 100 runs can wait instead of being cancelled;
    • combining it with cancel-in-progress: true is a validation error;
    • ordering is FIFO but not guaranteed, which the header comment already says.
  • Freshness holds. sync() re-reads the item at run time (util/project_status.py:208), and runs on one item never overlap. The last run therefore reads the final labels, whatever order the runs execute in.
  • The security model is unchanged. The diff touches only comments and the concurrency: block. test_project_status gives 42 OK with PyYAML, and 42 OK with 4 skipped without it.
  • The new test discriminates. test_nothing_is_cancelled fails against main's workflow. All 21 tests/project modules pass.
  • Unverified until merge: pull_request_target runs main's copy of the workflow, so GitHub's acceptance of the queue key and the end of the red checks only show after this lands.

@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 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Coverage: 88.74% (unit tier, Python 3.14, 1f00944e1, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 4 20 4 93.55%
pcapkit/const 18757 1035 2342 846 90.23%
pcapkit/corekit 1874 91 578 22 94.33%
pcapkit/dumpkit 136 0 40 0 100.00%
pcapkit/foundation 2422 143 842 37 92.52%
pcapkit/interface 112 7 40 5 92.11%
pcapkit/protocols 15653 187 3942 162 98.19%
pcapkit/toolkit 487 71 144 3 84.15%
pcapkit/utilities 429 4 122 4 98.55%
pcapkit/vendor 4409 2359 1006 158 42.84%

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

@JarryShaw
JarryShaw merged commit efc9c37 into main Oct 6, 2026
76 of 79 checks passed
@JarryShaw
JarryShaw deleted the ci/1066-project-status-superseded branch October 6, 2026 13:20
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Oct 6, 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.

ci(project-status): a superseded Sync Status run leaves a red check on the PR

1 participant