Skip to content

Commit 392895a

Browse files
committed
docs: record stable 0.1.1 release
1 parent c319503 commit 392895a

6 files changed

Lines changed: 395 additions & 288 deletions

File tree

‎AGENTS.md‎

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ repository.
5151
merely to complete lifecycle cleanup. Fail closed and report the exact state
5252
whenever a required cleanliness, fetch, or fast-forward condition is not met.
5353

54-
## Current Milestone: Stable 0.1.0 Complete
54+
## Current Milestone: Stable 0.1.1 and Repository Foundation Complete
5555

56-
Private Remote Validation, Public Preview, Registry Alpha, and stable `0.1.0`
57-
are complete. The canonical repository is public, `0.1.0` is available from
58-
npm's `latest` channel, and `0.1.0-alpha.3` remains available from `next`; both
59-
published lines have OIDC provenance and verified public-install evidence. No
60-
later milestone is active. Do not begin the 0.2 provider adapters without an
61-
explicit maintainer request.
56+
Private Remote Validation, Public Preview, Registry Alpha, stable `0.1.0`, and
57+
the `0.1.1` maintenance patch are complete. The canonical repository is public,
58+
`0.1.1` is available from npm's `latest` channel, and `0.1.0-alpha.3` remains
59+
available from `next`; the published lines have verified provenance and
60+
public-install evidence. No later milestone is active. Do not begin the 0.2
61+
provider adapters without an explicit maintainer request.
6262

6363
The accepted identity is:
6464

@@ -78,25 +78,21 @@ The unscoped `cometapi` package is the primary Node SDK. `@cometapi` is the
7878
standard scope for future official scoped packages; do not introduce new
7979
official packages under `@cometapi-dev`.
8080

81-
Stable promotion used Release Please only for its reviewed version and
82-
changelog pull request. Because the pinned Release Please v5 path is vulnerable
83-
to an upstream single-package tagging defect, it skipped GitHub release
84-
creation. A maintainer created and reviewed the immutable `v0.1.0` release
85-
manually against the exact merged release commit, and the publish workflow
86-
completed exact-artifact verification, the bounded live smoke, npm OIDC
87-
publication, and registry verification.
88-
89-
Release Please remains disabled between release operations after its post-0.1.0
90-
run generated an unreviewed `0.2.0` temporary-branch commit and then failed to
91-
create a pull request. That branch was verified as failure-only evidence before
92-
the authorized 0.1.1 operation replaced it with the action-owned patch branch.
93-
Do not use either branch as a 0.2 starting point. The 0.1.1 maintenance task
94-
repairs the workflow around the current read-only-default Actions baseline with
95-
action-created pull requests enabled; any later enablement still requires an
96-
explicit maintainer request and the fail-closed checks in `RELEASING.md`.
97-
For this repair, merge the anchor-removal finalization PR first, then use a new
98-
first-attempt manual dispatch to refresh the same action-owned 0.1.1 PR before
99-
its final CI and human-owner review.
81+
Stable `0.1.1` corrected the public options boundary without expanding the 0.1
82+
resource surface. Release Please created the reviewed patch PR, immutable tag,
83+
and GitHub Release. Publication required a disclosed one-time main-context
84+
recovery because the immutable tag predated the repaired tag handoff. The
85+
recovery published only the exact previously verified artifact through npm
86+
OIDC, then the repository restored its variables and tag-only Environment
87+
policy. The current workflow contains no publication-recovery input, fixed
88+
recovery run or artifact ID, prior-package-artifact or live-evidence reuse, or
89+
branch-context publication path.
90+
91+
Release Please remains disabled between explicitly authorized release
92+
operations. Permanent stable patches follow only the tag-bound path in
93+
`RELEASING.md`. The `0.1.1` recovery provenance is historical evidence, not
94+
proof that the current permanent tag path has completed a registry publication;
95+
the next explicitly authorized stable patch is its first end-to-end execution.
10096

10197
## Product Contract
10298

@@ -256,6 +252,32 @@ repository root.
256252
- The legal copyright holder and official security and support contacts must be
257253
maintainer-confirmed and must never be invented.
258254

