Skip to content

Commit 36e1309

Browse files
committed
docs: record stable 0.1.2 release evidence
1 parent d02b87d commit 36e1309

4 files changed

Lines changed: 178 additions & 43 deletions

File tree

AGENTS.md

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -79,23 +79,19 @@ The unscoped `cometapi` package is the primary Node SDK. `@cometapi` is the
7979
standard scope for future official scoped packages; do not introduce new
8080
official packages under `@cometapi-dev`.
8181

82-
Stable `0.1.1` established the runtime options boundary and repaired the release
83-
path without expanding the 0.1 resource surface. Release Please created the
84-
reviewed patch PR, immutable tag, and GitHub Release. Publication required a
85-
disclosed one-time main-context recovery because the immutable tag predated the
86-
repaired tag handoff. The recovery published only the exact previously verified
87-
artifact through npm OIDC, then the repository restored its variables and
88-
tag-only Environment policy. The current workflow contains no
89-
publication-recovery input, fixed recovery run or artifact ID,
90-
prior-package-artifact or live-evidence reuse, or branch-context publication
91-
path.
82+
Stable maintenance established the runtime options boundary without expanding
83+
the 0.1 resource surface. Release-specific recovery history and immutable
84+
evidence belong in `RELEASING.md`, not in this durable operating contract. The
85+
permanent stable-patch path uses a reviewed Release Please PR, an immutable tag
86+
and GitHub Release, an unprivileged tag handoff, fresh exact-artifact and bounded
87+
live verification, and tag-bound npm OIDC publication. That path has completed
88+
an end-to-end registry publication.
9289

9390
Release Please remains disabled between explicitly authorized release
94-
operations. Permanent stable patches follow only the tag-bound path in
95-
`RELEASING.md`. The recovery provenance for stable `0.1.1` is historical
96-
evidence and does not prove an execution of the permanent path. The next
97-
explicitly authorized stable patch is that path's first end-to-end registry
98-
execution.
91+
operations. The current workflow contains no publication-recovery input, fixed
92+
recovery run or artifact ID, prior-package-artifact or live-evidence reuse, or
93+
branch-context publication path. Permanent stable patches follow only the
94+
tag-bound path in `RELEASING.md`.
9995

10096
## Product Contract
10197

