docs(contributing): correct pep.rst's release gating description (#956) - #957
Conversation
0016387 to
6bf5baa
Compare
|
NEEDS CHANGES at
Also took its gloss on It verified the four conditions independently, walked both an ordinary commit and a version bump through all four, and confirmed It also found that One suggestion I declined: replacing the cascade-guard sentence with a Round 2 running against |
The page claimed all four publishing jobs are gated on `startsWith(github.ref_name, 'v') || PCAPKIT_TAG_EXISTS == 'false'`, and that an ordinary commit makes "all four jobs skip" for that reason. Only `github` gates on `PCAPKIT_TAG_EXISTS` (create-release.yml:343). The other three gate on their own target: - `tag` on `PCAPKIT_CONDA_TAG_EXISTS` (:447) - `pypi` on `PCAPKIT_PYPI_COMPLETE` (:525) - `conda` on `PCAPKIT_CONDA_COMPLETE` (:625) Three things the page left out, all load-bearing: - each of those three also requires `version_check` to have strictly succeeded, because `!cancelled()` suppresses the `success()` Actions prepends over the whole `needs:` list; - `github` -- and for `conda` also `tag` -- must have succeeded or skipped, which is what stops a legitimate skip cascading; - naming those two states rather than writing `!= 'failure'` is what makes a cancelled dependency skip the job below it cleanly instead of running it against an artefact never produced (:121-128, pinned by test_release_gates.py:624). The shared shape is kept, since it is the true common fact: gate on the `v*` ref, or on evidence the target still needs publishing. The three per-job conditions are named by what they check rather than by their literal expressions, so the page does not re-acquire a boolean that can drift. tests/project/test_release_gates.py pins this shape and passes unchanged: 34 tests, 23 subtests, re-derived as 34 under plain unittest.
378acfb to
32d20fc
Compare
|
NEEDS CHANGES at My fix for round-1 finding 2 stated the mechanism backwards. I had written that the two-state spelling "keeps a cancelled upstream job from" cascade-skipping a job that still has work. It does the opposite, deliberately. Traced through Its diagnosis of the cause is the useful part: the paragraph credited the whole anti-cascade mechanism to "accepting a skip" while never naming The other three fixes it re-checked and passed, including the one I most expected to have over-corrected: Two corrections to my own earlier statements, both material. #953 is merged ( And #953 merged without fixing Round 3 running against |
|
GOOD TO GO at I verified its structural claims myself: On the repaired sentence it went further than confirming the direction. It checked whether "running against an artefact that was never produced" generalises beyond It also confirmed the two-step framing is an improvement rather than a repair: with Two notes I am not acting on, and why.
Still unverified by anyone: no One thing worth your attention beyond this PR: Labelled |
Please follow the guide below
make pylint,make mypy,make isort)make testpasses, and a test case covers the changedocs/source/changelog/and regeneratedCHANGELOG.md, if the change is user-visible — N/A — documentation prose only, no library behaviour changeWhat is the purpose of your pull request?
fix— corrects a defectfeat— adds a featureperf— changes performance, not behaviourrefactor— changes neither behaviour nor performancetest— tests onlydocs— documentation onlyci— workflows or build toolingchore— anything elseDescription of your pull request and other information
Closes #956.
pep.rstdescribed the release gating as it was before #888 changed it, in the present tense.What was wrong. The page said all four publishing jobs gate on
startsWith(github.ref_name, 'v') || PCAPKIT_TAG_EXISTS == 'false', and that this is why "all four jobs skip" on an ordinary commit. OnlygithubreadsPCAPKIT_TAG_EXISTS, atcreate-release.yml:343. The other three read their own target:tagPCAPKIT_CONDA_TAG_EXISTS:447pypiPCAPKIT_PYPI_COMPLETE:525condaPCAPKIT_CONDA_COMPLETE:625And a guard the page omitted entirely. Each of those three also requires
github— andcondaalso requirestag— to have succeeded or skipped rather than failed. That is what stops an upstream job's legitimate skip cascading into skipping a job whose own evidence says it still has work to do, which is the failure #888 was about. A reader of the old text would not have known the guard existed.What the rewrite keeps. The shared shape, because it is the genuine common fact: gate on the
v*ref, or on evidence the target still needs publishing. The three per-job conditions are named by what they check rather than by their literal boolean expressions, so the page cannot re-acquire a condition string that drifts the way this one did.Cross-page consistency.
releasing.rst:109already states the same rule as a prohibition — do not gate a release job on whether thev*tag exists — so the two pages contradicted each other, with the wrong one reading as the description of the system. They now agree.releasing.rstis untouched; #953 owns it.Verification.
tests/project/test_release_gates.pyalready pins this exact shape —test_github_still_gates_on_the_v_tag_it_creates,test_tag_gates_on_its_own_conda_tag_evidence,test_pypi_gates_on_its_own_file_count_evidence,test_conda_gates_on_its_own_aggregate_evidence,test_evidence_gated_jobs_survive_a_legitimately_skipped_predecessor. It passes unchanged: 34 tests, 23 subtests, re-derived as 34 tests, OK under plainunittest. So the facts were already tested; only the prose disagreed. No test pinspep.rst's text. The edited block parses underdocutils.Not verified: no
sphinx-buildwas run, so a cross-reference regression in the edited block is possible. No workflow file was changed.