255+
### Stable patch workflow
256+
257+
- Follow the stable-patch route in `RELEASING.md`: Release Please prepares the
258+
reviewed patch PR and immutable Release, an unprivileged handoff dispatches
259+
`publish.yml` from the exact immutable tag, and only that tag-bound run may
260+
verify, run the bounded live smoke, enter the npm Environment, or request OIDC.
261+
- Before requesting review, compare the PR author login with the intended
262+
reviewer login. A PR author cannot approve the same PR even when that author
263+
is a repository administrator.
264+
- Under a zero-required-approval ruleset, a same-author exact-head `COMMENTED`
265+
review is an owner audit only and must never be described as `APPROVED`. Any
266+
required approval must be a formal exact-head `APPROVED` review from a
267+
different human. An action-authored Release Please PR always requires that
268+
distinct-human administrator approval.
269+
- GitHub's **Approve and run workflows** control authorizes a workflow run for
270+
CI; it is separate from the PR review gate and satisfies no review requirement.
271+
- Prepare or refresh a release PR with a new first-attempt manual Release Please
272+
dispatch. Do not rerun a preparation dispatch. Release Please same-run Release
273+
reconciliation is allowed only under the exact conditions in `RELEASING.md`.
274+
- Never bypass a failed stable release with a manual or auxiliary tag, a
275+
branch-context publish, a temporary `main` npm Environment policy, reused
276+
artifact or live evidence, an arbitrary rerun, or a different patch version.
277+
- After registry verification, immediately restore
278+
`RELEASE_PLEASE_ENABLED=false`, keep `LIVE_SMOKE_ENABLED=true`, and require the
279+
npm Environment deployment-policy set to contain only `tag:v*`.
280+
259281
Before Public Preview, run `npm run check:public-preview`. The gate must fail
260282
after reporting all violations until canonical identity, contacts, repository
261283
metadata, and durable public-facing content are complete.

‎ARCHITECTURE.md‎

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,10 @@ tag and GitHub release agreement.
108108
The publish workflow is the sole source of npm dist-tag selection: prereleases
109109
use `next`, stable versions use `latest`. The package manifest must not carry a
110110
static dist-tag because that would make stable and prerelease policy diverge.
111-
Trusted Publishing remains the default authentication path. The only token
112-
path is an explicitly enabled protected-environment fallback that rejects every
113-
version except `0.1.0-alpha.1` and every dist-tag except `next`.
111+
Trusted Publishing is the only executable authentication path. The protected-
112+
environment token bootstrap used for `0.1.0-alpha.1` is historical evidence;
113+
current workflows contain no token publication path and reject registry-token
114+
credentials.
114115

115116
For normal stable patches, Release Please owns the reviewed version/changelog
116117
PR and the immutable tag and GitHub Release. The configuration uses an explicit
@@ -119,20 +120,23 @@ maintenance window cannot enter 0.2 implicitly and a root package does not fall
119120
into the single-package tag-discovery ambiguity encountered during 0.1.0. The
120121
workflow also rejects commit-level `Release-As:` notes before mutation because
121122
Release Please applies those overrides before its patch versioning strategy.
122-
Because a
123-
GitHub Release created with the default `GITHUB_TOKEN` does not start a separate
124-
`release.published` workflow, publication is chained from the successful
125-
Release Please workflow. The handoff accepts only the canonical repository's
126-
successful attempt-qualified `push` run for `main` at the still-current exact
127-
`main` SHA. The release workflow records normalized action outcome, recovery
128-
state, pre-action Release presence, the exact Release-producing attempt, SHA,
129-
tag, version, URL, repository, workflow identity, run ID, and attempt in a
130-
schema-v2 exact-run artifact. Publication
131-
downloads and validates only that attempt's artifact before checking the tag and
132-
immutable Release. A first-attempt manual run is explicitly release-inert and
133-
must succeed only after independently validating one canonical action-created
134-
patch PR; its event cannot enter publication. Any successful `push` run without
135-
the exact result artifact, tag, and immutable Release fails before live or
123+
Because a GitHub Release created with the default `GITHUB_TOKEN` does not start
124+
a separate `release.published` workflow, publication is chained from the
125+
successful Release Please workflow. The handoff accepts only the canonical
126+
repository's successful attempt-qualified `push` run for `main` at the
127+
still-current exact `main` SHA. The release workflow records normalized action
128+
outcome, same-run Release reconciliation state, pre-action Release presence,
129+
the exact Release-producing attempt, SHA, tag, version, URL, repository,
130+
workflow identity, run ID, and attempt in a schema-v2 exact-run artifact. An
131+
unprivileged `workflow_run` handoff validates only that attempt's artifact,
132+
exact tag, immutable Release, and current `main`, then dispatches `publish.yml`
133+
with `ref=v<version>`. Only that tag-bound `workflow_dispatch` can reach fresh
134+
artifact verification, bounded live smoke, the npm Environment, or OIDC. A
135+
first-attempt manual run is explicitly release-inert and must succeed only after
136+
independently validating one canonical action-created patch PR; its event cannot
137+
enter publication. A successful `push` preparation run whose result-upload step
138+
was skipped is also release-inert. Any purported release handoff with missing or
139+
mismatched result, tag, or immutable Release evidence fails before live or
136140
registry access. The release outcome and package artifact are verified
137141
independently.
138142