COMPATIBILITY.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,18 @@ chain recorded in [RELEASING.md](./RELEASING.md#stable-011-release-evidence).
152152
Separate public-registry verification passed ESM, CommonJS, declarations,
153153
supported mocked calls, one effective OpenAI installation, official error
154154
identity, integrity, signature, and provenance.
155+
156+
For stable `0.1.2`, the strict structural option declarations and packed
157+
ESM/CommonJS fixtures passed
158+
[source PR CI 30600555979](https://github.com/cometapi-dev/cometapi-node/actions/runs/30600555979)
159+
and the action-authored release candidate passed
160+
[CI run 30600746212 attempt 2](https://github.com/cometapi-dev/cometapi-node/actions/runs/30600746212/attempts/2).
161+
Release Please created the immutable
162+
[`v0.1.2` Release](https://github.com/cometapi-dev/cometapi-node/releases/tag/v0.1.2),
163+
and
164+
[Publish run 30601661643](https://github.com/cometapi-dev/cometapi-node/actions/runs/30601661643)
165+
completed the first permanent tag-bound release sequence. Its bounded live
166+
smoke, OIDC publication, public-registry ESM/CommonJS and declaration checks,
167+
single effective OpenAI installation, official error identity, integrity,
168+
signature, and provenance evidence is recorded in
169+
[RELEASING.md](./RELEASING.md#stable-012-release-evidence).

RELEASING.md

Lines changed: 105 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,107 @@ Finally, commit-level `Release-As:` is rejected before the action because the
672672
GitHub documents that a `GITHUB_TOKEN`-created PR's opened or synchronize event
673673
[creates an approval-required workflow run](https://github.com/github/docs/blob/e1e4aa937308f21c411c248b4966873536bb0cba/data/reusables/actions/actions-do-not-trigger-workflows.md#L1-L6).
674674

675+
## Stable 0.1.2 release evidence
676+
677+
Stable `0.1.2` completed on 2026-07-31 with these independently auditable
678+
layers:
679+
680+
- Source [PR #44](https://github.com/cometapi-dev/cometapi-node/pull/44) fixed
681+
the structural TypeScript option bypass, made consumer documentation
682+
release-neutral, and prepared the permanent release path without expanding
683+
the supported resource surface. Final head
684+
`c0934cc804fb5c23f0ff38e463cdfb00784da159` passed
685+
[CI run 30600555979](https://github.com/cometapi-dev/cometapi-node/actions/runs/30600555979)
686+
and merged as
687+
[`1d62b52fc5ca2fc803c11fbc99cf9c5991c6c974`](https://github.com/cometapi-dev/cometapi-node/commit/1d62b52fc5ca2fc803c11fbc99cf9c5991c6c974).
688+
- Manual Release Please preparation
689+
[run 30600722163 attempt 1](https://github.com/cometapi-dev/cometapi-node/actions/runs/30600722163/attempts/1)
690+
ran from that exact merge on `main`, logged `updating from 0.1.1 to 0.1.2`,
691+
and created only the action-authored release PR below. This is remote evidence
692+
that the repaired stable-patch configuration selected `0.1.2`, not `0.2.0`.
693+
- The resulting four-file release
694+
[PR #45](https://github.com/cometapi-dev/cometapi-node/pull/45) had final head
695+
`c335f7081b9e8bb7cce7060c85c53d08947423d1` and changed only the manifest,
696+
changelog, package lock, and package manifest. After the human workflow gate,
697+
its complete blocking matrix passed in
698+
[CI run 30600746212 attempt 2](https://github.com/cometapi-dev/cometapi-node/actions/runs/30600746212/attempts/2).
699+
Human repository administrator `tensornull`, distinct from bot author
700+
`github-actions[bot]`, submitted formal
701+
[review 4825214156](https://github.com/cometapi-dev/cometapi-node/pull/45#pullrequestreview-4825214156)
702+
with `state=APPROVED` against that exact head before merge. The reviewed merge
703+
produced
704+
[`e348f7800c6088e0349b67ce5927cd9ba50dde25`](https://github.com/cometapi-dev/cometapi-node/commit/e348f7800c6088e0349b67ce5927cd9ba50dde25).
705+
- [Release Please run 30601626589 attempt 1](https://github.com/cometapi-dev/cometapi-node/actions/runs/30601626589/attempts/1)
706+
created the exact lightweight `v0.1.2` tag and immutable non-prerelease GitHub
707+
Release ID `362834814`. The bot-authored
708+
[`v0.1.2` Release](https://github.com/cometapi-dev/cometapi-node/releases/tag/v0.1.2)
709+
targets the reviewed merge commit and was published at
710+
`2026-07-31T03:27:59Z`.
711+
- The unprivileged
712+
[handoff run 30601651061 attempt 1](https://github.com/cometapi-dev/cometapi-node/actions/runs/30601651061/attempts/1)
713+
validated the Release Please result and immutable Release before dispatching
714+
the exact tag. Tag-bound
715+
[Publish run 30601661643 attempt 1](https://github.com/cometapi-dev/cometapi-node/actions/runs/30601661643/attempts/1)
716+
rebuilt the release commit, passed the full release checks and public
717+
declarations/fixtures, and uploaded artifact ID `8782147591`, named
718+
`npm-package-0.1.2-30601661643-1`, with ZIP digest
719+
`sha256:59f840b182e2e7c74b237ba507ea725e76e60174ce817b8fc18d99c6631d0131`.
720+
Its sole tarball has SHA-256
721+
`88923983b62cbeaf37f7aacdea4d89b9b9a55b81ab8f0748cf1a8d0135c74d58`
722+
and is byte-identical to the public registry tarball.
723+
- The same run's
724+
[live job 91065744397](https://github.com/cometapi-dev/cometapi-node/actions/runs/30601661643/job/91065744397)
725+
checked out `refs/tags/v0.1.2` and passed exactly three sequential `gpt-5.4`
726+
requests with a 16-token output cap, 60-second per-request timeout,
727+
concurrency one, and stop-on-first-failure behavior.
728+
- Attempt 1's protected npm job `91065788380` published through the tag-only npm
729+
Environment and GitHub Actions OIDC at `2026-07-31T03:36:57.735Z`. Publication
730+
succeeded, but the immediately following attestation fetch received the
731+
registry's transient `404`, so the job failed after npm mutation. After the
732+
attestations became readable, the sole authorized
733+
[failed-job replay](https://github.com/cometapi-dev/cometapi-node/actions/runs/30601661643/attempts/2)
734+
used npm job `91069383430`; it reported
735+
`cometapi@0.1.2 already matches the verified artifact; resuming checks.` and
736+
completed without a second `npm publish`. GitHub preserved the successful
737+
exact-artifact job `91069398975` and bounded-live job `91069383750` from
738+
attempt 1.
739+
- At closeout, npm's stable channel resolved to `0.1.2`, while the prerelease
740+
channel remained `0.1.0-alpha.3`. The package has SHA-1
741+
`2f3b1ec8c9149172fe52ac25b0a7658cdc102ed8` and integrity
742+
`sha512-JmFFjOX9GBJqjp7I8XOrTvCHAxd8zYQjLKIX/CKE0wPQ+98HpzBXn4cuA/OUzRsW8/GtX2vfYBEsL588P1XWkw==`.
743+
`npm audit signatures` passed. npm exposes its publish attestation at
744+
[Sigstore index 2298372367](https://search.sigstore.dev/?logIndex=2298372367)
745+
and SLSA provenance at
746+
[index 2298372342](https://search.sigstore.dev/?logIndex=2298372342). The
747+
provenance binds `cometapi@0.1.2` to `refs/tags/v0.1.2`, commit
748+
`e348f7800c6088e0349b67ce5927cd9ba50dde25`, and Publish run
749+
`30601661643/1`.
750+
- Clean public-registry verification installed `cometapi@0.1.2` with one
751+
effective `openai@6.47.0` installation and passed ESM, CommonJS, `.mts` and
752+
`.cts` declarations, supported mocked calls, official `APIError instanceof`
753+
identity, integrity, registry signatures, and both attestations.
754+
- Post-publication hardening
755+
[PR #46](https://github.com/cometapi-dev/cometapi-node/pull/46) made the
756+
observed failed-job convergence finite and fail-closed. Final head
757+
`05041c4080a57814a3d2e90122185951b9b84404` passed
758+
[PR CI 30607413580](https://github.com/cometapi-dev/cometapi-node/actions/runs/30607413580)
759+
and exact-head owner audit
760+
[review 4825808534](https://github.com/cometapi-dev/cometapi-node/pull/46#pullrequestreview-4825808534),
761+
recorded as `state=COMMENTED`, merged as
762+
`d02b87da330d4b71d194f5c3a6df727b20dc9df3`, and passed
763+
[default-branch CI 30607756481](https://github.com/cometapi-dev/cometapi-node/actions/runs/30607756481).
764+
Final state was read back as `RELEASE_PLEASE_ENABLED=false`,
765+
`LIVE_SMOKE_ENABLED=true`, and exactly one npm Environment deployment policy,
766+
`tag:v*` (policy ID `55718965`). Post-merge
767+
[Release Please run 30607756491](https://github.com/cometapi-dev/cometapi-node/actions/runs/30607756491)
768+
and
769+
[Publish handoff run 30607764192](https://github.com/cometapi-dev/cometapi-node/actions/runs/30607764192)
770+
were skipped as required.
771+
772+
This is the first completed end-to-end registry publication through the
773+
permanent immutable-tag handoff. The earlier one-time main-context recovery
774+
remains historical evidence only and is not a reusable release path.
775+
675776
## Stable 0.1.1 release evidence
676777

677778
Stable `0.1.1` completed on 2026-07-30 with these independently auditable
@@ -754,12 +855,10 @@ layers:
754855
`LIVE_SMOKE_ENABLED=true`, and exactly one npm deployment policy,
755856
`tag:v*` (policy ID `55718965`).
756857
757-
The permanent immutable-tag handoff has passed static contract checks,
758-
adversarial mutations, pull-request CI, and default-branch CI. Because the
759-
immutable `v0.1.1` tag predates that final path, `0.1.1` publication used the
760-
disclosed main-context exception above. The next explicitly authorized stable
761-
patch remains the first end-to-end registry publication of the permanent
762-
tag-bound route.
858+
The permanent immutable-tag handoff later completed its first end-to-end
859+
registry publication in the stable `0.1.2` evidence above. The `0.1.1`
860+
publication remains evidence only for the disclosed main-context exception and
861+
does not authorize that path again.
763862
764863
## Stable 0.1.0 release evidence
765864

ROADMAP.md

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ Last updated: 2026-07-31
55
Repository contract: This roadmap is self-contained and is the public source
66
of truth for this repository's release sequence.
77

8-
Stable `0.1.1` completed the corrected options contract, immutable GitHub
9-
Release, bounded live smoke, OIDC publication, provenance, signature, separate
10-
public-install verification, and recovery-path cleanup on 2026-07-30.
8+
Stable `0.1.2` completed the public options type contract, release-neutral
9+
consumer documentation, the first permanent immutable-tag publication, bounded
10+
live smoke, OIDC provenance, public-install verification, and replay hardening
11+
on 2026-07-31.
1112

1213
## Product Target
1314

@@ -24,9 +25,10 @@ Release then failed before invoking npm because its publication guard rejected
2425
the fixed `actions/setup-node` authentication placeholder.
2526
`0.1.0-alpha.3` subsequently completed the OIDC, provenance, ownership, and
2627
public-install verification sequence. Stable `0.1.1` completed its separately
27-
recorded release sequence on 2026-07-30. Stable 0.1.x packages use `latest`, and
28-
Registry Alpha artifacts use `next`; query npm and GitHub rather than treating
29-
this roadmap as current registry state.
28+
recorded recovery sequence on 2026-07-30, and stable `0.1.2` completed the
29+
permanent tag-bound sequence on 2026-07-31. Stable 0.1.x packages use `latest`,
30+
and Registry Alpha artifacts use `next`; query npm and GitHub rather than
31+
treating this roadmap as current registry state.
3032

3133
## Milestones
3234

@@ -38,6 +40,7 @@ this roadmap as current registry state.
3840
| 0.1.x Registry Alpha | Complete | Early adopters can install a functional, provenance-verified prerelease from npm's `next` channel through the OIDC-only publication path. |
3941
| 0.1.0 Stable | Complete | Users can install a fully verified package from npm's default channel. |
4042
| 0.1.1 maintenance patch | Complete | Users receive the corrected options contract; the permanent tag-bound release architecture is installed and the one-time recovery is recorded. |
43+
| 0.1.2 maintenance patch | Complete | Users receive strict public option types and release-neutral package documentation through the verified permanent tag-bound publication path. |
4144
| 0.2.0 provider-native text | Planned | Users can opt into Anthropic Messages and Gemini text adapters through isolated subpath exports. |
4245
| 0.3.0 CometAPI resources | Planned | Users receive typed access to the first stable CometAPI-specific account or platform resources. |
4346
| Media and task APIs | Later | Users receive typed image, video, audio, upload, polling, and task lifecycle helpers after their contracts are stable. |
@@ -121,11 +124,10 @@ The permanent state is `RELEASE_PLEASE_ENABLED=false`,
121124
`LIVE_SMOKE_ENABLED=true`, and exactly one npm Environment deployment policy,
122125
`tag:v*`. Current stable publication uses an unprivileged Release Please
123126
handoff followed by an immutable-tag dispatch, fresh verification and live
124-
smoke, and tag-bound npm OIDC. Stable `0.1.1` itself has main-bound provenance
125-
from the disclosed recovery, so the next explicitly authorized stable patch is
126-
the first end-to-end registry execution of the permanent tag-bound path. Full
127-
evidence is recorded in
128-
[RELEASING.md](./RELEASING.md#stable-011-release-evidence).
127+
smoke, and tag-bound npm OIDC. Stable `0.1.2` completed the first end-to-end
128+
registry execution of that permanent path. Full immutable evidence is recorded
129+
in [RELEASING.md](./RELEASING.md#stable-012-release-evidence); the earlier
130+
one-time recovery remains separately recorded as historical evidence.
129131

130132
## Private Remote Validation
131133

@@ -304,22 +306,46 @@ Completion evidence:
304306
recovery-path cleanup. The evidence is recorded in
305307
[RELEASING.md](./RELEASING.md#stable-011-release-evidence).
306308

309+
## 0.1.2: Public Contract and Tag-Bound Release Verification (Complete)
310+
311+
Stable `0.1.2` redeclared `provider`, `workloadIdentity`, and
312+
`dangerouslyAllowBrowser` as optional `never` fields on `CometAPIOptions`.
313+
TypeScript negative tests now exercise variables, spreads,
314+
`satisfies ClientOptions`, and constrained generics through both the constructor
315+
and `withOptions`; the secret-free runtime guard remains authoritative for plain
316+
JavaScript and casts. The patch also made the README release-neutral and kept
317+
`package.json` as the sole candidate-version authority without changing the
318+
supported resource surface.
319+
320+
The action-authored, exact-head-approved Release Please PR produced the
321+
immutable tag and GitHub Release. The unprivileged handoff then dispatched the
322+
exact tag, rebuilt and verified the artifact, ran the bounded three-request live
323+
smoke, and published through the tag-only npm Environment with OIDC provenance.
324+
When npm's attestation endpoint briefly returned `404` after successful
325+
publication, the single failed-job replay detected the byte-identical existing
326+
version and completed verification without invoking `npm publish` again.
327+
328+
Post-publication hardening made that observed recovery finite and executable:
329+
handoff, exact-artifact verification, and live smoke are attempt-1-only;
330+
publication permits only an attempt-2 existing-version convergence check; and
331+
attempt 3 or later fails before entering the npm Environment. Release-specific
332+
PR, review, run, artifact, registry, provenance, and final-state evidence is
333+
recorded in [RELEASING.md](./RELEASING.md#stable-012-release-evidence).
334+
307335
## Stable 0.1.x Maintenance
308336

309337
Maintenance patches close contract and release-process gaps without expanding
310-
the supported resource surface. The active maintenance work redeclares the
311-
three reserved client controls as optional `never`, executes negative tests for
312-
variables, spreads, `satisfies ClientOptions`, and constrained generics through
313-
both the constructor and `withOptions`, and preserves the runtime guard for
314-
plain JavaScript and casts.
338+
the supported resource surface. Future maintenance must preserve the strict
339+
reserved-option type and runtime boundary, the release-neutral consumer
340+
documentation, and the immutable-tag publication contract established above.
315341

316342
Durable README, agent, compatibility, roadmap, and release guidance uses 0.1.x
317343
capability and channel language instead of copying a mutable exact version from
318344
the registry. `package.json` is the sole candidate-version authority, the packed
319345
README must match the reviewed source byte-for-byte, and the release gates
320346
reject exact-version current, approval, unpublished, or in-progress claims.
321347

322-
This maintenance work is complete only after the normal four-file Release
348+
Each maintenance patch is complete only after the normal four-file Release
323349
Please PR, immutable tag and GitHub Release, fresh bounded live smoke, tag-bound
324350
npm OIDC publication, and independent public-registry installation all pass.
325351
Release-specific evidence is recorded after publication rather than predicted
@@ -394,11 +420,10 @@ The repository will maintain:
394420
registry verification. Only the tag-bound dispatch can reach verification,
395421
live, or publication authority.
396422

397-
All workflow files must pass local `actionlint`. The permanent tag-bound
398-
publication contract has passed static, mutation, pull-request, and
399-
default-branch CI, but `0.1.1` used the disclosed main-context recovery. Until a
400-
later stable patch executes the permanent path through registry publication,
401-
release reports must keep that remote end-to-end qualification explicit.
423+
All workflow files must pass local `actionlint`. Stable `0.1.2` completed the
424+
permanent tag-bound publication contract through registry verification. Its
425+
post-publication replay hardening then passed static and mutation checks,
426+
pull-request CI, exact-head owner audit, and default-branch CI.
402427

403428
The initial manual alpha preparation starts with an empty version manifest and
404429
a temporary `release-as: 0.1.0-alpha.1` setting. Its reviewed pull request must

0 commit comments

Comments
 (0)