Skip to content

🐛 fix(release): verify locks and isolate patches - #12

Merged
gaborbernat merged 56 commits into
mainfrom
build/rc-067
Oct 24, 2026
Merged

gaborbernat merged 56 commits into
mainfrom
build/rc-067

Conversation

@gaborbernat

@gaborbernat gaborbernat commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Release jobs verify selected lock artifacts against PyPI's Simple API before installing caller tools. The check rejects direct-source packages and uncooled artifacts across platform and build selections. A pinned CA bundle and bounded retries cover PyPI metadata requests.

Preparation recalculates the tag from the checkout and validates the uploaded patch in a keyless job before the App-key writer runs. The weekly updater checks lock and hook patches against separate path allowlists. Its PR must carry the configured release App identity. Managed dependency pins must be exact, published on PyPI, and at least seven days old. Hook revisions retain the seven-day observation rule.

PR checks validate changed primary and configured secondary locks against the project. Release and updater jobs transfer artifacts by upload ID. The lock reader has its own environment so installing another tool group cannot remove its certificate package. The shared lock selects release-creator 1.0.0 from PyPI.

Removed inputs: build-python-distribution.source, read-towncrier-config.working-directory, validate-release-patch.working-directory, recheck-hook-update-cooldown.minimum-days, and the unused validate-python-release inputs changelog, artifact-base-url, artifact-label, and local-tool-source.

Callers that use the weekly updater must pass their public repository-level RELEASE_APP_CLIENT_ID variable to check-hook-update-cooldown. Callers with a secondary lock must supply its matrix to validate-news as well as to the updater.

@gaborbernat gaborbernat added the dependencies Dependency updates label Oct 23, 2026
The writer previously checked the merged diff, so either artifact could modify files owned by the other. Check each patch against HEAD in a temporary index before applying it.

Remove four unused validate-python-release inputs that suggested they affected the tagged build.
Caller lock timestamps can be forged to bypass the seven-day cutoff. Compare selected files with PyPI's Simple JSON listing before installing caller groups, and reject alternate Nab indexes and nab.toml.
Action tests launch Python tools in isolated environments, so ordinary coverage misses them. Start coverage in those processes and test the cooldown, lock, and PyPI guards that security review identified.
Concurrent Action tests repeatedly queried PyPI and failed when its endpoint was unreachable. Serve a fixed test listing to the lock checker while keeping production URL and verification unchanged.
@gaborbernat gaborbernat changed the title 🔧 build: admit release-creator 0.6.7 🐛 fix(release): verify locks and isolate patches Oct 23, 2026
@gaborbernat gaborbernat added the bug Something isn't working label Oct 23, 2026
@gaborbernat
gaborbernat marked this pull request as ready for review October 24, 2026 06:18
@gaborbernat
gaborbernat merged commit 6d5b119 into main Oct 24, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working dependencies Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant