SIGN IN SIGN UP

fix: tighten workflow permissions (zizmor excessive-permissions) (#338)

## Summary

Resolves `zizmor/excessive-permissions` findings in two workflows by
applying least-privilege permissions.

- **`ci.yml`**: Add top-level `permissions: contents: read` — all jobs
were previously inheriting the repo's default write permissions with no
explicit restriction
- **`_release.yml`**: Add top-level `permissions: contents: read` for
the same reason; replace `permissions: write-all` on the
`test-pypi-publish` job with `permissions: id-token: write` (the minimum
needed for PyPI trusted publishing)

The `publish` and `mark-release` jobs already had explicit minimal
job-level permissions (`id-token: write` and `contents: write`
respectively) and are unaffected.

## What's not changed

The `ref-version-mismatch` and `secrets-inherit` zizmor findings are out
of scope for this PR.

🤖 Submitted by langster-patch

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
J
John Kennedy committed
1d7a9674b89f91782d56bbac2bbed029a1a9df8e
Parent: 0785b06
Committed by GitHub <noreply@github.com> on 2/28/2026, 9:06:56 PM