Skip to content

fix(release): trust sealed artifact inventory - #544

Closed
jeremi wants to merge 1 commit into
mainfrom
codex/v015-simplify-artifact-contract
Closed

jeremi wants to merge 1 commit into
mainfrom
codex/v015-simplify-artifact-contract

Conversation

@jeremi

@jeremi jeremi commented Jul 28, 2026

Copy link
Copy Markdown
Member

Summary

  • remove the hardcoded five-artifact receipt cardinality check from release publication
  • accept additional exact-attempt artifacts in the inventory while continuing to require the mandatory candidate set
  • remove the recovery-only artifact metadata rewrite
  • keep promotion closed over the names, IDs, and SHA-256 hashes bound by the sealed receipt

Root cause

Recovery run 30383767143 reached the prewrite candidate verifier and failed because the sealed v0.15.0 receipt correctly binds four payload artifacts, while the publication workflow separately required exactly five. The receipt schema already derives the exact expected payload set from whether repeatability comparisons were performed, so the workflow count was duplicated and stale.

Impact

The release path no longer needs an allowlist or hardcoded count for auxiliary artifacts produced by the same candidate attempt. Extra reports cannot be promoted unless the sealed receipt names them and binds their artifact IDs and archive hashes. Mandatory candidate artifacts, receipt validation, attestations, scans, provenance, and no-rebuild promotion remain unchanged.

Verification

  • python3 -m unittest release/scripts/test_release_candidate.py (20 passed)
  • python3 -m unittest release/scripts/test_registry_release.py (92 passed)
  • python3 release/scripts/check-gates-inventory.py (168 gates)
  • release workflow YAML parses with PyYAML
  • git diff --check

Security review note

This changes release provenance tooling. The preserved invariant is that only artifacts explicitly bound by the sealed candidate receipt, with exact IDs and SHA-256 archive hashes, are downloaded and promoted. Additional same-attempt artifacts may exist in metadata but are not trusted as release payloads.

Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
@jeremi
jeremi marked this pull request as ready for review July 28, 2026 17:44
@jeremi
jeremi enabled auto-merge (squash) July 28, 2026 17:45

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 771ffabc03

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread release/scripts/release_candidate.py Resolved
@jeremi jeremi closed this Jul 30, 2026
auto-merge was automatically disabled July 30, 2026 07:19

Pull request was closed

@jeremi
jeremi deleted the codex/v015-simplify-artifact-contract branch October 20, 2026 04:03
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