Skip to content

ci: bind registry parity before release admission - #29

Draft
abrichr wants to merge 5 commits into
mainfrom
codex/release-admission-order-20260820
Draft

ci: bind registry parity before release admission#29
abrichr wants to merge 5 commits into
mainfrom
codex/release-admission-order-20260820

Conversation

@abrichr

@abrichr abrichr commented Aug 20, 2026

Copy link
Copy Markdown
Member

Summary

  • make the pushed vX.Y.Z tag the one authoritative publish event; publishing the GitHub Release cannot start a second publisher run
  • fail closed before publication unless server.json validates against the exact MCP 2025-12-11 schema bytes and pinned SHA-256
  • pin mcp-publisher 1.8.1 and verify its published SHA-256 before OIDC use
  • verify exact PyPI artifact bytes, the PyPI latest record, the exact MCP record, and the MCP latest record after publication
  • upload a bounded 30-day admission-candidate handoff bound to the Agent source commit and one exact central lifecycle policy commit
  • keep registry parity in a separate downstream job so a retry cannot publish a package or MCP record twice
  • remove static Agent maturity labels; release status remains derived from central admission

Authority and evidence boundary

The candidate says not_admitted. It contains no admission ID, release identity, or Production channel selector. PyPI latest and MCP latest are parity evidence only. The signed active ledger in OpenAdaptAI/.github remains the sole Production authority.

The Actions artifact is a temporary transport copy, not the durable evidence record. Before activation, the central process must verify its exact digest and copy it with the supporting release evidence into the immutable evidence store. If the handoff expires first, registry parity must run again.

This PR stays draft because the central admission ledger has no active Agent admission. A future release still needs independent acceptance evidence and an active signed central admission. The activation path must also confirm that the current public defaults still equal the candidate before it admits the release.

Validation

  • 106 locked tests passed, including schema-unavailable and schema-byte-change refusal tests
  • Ruff check passed
  • workflow YAML parsed
  • live exact-schema validation passed at pinned SHA-256 3fba09590c99f61735d234822279f4223fab9e300c0a81e81c91ab62a4114de0
  • wheel and source archive built
  • release artifact, MIT license, and source-boundary checks passed
  • exact-head Python 3.10, 3.11, and 3.12 CI passed
  • exact-head CodeQL, dependency review, release dry run, and secret scan passed

No package, MCP record, release, or Production admission was published by this PR.

@abrichr
abrichr force-pushed the codex/release-admission-order-20260820 branch from a25dba5 to ff6e876 Compare August 20, 2026 16:32
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