Skip to content

Commit a53ddf9

Browse files
authored
docs: record Public Preview readiness (#14)
Record the completed Public Preview evidence and preserve Registry Alpha as a separately authorized gate.
1 parent fa32e96 commit a53ddf9

3 files changed

Lines changed: 116 additions & 90 deletions

File tree

AGENTS.md

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,15 @@ proves only its own evidence layer. Never invent or mock missing evidence.
5050

5151
## Current milestone: Public Preview
5252

53-
Public Preview pre-visibility complete; visibility change awaiting explicit authorization.
53+
Public Preview ready; `0.1.0a1` Registry Alpha awaits explicit authorization.
5454

55-
Private Remote Validation is complete. The sanitized first history, empty
56-
private repository creation, initial push, and pre-visibility closeout are
57-
completed historical steps and must not be repeated. The canonical repository
58-
remains private at the visibility authorization gate. Public Preview is not
59-
ready, and no pre-visibility implementation task remains.
55+
Private Remote Validation, the sanitized first history, private initialization,
56+
pre-visibility closeout, public visibility configuration, and Public Preview
57+
readiness are completed historical steps and must not be repeated. The
58+
canonical repository is public with protected branch and version-tag rules,
59+
Private Vulnerability Reporting, immutable releases, protected environments,
60+
public default-branch CI, and one authorized protected live-smoke result. No
61+
tag, release, PyPI publication, or Registry Alpha claim exists.
6062

6163
The accepted identity is:
6264

@@ -72,7 +74,7 @@ The accepted identity is:
7274
| Support and conduct | `support@cometapi.com` |
7375
| Security | `https://github.com/cometapi-dev/cometapi-python/security/advisories/new` |
7476

75-
At the visibility authorization gate:
77+
At the Registry Alpha authorization gate:
7678

7779
1. Treat the dependency dispositions recorded in `ROADMAP.md` as authoritative
7880
for the listed pull requests. Process newly opened dependency pull requests
@@ -82,12 +84,13 @@ At the visibility authorization gate:
8284
3. Keep scheduled and manually dispatched live smoke fail-closed behind
8385
`LIVE_SMOKE_ENABLED=true`, and keep `RELEASE_PLEASE_ENABLED` disabled through
8486
the initial manual alpha.
85-
4. Do not create another pre-visibility closeout pull request unless a current
86-
maintainer request explicitly authorizes a new, scoped change.
87-
5. Stop before changing visibility. After an explicitly authorized visibility
88-
change, repository rules, Private Vulnerability Reporting, protected
89-
environments, default-branch CI, and authorized protected live smoke must
90-
pass before Public Preview can be marked ready.
87+
4. Treat the recorded public rules, security reporting, immutable releases, and
88+
protected environments as readiness invariants. Any drift invalidates the
89+
readiness claim until it is explicitly authorized, restored, and verified.
90+
5. Stop before configuring the PyPI Trusted Publisher, changing release
91+
documentation, enabling Release Please, creating a tag or release, making a
92+
live release request, or publishing to PyPI unless the current maintainer
93+
request separately authorizes the applicable action.
9194

9295
## Repository independence
9396

@@ -237,21 +240,20 @@ committed.
237240
with shipped behavior. Use currently supported model IDs.
238241
- All repository documentation is written in English.
239242

240-
Before marking Public Preview ready, run
241-
`uv run python scripts/check_version.py --require-public-preview-docs`. The
242-
gate must report every detected violation and fail until canonical identity,
243-
contacts, repository metadata, and durable public-facing content are complete.
244-
245-
The private repository becoming public begins a short configuration interval;
246-
it does not by itself establish Public Preview readiness. After visibility
247-
changes, require pull requests and blocking CI for `main`, with zero required
248-
approvals, blocked force pushes and deletion, and administrator bypass reserved
249-
for emergencies. Protect version tags from updates and deletion, enable
250-
immutable releases and Private Vulnerability Reporting, configure `live-smoke`
251-
without a required reviewer, and configure `pypi` with approval by the current
252-
release approver and self-review allowed. Rerun CI and the authorized protected
253-
live smoke before recording Public Preview readiness or preparing Registry
254-
Alpha.
243+
The Public Preview readiness record requires
244+
`uv run python scripts/check_version.py --require-public-preview-docs` to keep
245+
passing. The gate must report every detected violation and fail until canonical
246+
identity, contacts, repository metadata, and durable public-facing content are
247+
complete.
248+
249+
Before preparing Registry Alpha, re-audit that `main` still requires pull
250+
requests and blocking CI with zero required approvals, force pushes and deletion
251+
remain blocked, administrator bypass remains emergency-only, version tags remain
252+
protected, immutable releases and Private Vulnerability Reporting remain
253+
enabled, and the `live-smoke` and `pypi` environments retain their reviewed
254+
protection boundaries. The one-time Public Preview live opt-in was reset to
255+
false after its successful run; enable it again only for a separately authorized
256+
monitoring request.
255257

256258
Verification reports must list exact commands and outcomes, failed or
257259
unavailable checks, and unverified remote, live, and registry evidence as

RELEASING.md

Lines changed: 26 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ registry publication. Its recorded CI result is historical evidence, not a
5858
reason to repeat initialization.
5959

6060
The fail-closed content and identity gate was required before the historical
61-
first remote push. Run it again before an explicitly authorized visibility
62-
change and before marking Public Preview ready:
61+
first remote push and passed again before Public Preview readiness. Keep running
62+
it before Registry Alpha preparation and after public-document changes:
6363

6464
```bash
6565
uv run python scripts/check_version.py --require-public-preview-docs
@@ -194,54 +194,47 @@ Arbitrary-branch and manual publication are forbidden.
194194

195195
## Alpha release checklist
196196

197-
For the current canonical repository, the private initialization and
198-
pre-visibility closeout are completed historical prerequisites. The next
199-
external action is a visibility change, and it requires separate explicit
200-
authorization. This checklist defines dependency order, not standing
201-
permission: every remote mutation, live request, release action, and registry
202-
action must be explicitly authorized in the current maintainer request; stop
203-
otherwise. Maintainers execute authorized steps in order:
204-
205-
1. Confirm the recorded canonical identity, absent `CODEOWNERS`, local gates,
206-
sanitized first history, initial private push, credential-free CI, and
207-
pre-visibility closeout. Do not recreate or repeat those historical steps.
208-
2. Obtain explicit authorization for the visibility change and stop if it is
209-
absent.
210-
3. After the authorized repository visibility change, require pull requests and
211-
blocking CI for `main` with zero required approvals, block force pushes and
212-
deletion, reserve administrator bypass for emergencies, protect version tags
213-
from updates and deletion, enable immutable releases and Private
214-
Vulnerability Reporting, and rerun default-branch CI.
215-
4. Configure `live-smoke` with no required reviewer and `pypi` with approval by
216-
the current release approver and self-review allowed. Set
217-
`LIVE_SMOKE_ENABLED=true`, provide the authorized key, and run the protected
218-
budgeted live smoke. Record Public Preview readiness only after the public
219-
content gate and this live run pass.
220-
5. Confirm ownership of the unscoped PyPI package `cometapi` and configure the
197+
For the current canonical repository, private initialization, pre-visibility
198+
closeout, public visibility, repository protection, environments, public
199+
default-branch CI, and the one-time Public Preview live smoke are completed
200+
historical prerequisites. Do not recreate or repeat them. The next external
201+
actions prepare Registry Alpha and require separate explicit authorization.
202+
This checklist defines dependency order, not standing permission: every remote
203+
mutation, live request, release action, and registry action must be explicitly
204+
authorized in the current maintainer request; stop otherwise.
205+
206+
Before continuing, re-audit the recorded Public Preview invariants: protected
207+
`main` and version tags, immutable releases, Private Vulnerability Reporting,
208+
the `live-smoke` and `pypi` environment boundaries, `LIVE_SMOKE_ENABLED=false`,
209+
absent `CODEOWNERS`, and disabled Release Please. Maintainers then execute the
210+
remaining authorized steps in order:
211+
212+
1. Confirm that the company-managed PyPI identity `dev@cometapi.com` owns or can
213+
create the unscoped PyPI package `cometapi`, and configure the
221214
Trusted Publisher for the exact repository, workflow, and `pypi`
222215
environment.
223-
6. Supply `COMETAPI_KEY`, the approved `COMETAPI_LIVE_MODEL`, and explicit
224-
authorization for the documented four-request, 16-token, 30-second,
216+
2. Confirm the protected `COMETAPI_KEY`, the approved `COMETAPI_LIVE_MODEL`,
217+
and explicit authorization for the documented four-request, 16-token, 30-second,
225218
concurrency-one, stop-on-failure budget before creating the GitHub
226219
prerelease.
227-
7. Replace the pre-release availability notice and source-installation text in
220+
3. Replace the pre-release availability notice and source-installation text in
228221
`README.md` with the release-neutral, maintainer-confirmed sentence
229222
`0.1.0a1` is approved for PyPI publication.” Date the `0.1.0a1` heading in
230223
`CHANGELOG.md`, remove its candidate/unpublished wording, and rerun every
231224
candidate verification gate, including
232225
`uv run python scripts/check_version.py --expected 0.1.0a1 --require-changelog --require-releasable-docs`.
233-
8. Review the exact candidate and create the immutable SemVer tag
226+
4. Review the exact candidate and create the immutable SemVer tag
234227
`v0.1.0-alpha.1` and corresponding GitHub prerelease. The package and Python
235228
metadata use the equivalent PEP 440 version `0.1.0a1`. This is the canonical
236229
tag spelling; do not use `v0.1.0a1`. After this initial alpha exists, enable
237230
Release Please for later reviewed release pull requests.
238-
9. Allow the release workflow to prove `immutable=true`, resolve the tag to the
231+
5. Allow the release workflow to prove `immutable=true`, resolve the tag to the
239232
checked-out commit, verify that commit is reachable from the protected
240233
default branch, and run the bounded protected live suite against that exact
241234
commit. Only successful completion makes the protected PyPI approval
242235
eligible; approve that job after reviewing its retained artifact digests.
243-
10. Verify publication, provenance, public artifact identity and digest, clean
244-
installation, import, and the public-registry mocked-call smoke.
236+
6. Verify publication, provenance, public artifact identity and digest, clean
237+
installation, import, and the public-registry mocked-call smoke.
245238

246239
Missing credentials, model/budget approval, environments, publisher
247240
configuration, protection, or approval block the publication dependency chain

ROADMAP.md

Lines changed: 60 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
# CometAPI Python SDK Roadmap
22

33
Status: `0.1.0a1` in progress
4-
Last updated: 2026-07-23
4+
Last updated: 2026-07-27
55
Repository contract: this roadmap is self-contained.
6-
Current gate: Public Preview pre-visibility complete; visibility change awaiting explicit authorization.
6+
Current gate: Public Preview ready; `0.1.0a1` Registry Alpha awaiting explicit authorization.
77

88
## Product target
99

1010
The SDK provides the shortest reliable path from an OpenAI Python integration
1111
to CometAPI while preserving official request, response, error, retry, timeout,
1212
sync, async, and streaming behavior.
1313

14-
Private Remote Validation and the Public Preview pre-visibility closeout are
15-
complete for the sanitized repository, which remains private. Public Preview is
16-
not ready: the next external action is a separately authorized visibility
17-
change, followed by the required public configuration and protected evidence.
18-
Public Preview and the functional `0.1.0a1` prerelease remain separate evidence
19-
gates. Support and release claims remain limited to the evidence defined in
20-
this roadmap and `COMPATIBILITY.md`.
14+
Private Remote Validation and Public Preview are complete for the sanitized
15+
public repository. Protected repository configuration, public default-branch
16+
CI, and an authorized live smoke establish preview readiness. Public Preview
17+
and the functional `0.1.0a1` prerelease remain separate evidence gates; the next
18+
external actions require separate Registry Alpha authorization. Support and
19+
release claims remain limited to the evidence defined in this roadmap and
20+
`COMPATIBILITY.md`.
2121

2222
## Milestones
2323

2424
| Milestone | Status | Exit outcome |
2525
| --- | --- | --- |
2626
| Repository foundation | Complete | Public files, offline gates, packaging checks, and self-containment are complete. |
2727
| Private Remote Validation | Complete | The sanitized private repository passes real credential-free default-branch CI; public-only controls and live tests remain disabled. |
28-
| Public Preview | Awaiting visibility authorization | Pre-visibility work is complete. After a separately authorized visibility change, the public repository must establish blocking CI, repository rules, security reporting, protected environments, and authorized live-smoke evidence before it claims preview readiness. |
29-
| `0.1.0a1` Registry Alpha | Planned | Early adopters can install a functional prerelease from PyPI. |
28+
| Public Preview | Complete | The public repository has blocking CI, repository rules, security reporting, protected environments, immutable releases, and authorized live-smoke evidence. |
29+
| `0.1.0a1` Registry Alpha | Awaiting authorization | Early adopters can install a functional prerelease from PyPI after every release and registry gate passes. |
3030
| `0.1.0` stable | Planned | Complete runtime, release-PR, example, provenance, and registry gates pass. |
3131
| `0.2.0` provider-native text | Planned | Optional official Anthropic and Gemini adapters. |
3232
| `0.3.0` CometAPI resources | Planned | First schema-backed typed CometAPI-specific resource. |
@@ -103,20 +103,21 @@ Recorded evidence on 2026-07-21:
103103

104104
## Public Preview
105105

106-
Public Preview pre-visibility complete; visibility change awaiting explicit authorization.
106+
Public Preview ready as of 2026-07-27.
107107

108-
There is no remaining pre-visibility implementation task. Do not create another
109-
closeout pull request without a new, explicit maintainer request. The recorded
110-
dependency dispositions below remain authoritative for the listed pull
111-
requests. Newly opened dependency pull requests remain pending until a current
112-
maintainer request explicitly authorizes their normal maintenance; they must
113-
not cause closed or superseded dispositions to be described as unfinished.
108+
Private initialization, pre-visibility work, the visibility change, public
109+
configuration, and preview evidence are completed historical steps and must not
110+
be repeated. The recorded dependency dispositions below remain authoritative
111+
for the listed pull requests. Newly opened dependency pull requests remain
112+
pending until a current maintainer request explicitly authorizes their normal
113+
maintenance; they must not cause closed or superseded dispositions to be
114+
described as unfinished.
114115

115-
Public Preview is not ready. The repository must remain private until a
116-
visibility change is explicitly authorized. After that change, repository
117-
rules, Private Vulnerability Reporting, protected environments,
118-
default-branch CI, the public-content gate, and authorized protected live smoke
119-
must pass before the milestone can be marked ready.
116+
The milestone was established only after repository rules, Private
117+
Vulnerability Reporting, immutable releases, protected environments,
118+
public default-branch CI, the public-content gate, and an authorized protected
119+
live smoke passed. Registry Alpha remains a separate authorization and evidence
120+
gate.
120121

121122
Recorded pre-visibility dependency dispositions:
122123

@@ -240,7 +241,7 @@ Failed or unavailable checks:
240241
probe in a fresh detached worktree failed closed before the verified cache was
241242
populated; it is not final-candidate validation evidence.
242243

243-
Remote evidence:
244+
Recorded pre-visibility remote evidence:
244245

245246
- Private PR #9's final-head
246247
[CI run 29916685839](https://github.com/cometapi-dev/cometapi-python/actions/runs/29916685839)
@@ -272,20 +273,50 @@ Remote evidence:
272273
additional evidence. No visibility, secret, environment, protection, live,
273274
tag, release, registry, or publication change was made.
274275

275-
Live evidence:
276+
Recorded pre-visibility live evidence:
276277

277278
- The live-smoke path was not executed, and no live API request was made.
278279
Transport success and provider behavior therefore remain unverified.
279280

280-
Registry and release evidence:
281+
Recorded pre-visibility registry and release evidence:
281282

282283
- Release Please, immutable-release publishing, PyPI OIDC, provenance, and
283284
public-registry installation were not executed. No tag, release, or
284285
publication was created.
285286

286-
Changing the repository to public begins a short configuration interval; it
287-
does not establish Public Preview readiness by itself. The preview is ready
288-
only when:
287+
Public Preview readiness evidence on 2026-07-27:
288+
289+
- The complete local readiness gate passed on 2026-07-27 with all three
290+
readiness-document changes present: lock reproduction, Ruff, formatting,
291+
Pyright, 200 non-live tests, public-content, secret, workflow, actionlint,
292+
exact wheel and source-distribution, clean-install, and copied
293+
standalone-repository checks all succeeded.
294+
- The canonical repository became public. Active rulesets require pull
295+
requests and the nine blocking CI contexts on `main`, block force pushes and
296+
deletion with organization-administrator emergency bypass, permit only squash
297+
merges, and protect `refs/tags/v*` from updates and deletion.
298+
- Immutable releases and Private Vulnerability Reporting were enabled. The
299+
`live-smoke` environment has no required reviewer; the `pypi` environment
300+
requires the current release approver and permits self-review. The live key
301+
exists only as an environment secret.
302+
- Public scheduled
303+
[CI run 30248141487](https://github.com/cometapi-dev/cometapi-python/actions/runs/30248141487)
304+
passed quality, Python 3.10 through 3.14, minimum and latest-within-major
305+
OpenAI compatibility, package, exact-artifact, retained-digest, and copied
306+
standalone-repository jobs for `fa32e962f7a35dd9e183f7b201bd9117590654a9`.
307+
A manually requested rerun was superseded by this scheduled run through the
308+
reviewed concurrency group and was not used as final evidence.
309+
- Explicitly authorized protected
310+
[live-smoke run 30248383703](https://github.com/cometapi-dev/cometapi-python/actions/runs/30248383703)
311+
passed all four sequential Chat Completions and Responses modes against
312+
`gpt-5.4` within the four-request, 16-output-token, 30-second-per-request,
313+
concurrency-one, zero-retry, stop-on-first-failure budget. The
314+
`LIVE_SMOKE_ENABLED` opt-in was reset to `false` after the run.
315+
- No tag, GitHub release, Trusted Publisher, PyPI OIDC publication, provenance,
316+
or public-registry installation was created or claimed. Release Please remains
317+
disabled through the initial manual alpha.
318+
319+
Public Preview remains ready only while:
289320

290321
- `main` requires pull requests and blocking CI with zero required approvals;
291322
force pushes and deletion are blocked, and administrator bypass is reserved

0 commit comments

Comments
 (0)