@@ -44,9 +44,11 @@ completed private initialization and remain unnecessary while the project has
4444one active maintainer.
4545
4646Before the historical first push, scheduled and manually dispatched live
47- execution was required to fail closed unless ` LIVE_SMOKE_ENABLED=true ` , and
48- ` RELEASE_PLEASE_ENABLED ` was kept disabled through the initial manual alpha. An
49- unset or non-true value prevents the corresponding gated job from executing.
47+ execution was required to fail closed unless ` LIVE_SMOKE_ENABLED=true ` .
48+ ` RELEASE_PLEASE_ENABLED ` was kept disabled and remains disabled until a
49+ separately reviewed and tested ` last-release-sha ` bridge establishes the
50+ recovery alpha as the previous-release boundary. An unset or non-true value
51+ prevents the corresponding gated job from executing.
5052The release live-model configuration resolves an unset or empty
5153` COMETAPI_LIVE_MODEL ` to ` gpt-5.4 ` .
5254
@@ -179,9 +181,11 @@ violations in one run and still returns non-zero when any violation exists.
179181 ` LIVE_SMOKE_ENABLED=true ` .
180182- ` release-please.yml ` maintains a human-reviewed version and changelog pull
181183 request from Conventional Commits after maintainers enable the
182- ` RELEASE_PLEASE_ENABLED ` repository variable. Keep it disabled until the
183- initial ` v0.1.0-alpha.1 ` tag exists because the checked-in manifest seeds the
184- next release from the equivalent package version ` 0.1.0a1 ` .
184+ ` RELEASE_PLEASE_ENABLED ` repository variable. Keep it disabled after the
185+ initial ` v0.1.0-alpha.1+recovery.1 ` release: the checked-in manifest version
186+ lacks the recovery tag's build metadata and cannot safely infer the previous
187+ release boundary. Enable it only after a separate reviewed change configures
188+ and tests an explicit ` last-release-sha ` bridge.
185189- ` publish.yml ` runs only for a published immutable GitHub release. It resolves
186190 the tag to the checked-out commit, fetches the protected default branch, and
187191 rejects a commit that is not reachable from that branch. A protected
@@ -228,11 +232,15 @@ remaining authorized steps in order:
228232 ` CHANGELOG.md ` , remove its candidate/unpublished wording, and rerun every
229233 candidate verification gate, including
230234 ` uv run python scripts/check_version.py --expected 0.1.0a1 --require-changelog --require-releasable-docs ` .
231- 4 . Review the exact candidate and create the immutable SemVer tag
232- ` v0.1.0-alpha.1 ` and corresponding GitHub prerelease. The package and Python
233- metadata use the equivalent PEP 440 version ` 0.1.0a1 ` . This is the canonical
234- tag spelling; do not use ` v0.1.0a1 ` . After this initial alpha exists, enable
235- Release Please for later reviewed release pull requests.
235+ 4 . Review the exact candidate and create the immutable SemVer recovery tag
236+ ` v0.1.0-alpha.1+recovery.1 ` and corresponding GitHub prerelease. GitHub
237+ permanently reserved ` v0.1.0-alpha.1 ` after its immutable release reached
238+ OIDC publication but failed before PyPI accepted any distribution. The
239+ recovery build suffix preserves the equivalent PEP 440 package version
240+ ` 0.1.0a1 ` ; it is a one-time exception and must not be incremented or reused
241+ for later releases. Keep Release Please disabled until a separate reviewed
242+ and tested ` last-release-sha ` bridge establishes this recovery commit as its
243+ previous-release boundary.
2362445 . Allow the release workflow to prove ` immutable=true ` , resolve the tag to the
237245 checked-out commit, verify that commit is reachable from the protected
238246 default branch, and run the bounded protected live suite against that exact
0 commit comments