Skip to content

Prepare Python release sets with pinned candidate SDKs - #420

Merged
zeth merged 1 commit into
mainfrom
feat/release-python-artifact-reuse
Nov 9, 2026
Merged

zeth merged 1 commit into
mainfrom
feat/release-python-artifact-reuse

Conversation

@zeth

@zeth zeth commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Python release preparation currently invokes Kit's SDK producer again and leaves the two packages' build artifacts outside the resumable candidate record. Add release.py packages --record ... --wait to prepare both distribution sets from the frozen candidate source, using the existing build/installation/live-test workflows with destination=none.

Kit skips its SDK producer when given the generated candidate manifest and immutable manifest commit. Fetch the pinned core-selection artifact by ID and checksum, select the original Daemon run's platform SDK archive, and verify its size/checksum against that selection before passing it through the existing SDK installer and manifest/interface checks. Preserve cached SDK producer identities. Existing manual workflows retain their same-run SDK path and publishing rules.

Both packages now produce source/version/file-hash manifests. The coordinator captures run attempts, immutable artifact IDs, archive hashes, package metadata, complete file sets and per-file hashes; Kit's manifest and wheel core metadata must agree with the candidate's original SDK selection. Interrupted dispatches reconcile without duplicates, failed package jobs can be retried independently, successful siblings are reused, and accepted/expired/changed sets cannot be silently replaced. The local summary lists every distribution hash. Update the runbook and add the Python preparation/recovery guide.

This slice stops at packages_prepared. Publication from the prepared bytes, signing/promotion handoffs, PPA availability and final destination completion remain subsequent #120 work. The current manual PyPI dispatches still rebuild; the docs state that limitation explicitly. No production tags, Release build/staging dispatches or package uploads were started to validate this PR.

Validation: 78 release tests and 41 staging tests pass. New coverage includes complete package preparation/resume, lost dispatches, targeted retries, source/attempt drift, archive digest failure, expiry/replacement, actual Kit manifest-producer compatibility, missing/extra/changed distributions, metadata/SDK mismatch, and a pinned SDK fetch through the real installer. A real holder-python wheel and sdist build passed the new verifier. Core/contract boundaries, root version, YAML parsing and diff checks pass. The next actual release will exercise the full remote pinned-SDK path.

Continues #120 and #122.

@zeth
zeth merged commit e0e331d into main Nov 9, 2026
123 of 124 checks passed
@zeth
zeth deleted the feat/release-python-artifact-reuse branch November 9, 2026 10:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant