Skip to content

Commit 6f42981

Browse files
chore(main): release 0.1.0 (#20)
Finalize the generated stable release, align stable documentation, and remove the one-time recovery bridge. 0.1.0 is approved for PyPI publication.
1 parent 2e5407c commit 6f42981

15 files changed

Lines changed: 135 additions & 109 deletions

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.1.0-alpha.1"
2+
".": "0.1.0"
33
}

AGENTS.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ Post-alpha invariants:
9797
2. Keep `.github/CODEOWNERS` absent until a real multi-maintainer model exists.
9898
3. Keep scheduled and manually dispatched live smoke fail-closed behind
9999
`LIVE_SMOKE_ENABLED=true`, and keep `RELEASE_PLEASE_ENABLED` disabled outside
100-
an explicitly authorized release sequence. The stable-readiness
101-
configuration establishes the recovery alpha boundary with a reviewed and
102-
tested `last-release-sha` bridge.
100+
an explicitly authorized release sequence. The reviewed `last-release-sha`
101+
bridge was used once to generate the stable release PR and must remain absent
102+
after its human finalization.
103103
4. Treat the recorded public rules, security reporting, immutable releases, and
104104
protected environments as readiness invariants. Any drift invalidates the
105105
readiness claim until it is explicitly authorized, restored, and verified.
@@ -265,11 +265,10 @@ committed.
265265
`v0.1.0-alpha.1+recovery.1`, which maps to package version `0.1.0a1`.
266266
Later releases must use their ordinary canonical tag spelling.
267267
- Keep Release Please disabled outside an explicitly authorized release
268-
sequence. Its stable-readiness configuration uses the reviewed and tested
269-
`last-release-sha` bridge because the recovery tag's build metadata cannot be
270-
inferred from the manifest. Remove the one-time bridge and prerelease
271-
versioning controls in the human-finalized stable release PR before it is
272-
merged.
268+
sequence. The stable-readiness configuration used a reviewed and tested
269+
`last-release-sha` bridge because the recovery tag's build metadata could not
270+
be inferred from the manifest. The human-finalized stable release PR removed
271+
that bridge and its prerelease-versioning controls; keep them absent.
273272
- Keep third-party Actions pinned to full commit SHAs. Grant `id-token: write`
274273
only to the reusable publication caller and the protected publishing job;
275274
the caller passes this maximum permission and only the publishing job uses

ARCHITECTURE.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,10 @@ recovery release uses SemVer build metadata in
141141
artifact identity: the PyPI version remains `0.1.0a1`.
142142

143143
Release Please remains disabled outside an explicitly authorized release
144-
sequence. The stable-readiness configuration establishes the recovery commit
145-
as the previous-release boundary with a tested `last-release-sha` bridge, so
146-
the one-time build-metadata recovery tag cannot replay earlier history.
144+
sequence. The stable-readiness configuration used a tested `last-release-sha`
145+
bridge to establish the recovery commit as the previous-release boundary and
146+
generate the stable release PR without replaying earlier history. Human
147+
finalization then removed that one-time bridge.
147148

148149
## Rejected 0.1 approaches
149150

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,15 @@ automation.
66

77
## [Unreleased]
88