@@ -143,17 +147,19 @@ fail-closed on exact tag, artifact, dist-tag, integrity, and provenance state.
143147
Manual preparation rejects attempt 2 or later; restart uses a new dispatch with
144148
Release creation disabled. A `push` rerun is bounded to the same run ID, SHA,
145149
candidate, and final-head review. It may retry while the tag and Release remain
146-
absent. If an earlier attempt already created the Release, recovery accepts only
147-
the exact bot-authored immutable Release at that SHA whose publication time
148-
falls inside exactly one earlier Release Please step from the same run.
150+
absent. If an earlier attempt already created the Release, same-run
151+
reconciliation accepts only the exact bot-authored immutable Release at that
152+
SHA whose publication time falls inside exactly one earlier Release Please step
153+
from that run.
149154
Release-mode action failure is tolerated only long enough to
150155
prove that postcondition, reconcile the release PR to `autorelease: tagged`, and
151156
write the attempt-qualified artifact. The authorized Actions setting lets the
152157
default token create the PR; the resulting approval-required CI still needs a
153158
human with write access to authorize execution, and bot review cannot satisfy
154-
the release gate. A merged
155-
release PR is accepted for tagging only after a distinct repository
156-
administrator approved its final head. The workflow checks the triggering SHA,
159+
the release gate. A head change invalidates both a prior `COMMENTED` owner audit
160+
and a formal approval. A merged release PR is accepted for tagging only after a
161+
distinct human repository administrator formally approved its exact final
162+
head. The workflow checks the triggering SHA,
157163
release-branch snapshot, all open and closed PR identities, current review, and
158164
tag/Release state immediately before Release Please mutation, then rechecks
159165
`main`, the release branch, the complete PR snapshot, exact final-head approval,
@@ -164,6 +170,17 @@ additional PR cannot be tagged. Manual dispatch is therefore release-inert: it
164170
may prepare one canonical action-created PR only when no merged release PR is
165171
awaiting a tag.
166172

173+
Stable `0.1.1` used a one-time main-context publication recovery after its
174+
immutable tag predated the permanent tag-bound workflow. It reused only the
175+
previously verified exact artifact and bounded live evidence, so npm provenance
176+
names the reviewed recovery control commit on `refs/heads/main` rather than the
177+
tag. [PR #41](https://github.com/cometapi-dev/cometapi-node/pull/41) removed
178+
every fixed recovery identifier, prior-evidence reuse branch, and temporary
179+
`main` deployment-policy path. The permanent npm Environment policy set is
180+
exactly `tag:v*`; branch-context publication is not part of the architecture.
181+
The exception is historical evidence and must never be reconstructed. See
182+
[Stable 0.1.1 release evidence](./RELEASING.md#stable-011-release-evidence).
183+
167184
## Testing layers
168185

169186
Evidence is separated by layer:

‎COMPATIBILITY.md‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
Compatibility document version: 0.1
44
Package line: `0.1.x`
55

6-
Stable release: `0.1.0`; the immutable release workflow and separate
7-
post-publication registry verification completed on 2026-07-28.
8-
9-
Maintenance candidate: `0.1.1`; the options-contract and Release Please repair
10-
is not a release claim until its remote release and registry evidence completes.
6+
Stable release: `0.1.1`; the immutable Release, bounded live smoke, npm OIDC
7+
publication, and separate public-registry verification completed on 2026-07-30.
8+
Registry Alpha `0.1.0-alpha.3` remains available from npm's `next` channel.
119

1210
This matrix defines the contract-tested 0.1 compatibility surface. Inheritance
1311
from the official OpenAI client does not by itself establish CometAPI support.
@@ -136,3 +134,15 @@ signatures and provenance, and public artifact checks passed in
136134
A separate post-publication registry-tarball check also passed the ESM,
137135
CommonJS, and compatible-OpenAI host fixtures with one effective
138136
`openai@6.47.0` installation and preserved official error identities.
137+
138+
For stable `0.1.1`, the final release-PR head passed the blocking, minimum,
139+
locked, latest-compatible, Node.js 26 advisory, package, workflow, and
140+
standalone lanes in
141+
[CI run 30468358086](https://github.com/cometapi-dev/cometapi-node/actions/runs/30468358086).
142+
Release Please created the immutable
143+
[`v0.1.1` Release](https://github.com/cometapi-dev/cometapi-node/releases/tag/v0.1.1),
144+
and the bounded live smoke plus OIDC publication completed in the evidence
145+
chain recorded in [RELEASING.md](./RELEASING.md#stable-011-release-evidence).
146+
Separate public-registry verification passed ESM, CommonJS, declarations,
147+
supported mocked calls, one effective OpenAI installation, official error
148+
identity, integrity, signature, and provenance.

‎README.md‎

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@ The official CometAPI entry point for the OpenAI-compatible API. The SDK keeps
44
the official OpenAI JavaScript request, response, stream, and error types while
55
defaulting the client to CometAPI.
66

7-
> **Stable 0.1 release:** `0.1.0` is approved for npm publication. Publication
8-
> is complete, and the package is available from npm's default `latest` dist-tag.
9-
> The supported API is limited to the contract-tested 0.1 surface documented
10-
> here and in [COMPATIBILITY.md](./COMPATIBILITY.md).
11-
>
12-
> **Approved maintenance candidate:** `0.1.1` is approved for npm publication
13-
> through the reviewed Release Please path. This approval is not a release
14-
> claim: `0.1.1` remains unpublished until the immutable release, npm OIDC
15-
> publication, and public-registry verification complete.
7+
> **Stable 0.1 release:** `0.1.1` is published on npm's default `latest`
8+
> dist-tag. Its immutable GitHub Release, bounded live smoke, npm OIDC
9+
> publication, provenance, signature, and separate public-registry installation
10+
> verification are complete. The supported API remains limited to the
11+
> contract-tested 0.1 surface documented here and in
12+
> [COMPATIBILITY.md](./COMPATIBILITY.md).
1613
1714
## Supported 0.1 surface
1815

@@ -232,23 +229,24 @@ parent.
232229
233230
## Project status
234231
235-
The repository has completed Public Preview, Registry Alpha, and stable 0.1.0.
236-
Blocking CI, protected repository rules, security reporting, protected
237-
environments, and the authorized release-tag live smoke have passed. Stable
238-
`0.1.0` was published from its immutable release artifact through GitHub
239-
Actions OIDC with provenance, and a separate post-publication check passed the
240-
ESM, CommonJS, and compatible-OpenAI host fixtures against the registry tarball.
241-
Registry Alpha `0.1.0-alpha.3` remains available from `next`. The immutable
242-
`0.1.0-alpha.2` GitHub release remains as an unpublished failure record because
243-
its guard stopped before invoking npm. Mocked responses, packed artifacts,
244-
GitHub Actions, trusted live tests, and npm publication remain separate evidence
245-
layers and must not be represented as another. Because published npm artifacts
246-
are immutable, the `0.1.0` tarball retains its candidate-era README; this
247-
post-release status update first ships in a later package version.
248-
249-
The `0.1.1` options-contract and Release Please repair is in progress. Until its
250-
full release sequence completes, npm `latest` remains `0.1.0` and this candidate
251-
must not be described as published. No 0.2 provider adapter work is included.
232+
The repository has completed Public Preview, Registry Alpha, stable `0.1.0`,
233+
the `0.1.1` maintenance patch, and Repository foundation. Blocking CI,
234+
protected repository rules, security reporting, protected environments, and
235+
the authorized bounded live smoke have passed. Stable `0.1.1` is available from
236+
`latest`; Registry Alpha `0.1.0-alpha.3` remains available from `next`. A
237+
separate public-registry check passed ESM, CommonJS, declarations, supported
238+
mocked calls, the compatible-OpenAI host fixture with one effective OpenAI
239+
installation, official error identity, integrity, signature, and provenance.
240+
241+
The immutable `0.1.0-alpha.2` GitHub release remains as an unpublished failure
242+
record because its guard stopped before invoking npm. Mocked responses, packed
243+
artifacts, GitHub Actions, trusted live tests, and npm publication remain
244+
separate evidence layers and must not be represented as another. Published npm
245+
artifacts are immutable, so the `0.1.1` tarball retains its candidate-era
246+
README; this post-release status first ships in a later package version. The
247+
one-time `0.1.1` publication recovery is documented as historical evidence in
248+
[RELEASING.md](./RELEASING.md); the current permanent release workflow is
249+
immutable-tag-bound. No 0.2 provider adapter work is included.
252250
253251
See:
254252

0 commit comments

Comments
 (0)