fix(cic): re-record development pair and tighten python-release spec assertion

Address PR #2875 review:

- Re-record python/development.i18n.yaml (corpus verify-translation-pairing was
  out of sync after editing development.md/zh.md) and the 2026-08-11
  python-publication-workflow pair after the dry-run wording tweak.
- Tighten the python-release spec assertion to the exact event set
  (['workflow_dispatch']) instead of not.toHaveProperty('pull_request').
- Fix the 'dry-run run' wording in development.md and the note.

Corpus-wide verify-translation-pairing (1001 pairs) and note-format (594) pass;
ci-workflow.spec.ts 14/14.
This commit is contained in:
Chinesezjc
2026-08-21 11:53:50 +08:00
parent cb5b762922
commit 374f3cdb07
5 changed files with 6 additions and 6 deletions
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-11-python-publication-workflow.md
2026-08-11-python-publication-workflow.md: 15900d70f5c78eea92e8bbe908f395f243bea527
2026-08-11-python-publication-workflow.md: db346dfb96d1657e732c72a3f7a3ca74f92a947a
2026-08-11-python-publication-workflow.zh.md: 17b9b14dd16d85301796a38bb64c464c94a8ab9a
@@ -10,7 +10,7 @@ The Python SDK comprises one platform-independent client wheel and three native
## Decision
The `Release (Python)` GitHub workflow exposes credential-free validation to manual runs with `publish=false`. The run calls the native wheel builder for all three platforms, installs the Linux release set on Python 3.10 and 3.14, downloads the four resulting artifacts, verifies their exact filenames and package metadata, enforces PyPI's default per-file size limit, records SHA-256 hashes, and retains one aggregate release candidate. These jobs have only repository read permission and no registry credential or OIDC permission, and a dry-run run cannot enter either publication job.
The `Release (Python)` GitHub workflow exposes credential-free validation to manual runs with `publish=false`. The run calls the native wheel builder for all three platforms, installs the Linux release set on Python 3.10 and 3.14, downloads the four resulting artifacts, verifies their exact filenames and package metadata, enforces PyPI's default per-file size limit, records SHA-256 hashes, and retains one aggregate release candidate. These jobs have only repository read permission and no registry credential or OIDC permission, and a dry run cannot enter either publication job.
A run with `publish=true` must use the `python-v<repository-version>` tag in the private automation repository, match that repository's `github.repository` to its repository-scoped `PYPI_PUBLISHER_REPOSITORY` variable, find `PUBLIC_PYPI_RELEASE_ENABLED=true`, and receive approval from the `pypi-runtime` and `pypi` GitHub environments for runtime and SDK publication, respectively. The read-only public mirror supplies the package metadata URLs but does not run release Actions. Only the two publication jobs receive `id-token: write`; PyPI Trusted Publishing exchanges the private repository identity for short-lived project credentials, so the repository stores no PyPI token.
+2 -2
View File
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write python/development.md
development.md: 617d030294dafa51aea513adb811bb5f377431c9
development.zh.md: be2a6196aed13a4f748e1b178f34603bbd08e5ac
development.md: d684dafea21a8e71f7819279e5885b6e63b8f7f7
development.zh.md: 9eaab7c1633870367d4de3b79cd630146d284ff2
+1 -1
View File
@@ -79,7 +79,7 @@ The runtime distribution is wheel-only. The release pipeline publishes three pla
## Validate a release candidate
Manually run the GitHub `Release (Python)` workflow with `publish=false` to build all four wheels, install the Linux release set on Python 3.10 and 3.14, check exact filenames and metadata, enforce PyPI's default per-file size limit, and retain one aggregate artifact with SHA-256 hashes. The run has no registry credentials; a dry-run run cannot enter either publication job.
Manually run the GitHub `Release (Python)` workflow with `publish=false` to build all four wheels, install the Linux release set on Python 3.10 and 3.14, check exact filenames and metadata, enforce PyPI's default per-file size limit, and retain one aggregate artifact with SHA-256 hashes. The run has no registry credentials; a dry run cannot enter either publication job.
Public publication runs from the private automation repository; package metadata points to the separate read-only public source mirror, which does not run release Actions. The private repository defines the repository variable `PYPI_PUBLISHER_REPOSITORY` as its own `owner/name` and keeps `PUBLIC_PYPI_RELEASE_ENABLED=false` except during an intentional release.
+1 -1
View File
@@ -288,7 +288,7 @@ describe('Python release workflows', () => {
}
expect(dispatch.inputs.publish).toMatchObject({ type: 'boolean', default: false })
expect(workflow.on).not.toHaveProperty('pull_request')
expect(Object.keys(workflow.on)).toEqual(['workflow_dispatch'])
expect(build).toMatchObject({
if: "github.event_name == 'workflow_dispatch'",
uses: './.github/workflows/build-exe-for-python-sdk.yml',