9-
### Changed
9+
## [0.1.0] - 2026-07-28
10+
11+
### Features
12+
13+
- Prepare the stable release ([#19](https://github.com/cometapi-dev/cometapi-python/issues/19)) ([2e5407c](https://github.com/cometapi-dev/cometapi-python/commit/2e5407c106b6bc557c51e629b4713012dbce3744)).
14+
15+
### Documentation
16+
17+
- Record Registry Alpha release evidence ([#18](https://github.com/cometapi-dev/cometapi-python/issues/18)) ([f39b4dc](https://github.com/cometapi-dev/cometapi-python/commit/f39b4dc9f2e18e91ab3cbac202246f85658f71fd)).
1018

1119
- Release documentation now records completed Registry Alpha publication,
1220
provenance, digest, clean-install, import, and mocked-call verification.
@@ -53,3 +61,5 @@ automation.
5361
- Unsupported aliases `CometClient` and `AsyncCometClient`.
5462
- Account, balance, token, log, task, and platform helpers from the 0.1 scope.
5563
- The provisional single-maintainer `CODEOWNERS` requirement.
64+
65+
[0.1.0]: https://github.com/cometapi-dev/cometapi-python/compare/v0.1.0-alpha.1%2Brecovery.1...v0.1.0

CONTRIBUTING.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
# Contributing to the CometAPI Python SDK
22

3-
Thank you for helping improve the SDK. The repository has released the
4-
`0.1.0a1` Registry Alpha. Contributions must stay within the supported 0.1
5-
scope described in `README.md`, `ROADMAP.md`, and `COMPATIBILITY.md`. The
6-
canonical repository is
3+
Thank you for helping improve the SDK. The repository targets the stable 0.1
4+
contract. Contributions must stay within the supported 0.1 scope described in
5+
`README.md`, `ROADMAP.md`, and `COMPATIBILITY.md`. The canonical repository is
76
<https://github.com/cometapi-dev/cometapi-python>.
87

98
## Development setup
@@ -79,7 +78,7 @@ Use Conventional Commit subjects where practical, for example:
7978
```text
8079
feat: add a supported client option
8180
fix: preserve an upstream error type
82-
docs: clarify alpha installation
81+
docs: clarify installation
8382
test: cover async response streaming
8483
```
8584

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# CometAPI Python SDK
22

3-
> **Pre-release:** `0.1.0a1` is available from PyPI. Its API may change before
4-
> `0.1.0`.
3+
> **Stable release:** `0.1.0` is approved for PyPI publication.
54
65
`cometapi` is a thin Python adapter over the official OpenAI SDK for the
76
OpenAI-compatible CometAPI endpoint. It changes the default API key and base
@@ -30,15 +29,16 @@ Project links: [CometAPI](https://www.cometapi.com),
3029

3130
## Installation
3231

33-
Install the exact alpha from PyPI with:
32+
After the protected publication workflow and public-registry verification
33+
succeed, install the stable release from PyPI with:
3434

3535
```bash
36-
python -m pip install --pre 'cometapi==0.1.0a1'
36+
python -m pip install 'cometapi==0.1.0'
3737
```
3838

39-
See the immutable
40-
[GitHub prerelease](https://github.com/cometapi-dev/cometapi-python/releases/tag/v0.1.0-alpha.1%2Brecovery.1)
41-
and exact [PyPI release](https://pypi.org/project/cometapi/0.1.0a1/) for the
39+
After those gates succeed, the immutable
40+
[GitHub release](https://github.com/cometapi-dev/cometapi-python/releases/tag/v0.1.0)
41+
and exact [PyPI release](https://pypi.org/project/cometapi/0.1.0/) for the
4242
published artifact.
4343

4444
## Authentication and configuration
@@ -160,7 +160,7 @@ This is an interoperability option, not the primary `cometapi` experience.
160160

161161
## Explicit non-goals for 0.1
162162

163-
The alpha does not add Anthropic or Gemini adapters, CometAPI account or
163+
The 0.1 release does not add Anthropic or Gemini adapters, CometAPI account or
164164
platform resources, media APIs, provider-neutral message translation, CLI
165165
behavior, or custom HTTP/SSE/retry implementations. There are no compatibility
166166
aliases named `CometClient` or `AsyncCometClient`.

RELEASING.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,11 @@ one active maintainer.
4646
Before the historical first push, scheduled and manually dispatched live
4747
execution was required to fail closed unless `LIVE_SMOKE_ENABLED=true`.
4848
`RELEASE_PLEASE_ENABLED` was kept disabled. The reviewed stable-readiness
49-
configuration now uses an explicit `last-release-sha` bridge to establish the
50-
recovery alpha as the previous-release boundary; the repository variable stays
51-
disabled until maintainers intentionally start the stable release sequence. An
52-
unset or non-true value prevents the corresponding gated job from executing.
49+
configuration later used an explicit `last-release-sha` bridge to establish the
50+
recovery alpha as the previous-release boundary. Maintainers enabled the
51+
repository variable only to start the stable release sequence, and human
52+
finalization removed the bridge. An unset or non-true variable prevents the
53+
corresponding gated job from executing.
5354
The release live-model configuration resolves an unset or empty
5455
`COMETAPI_LIVE_MODEL` to `gpt-5.4`.
5556

@@ -182,14 +183,14 @@ violations in one run and still returns non-zero when any violation exists.
182183
`LIVE_SMOKE_ENABLED=true`.
183184
- `release-please.yml` maintains a human-reviewed version and changelog pull
184185
request from Conventional Commits after maintainers enable the
185-
`RELEASE_PLEASE_ENABLED` repository variable. The checked-in stable-readiness
186-
configuration establishes the recovery release boundary with the reviewed
187-
`last-release-sha` bridge. Keep the variable disabled except while executing
188-
an explicitly authorized release sequence. When it creates an approved
189-
release with the GitHub workflow token, it polls the GitHub API until that
190-
exact tag and commit are independently reported as immutable, then invokes
191-
the protected publication chain directly; workflow-token release events do
192-
not trigger a second workflow run.
186+
`RELEASE_PLEASE_ENABLED` repository variable. A reviewed one-time
187+
`last-release-sha` bridge established the recovery release boundary and was
188+
removed during human finalization of the stable release PR. Keep the variable
189+
disabled except while executing an explicitly authorized release sequence.
190+
When it creates an approved release with the GitHub workflow token, it polls
191+
the GitHub API until that exact tag and commit are independently reported as
192+
immutable, then invokes the protected publication chain directly;
193+
workflow-token release events do not trigger a second workflow run.
193194
- `publish.yml` is called only with the independently verified immutable tag,
194195
commit, and default branch. It resolves the tag to the checked-out commit,
195196
fetches the protected default branch, and rejects a commit that is not
@@ -238,9 +239,9 @@ Maintainers then completed these steps in order:
238239
OIDC publication but failed before PyPI accepted any distribution. The
239240
recovery build suffix preserves the equivalent PEP 440 package version
240241
`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.
242+
for later releases. Release Please was kept disabled until a separate
243+
reviewed and tested `last-release-sha` bridge established this recovery
244+
commit as its previous-release boundary.
244245
5. The release workflow proved `immutable=true`, resolved the tag to the
245246
checked-out commit, verified that commit was reachable from the protected
246247
default branch, and ran the bounded protected live suite against that exact
@@ -280,8 +281,9 @@ changelog, GitHub release, wheel, and source distribution.
280281
and source-distribution SHA256
281282
`98d86829ef14771e8b7ec180d452c6638289f49c14a39b7207be5c47cb64cde7`.
282283
- `LIVE_SMOKE_ENABLED=false`. Release Please remains disabled outside an
283-
explicitly authorized release sequence; the reviewed `last-release-sha`
284-
bridge is configured for the alpha-to-stable transition.
284+
explicitly authorized release sequence. The reviewed `last-release-sha`
285+
bridge generated the stable release PR and was removed during human
286+
finalization.
285287

286288
## Stable release sequence
287289

ROADMAP.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,9 @@ Public Preview readiness evidence on 2026-07-27:
314314
`LIVE_SMOKE_ENABLED` opt-in was reset to `false` after the run.
315315
- At this Public Preview checkpoint, no tag, GitHub release, Trusted Publisher,
316316
PyPI OIDC publication, provenance, or public-registry installation existed.
317-
Those later Registry Alpha actions are recorded below. Release Please remains
317+
Those later Registry Alpha actions are recorded below. Release Please remained
318318
disabled until a separately reviewed and tested `last-release-sha` bridge
319-
establishes the recovery alpha as its previous-release boundary.
319+
established the recovery alpha as its previous-release boundary.
320320

321321
Public Preview remains ready only while:
322322

@@ -417,9 +417,9 @@ Accepted release evidence:
417417
its source-distribution SHA256 is
418418
`98d86829ef14771e8b7ec180d452c6638289f49c14a39b7207be5c47cb64cde7`.
419419
- `LIVE_SMOKE_ENABLED=false`. Release Please remains disabled outside an
420-
explicitly authorized release sequence; the reviewed stable-readiness
421-
configuration now establishes the recovery alpha boundary with
422-
`last-release-sha`.
420+
explicitly authorized release sequence. The reviewed stable-readiness
421+
`last-release-sha` bridge generated the stable release PR and was removed
422+
during human finalization.
423423

424424
## `0.1.0`: OpenAI protocol foundation
425425

@@ -480,9 +480,10 @@ successfully in the canonical GitHub repository.
480480
Scheduled and manually dispatched live smoke must require
481481
`LIVE_SMOKE_ENABLED=true`; an unset or other value prevents live execution.
482482
Release Please requires `RELEASE_PLEASE_ENABLED=true` and remains disabled
483-
outside an explicitly authorized release sequence. Its stable-readiness
484-
configuration uses the reviewed `last-release-sha` bridge for the recovery
485-
alpha boundary. Release jobs must resolve an unset or empty
483+
outside an explicitly authorized release sequence. Its reviewed one-time
484+
`last-release-sha` bridge established the recovery alpha boundary, generated
485+
the stable release PR, and was removed during human finalization. Release jobs
486+
must resolve an unset or empty
486487
`COMETAPI_LIVE_MODEL` to `gpt-5.4` rather than attempt a request with an empty
487488
model.
488489

SECURITY.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
## Supported versions
44

5-
The SDK is in pre-release development. Published support claims begin only
6-
after a package is independently verified from PyPI.
5+
The SDK's supported 0.1 API surface is stable. Security support applies to
6+
packages that have been independently verified from PyPI.
77

88
| Version | Status |
99
| --- | --- |
10-
| `0.1.x` prereleases | Best-effort security fixes after verified publication |
11-
| `0.1.x` stable | Planned support after verified publication |
10+
| `0.1.x` stable | Supported |
11+
| `0.1.x` prereleases | Best-effort security fixes |
1212
| Older versions | Unsupported |
1313

1414
## Reporting a vulnerability
@@ -17,14 +17,13 @@ Do not disclose a suspected vulnerability, credential, customer data, or
1717
exploit details in a public issue.
1818

1919
Use the repository's
20-
[private security advisory form](https://github.com/cometapi-dev/cometapi-python/security/advisories/new)
21-
when it is available. During private validation, before GitHub Private
22-
Vulnerability Reporting is enabled, email `support@cometapi.com` with the
23-
subject "Security report" and only the minimum details needed to establish a
20+
[private security advisory form](https://github.com/cometapi-dev/cometapi-python/security/advisories/new).
21+
If that form is unavailable, email `support@cometapi.com` with the subject
22+
"Security report" and only the minimum details needed to establish a
2423
confidential follow-up channel. Do not disclose sensitive details publicly.
2524

2625
The maintainers will acknowledge and triage reports as soon as practical, but
27-
no response-time service-level agreement is promised for prereleases.
26+
no response-time service-level agreement is promised.
2827
Coordinated disclosure timing will be agreed with the reporter.
2928

3029
## Credential safety
@@ -47,8 +46,9 @@ Long-lived PyPI tokens are not an accepted publication path. A successful
4746
upload is incomplete until provenance and a clean public-registry installation
4847
have been verified.
4948

50-
Third-party GitHub Actions must be pinned to full commit SHAs. Only the
51-
publishing job may receive `id-token: write`.
49+
Third-party GitHub Actions must be pinned to full commit SHAs. The reusable
50+
workflow caller and protected publishing job may declare `id-token: write`, but
51+
only the publishing job may request the OIDC token.
5252

5353
## Scope
5454

SUPPORT.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
## Project status
44

5-
The SDK is in pre-release development. Support is best-effort, and no response
6-
or resolution time is guaranteed.
5+
The SDK's supported 0.1 API surface is stable. Support is best-effort, and no
6+
response or resolution time is guaranteed.
77

88
## Supported SDK surface
99

0 commit comments

Comments
 (0)