diff --git a/docs/source/contributing/pep.rst b/docs/source/contributing/pep.rst index 7b86823e9..4f3b39997 100644 --- a/docs/source/contributing/pep.rst +++ b/docs/source/contributing/pep.rst @@ -851,12 +851,30 @@ from the same test. Worth spelling out how that workflow is *reached*, because reading its ``on:`` block alone suggests it is not reachable from an ordinary commit at all — it -lists only ``push`` on ``v*`` tags and a ``workflow_run``. The chain is: - -.. code-block:: text - - push to main -> "Vendor Update" (cron-vendor.yml, which triggers on push to main) - -> "Create Release" (workflow_run, on Vendor Update completing) +lists only ``push`` on ``v*`` tags and a ``workflow_run``. The chain is three +hops, not two: a push to ``main`` triggers **Unit Tests** +(``unit-tests.yml``), whose completion triggers **Vendor Update** +(``cron-vendor.yml``) via ``workflow_run`` -- ``cron-vendor.yml`` carries no +``push`` trigger of its own, deliberately, per its own comment at +``cron-vendor.yml:6-13`` -- and *that* completion triggers **Create Release** +itself. :doc:`workflows` draws the repository-wide version of this graph; +here is just the path that matters for a release: + +.. mermaid:: + + flowchart TD + PUSH["push: main"] + + UT["Unit Tests
unit-tests.yml"] + VU["Vendor Update
cron-vendor.yml"] + CR["Create Release
create-release.yml"] + + PUSH --> UT + UT ==>|workflow_run: completed| VU + VU ==>|workflow_run: completed| CR + + classDef trig fill:none,stroke-dasharray:2 2 + class PUSH trig Every publishing job — ``github``, ``tag``, ``pypi``, ``conda`` — is gated on ``startsWith(github.ref_name, 'v')`` or on evidence that its own target still