@@ -12,7 +12,7 @@ Release status is evidence-based:
1212| Registry Alpha candidate | The exact ` 0.1.0-alpha.3 ` artifact passes package and clean-install gates after preserving the unpublished immutable alpha.2 failure record. |
1313| Registry Alpha released | The public npm artifact installs from the ` next ` channel, passes post-publication verification, and has verified provenance plus any documented one-time bootstrap evidence. |
1414| Stable released | Every stable 0.1.0 local, remote, live, review, provenance, and registry gate has recorded evidence. |
15- | Stable patch candidate | A maintainer -created Release Please PR has the exact version, changelog, manifest, temporary-anchor removal, complete CI matrix, and human-owner review. |
15+ | Stable patch candidate | An action -created Release Please PR has the exact version, changelog, manifest, temporary-anchor removal, complete CI matrix, and human-owner review. |
1616| Stable patch released | The immutable Release Please tag and GitHub Release, bounded live smoke, npm OIDC publication, and independent public-registry verification all pass. |
1717
1818A build, mock, valid workflow file, successful upload, or HTTP 200 proves only
@@ -232,19 +232,24 @@ The repository maintains four independently auditable workflows:
232232 first failure. Standalone and release smoke jobs share one repository-wide
233233 concurrency group. Scheduled and manual live execution requires
234234 ` LIVE_SMOKE_ENABLED=true ` .
235- - ` release-please.yml ` : stable versioning, an explicit ` cometapi ` component,
235+ - ` release-please.yml ` : patch-only versioning, an explicit ` cometapi ` component,
236236 separate pull requests, and an explicit component/version title. It requires
237237 ` RELEASE_PLEASE_ENABLED=true ` , accepts only first-attempt runs, and uses the
238- default ` GITHUB_TOKEN ` . A first-attempt manual dispatch prepares the patch
239- branch after the variable is enabled; rerunning an older workflow is
240- rejected before Release Please can mutate repository state. The
241- repository deliberately leaves Actions pull-request authorization disabled,
242- so a maintainer creates the standard PR from the generated branch, applies
243- the ` autorelease: pending ` label, and obtains another administrator's approval
244- on the final head. The post-merge workflow verifies that exact approval even
245- when the PR used a squash or rebase merge. Release Please then creates the
246- normal tag and GitHub Release, transitions the release label, and uploads its
247- exact release outputs as a run-bound artifact.
238+ default ` GITHUB_TOKEN ` . The authorized repository baseline keeps default
239+ workflow permissions read-only and allows Actions to create pull requests; it
240+ does not make bot review valid release approval. A first-attempt manual
241+ dispatch runs with GitHub
242+ Release creation disabled and prepares exactly one action-authored patch PR
243+ after the variable is enabled; rerunning an older workflow is rejected before
244+ Release Please can mutate repository state. The preparation run succeeds only
245+ after verifying the canonical branch, title, machine-readable body, pending
246+ label, four expected release files, and 0.1.x patch versions. Before a
247+ post-merge ` push ` may create a Release, the workflow scans every merged ` main `
248+ PR carrying ` autorelease: pending ` , rejects legacy, alternate, fork, older, or
249+ multiple candidates, and requires an administrator's human approval on the
250+ exact final head. Release Please then creates the normal tag and GitHub
251+ Release, transitions the release label, and uploads its exact release outputs
252+ as a run-bound artifact.
248253 The triggering SHA must still equal the fetched ` main ` tip at checkout and
249254 immediately before the Release Please action; an older queued run stops before
250255 mutation.
@@ -261,15 +266,17 @@ The repository maintains four independently auditable workflows:
261266 ` main ` SHA. It downloads the output artifact from that exact upstream run and
262267 requires ` release_created ` , SHA, tag, version, URL, repository, workflow path,
263268 run ID, and attempt to agree before accepting the matching Release
264- Please-created version tag and immutable GitHub Release. Failed pull-request
265- preparation runs are filtered out; a successful run without that exact result
266- fails before live or publication work. The release path then packs and tests one exact artifact, runs the
267- protected release live smoke, and publishes the same file through npm OIDC. Registry token
268- credentials are rejected. The workflow verifies the dist-tag, integrity,
269- provenance attestation, signatures, deduplication, and public installation. A
270- publish rerun resumes after an already accepted version only when its registry
271- integrity matches the downloaded artifact, then repeats every bounded
272- registry-state and signature check.
269+ Please-created version tag and immutable GitHub Release. A successful manual
270+ preparation run is release-inert and cannot enter publication; a successful
271+ ` push ` run without the exact release result fails before live or publication
272+ work. The release path then packs and tests one exact, attempt-qualified
273+ artifact, runs the protected release live smoke, and publishes the same file
274+ through npm OIDC. Registry token credentials are rejected. Re-running all jobs
275+ creates a new attempt-qualified artifact, while re-running failed downstream
276+ jobs consumes the already verified producer attempt. Publication resumes after
277+ an already accepted version only when its registry integrity matches the
278+ downloaded artifact, then repeats every bounded registry-state and signature
279+ check.
273280
274281Third-party actions are pinned to full commit SHAs. Workflow permissions remain
275282read-only except where a documented job requires more; ` id-token: write ` belongs
@@ -424,8 +431,8 @@ layers:
424431feature or fix pull request
425432 -> required offline CI
426433 -> merge to the protected default branch
427- -> generated Release Please branch
428- -> maintainer -created release PR
434+ -> first-attempt manual Release Please preparation
435+ -> action -created Release Please branch and release PR
429436 -> human review and merge
430437 -> immutable tag and GitHub release
431438 -> rebuild and verify exact artifact
@@ -449,20 +456,38 @@ Please-created `v0.1.1` boundary normally.
449456
450457Before enabling the repaired workflow, create the standard
451458` autorelease: pending` and ` autorelease: tagged` labels if they are still
452- absent. The configuration names both labels explicitly. Because Actions
453- pull-request creation remains disabled, the maintainer-created release PR must
454- receive ` autorelease: pending` before merge so Release Please can discover it
455- and perform the normal tagged transition with its scoped ` issues: write`
456- permission.
459+ absent. The configuration names both labels explicitly, and the action-created
460+ release PR must receive ` autorelease: pending` automatically. Stop if the action
461+ cannot create or label that PR; do not replace the normal flow with a manually
462+ authored PR. Release Please performs the normal tagged transition with its
463+ scoped ` issues: write` permission.
464+
465+ Confirm through the repository Actions API that
466+ ` default_workflow_permissions=read` and
467+ ` can_approve_pull_request_reviews=true` . The latter is the explicitly authorized
468+ 0.1.1 baseline solely so the default token can create the Release Please PR.
469+ The release workflow must never change either setting, and any later drift is a
470+ stop condition.
457471
458472After enabling ` RELEASE_PLEASE_ENABLED` , start a new manual dispatch on ` main` ;
459473do not rerun the skipped workflow from the repair merge. Only attempt 1 may call
460- Release Please. The manually dispatched preparation run cannot trigger npm
461- publication or create a Release: it is accepted only when no merged
474+ Release Please. The workflow rejects any dispatch whose triggering ref is not
475+ ` refs/heads/main` , and all preparation and release runs share one main-scoped
476+ concurrency group. The manually dispatched preparation run cannot trigger npm
477+ publication or create a Release: the action receives explicit
478+ ` skip-github-release=true` , it is accepted only when no merged
462479` autorelease: pending` PR exists, and ` publish.yml` accepts only an upstream
463- ` push` event. The release-PR merge creates the new first-attempt ` push` run that
464- may tag and publish. A later push cannot tag an older outstanding release PR;
465- its merge SHA must equal the triggering SHA before Release Please runs.
480+ ` push` event. It must succeed after validating the one action-created 0.1.1 PR.
481+ Before mutation, the workflow also rejects any open PR whose head name could be
482+ mistaken for the canonical release branch, including a same-named fork branch.
483+ Remove the one-cycle ` last-release-sha` from that branch, complete the
484+ release-ready documentation, run the full matrix on its final head, and obtain
485+ approval from a different human repository administrator. The release-PR merge
486+ creates the new first-attempt ` push` run that may tag and publish. A later push
487+ cannot tag an older outstanding release PR; its merge SHA must equal the
488+ triggering SHA before Release Please runs. Immediately before the irreversible
489+ Release Please call, the push run also requires final release metadata and
490+ public documentation, including removal of the one-cycle ` last-release-sha` .
466491
467492The stale branch
468493` release-please--branches--main--components--cometapi` at
@@ -472,11 +497,14 @@ it still contains the documented generated 0.2.0 state, has no associated open
472497PR, and contains no independent work. Do not delete or rewrite any other
473498branch.
474499
475- For 0.1.1, a normal `fix:` commit after 0.1.0 must produce exactly one patch PR.
476- Stop if the branch contains 0.2.0, if any version/manifest/changelog value is not
477- 0.1.1, or if the generated PR is not attributable to the explicit `cometapi`
478- component. Merge is forbidden until Node.js 22 and 24 blocking checks, the
479- Node.js 26 advisory lane, minimum/locked/latest OpenAI 6.x compatibility,
500+ For 0.1.1, `always-bump-patch` keeps every releasable Conventional Commit on the
501+ 0.1.x maintenance line; changing that strategy requires a separately authorized
502+ later milestone. A normal `fix:` commit after 0.1.0 must produce exactly one
503+ patch PR. Stop if the branch contains 0.2.0, if any
504+ version/manifest/changelog value is not 0.1.1, or if the generated PR is not
505+ attributable to the explicit `cometapi` component. Merge is forbidden until
506+ Node.js 22 and 24 blocking checks, the Node.js 26 advisory lane,
507+ minimum/locked/latest OpenAI 6.x compatibility,
480508package and declaration checks, and human-owner review complete on the final
481509head. After registry verification, restore `RELEASE_PLEASE_ENABLED=false` and
482510keep the already enabled scheduled-smoke policy at `LIVE_SMOKE_ENABLED=true`.
@@ -508,12 +536,15 @@ the draft had no tag and was not published until more than eight minutes after
508536the run failed. Release Please therefore found no discoverable published
509537release/tag boundary, scanned the older initial feature commit, and prepared an
510538unrequested 0.2.0 branch update. PR creation then failed for the separate reason
511- that repository Actions are not authorized to create or approve pull requests.
539+ that repository Actions were not authorized to create or approve pull requests
540+ at that time.
512541Publishing the manual Release later could not retroactively bound that run, and
513542leaving `skip-github-release` enabled would continue the split discovery model.
514543The 0.1.1 repair replaces that historical combination with explicit component
515- identity, one-cycle history anchoring, maintainer-created/human-reviewed release
516- PRs, and normal Release Please tag and GitHub Release creation.
544+ identity, one-cycle history anchoring, action-created/human-reviewed release
545+ PRs, and normal Release Please tag and GitHub Release creation. Repository
546+ Actions pull-request authorization is now enabled for that scoped job; the
547+ workflow still uses only its default token and job-local permissions.
517548
518549## Stable 0.1.0 release evidence
519550
@@ -574,8 +605,9 @@ layers:
574605 publish a package. ` RELEASE_PLEASE_ENABLED` was set to ` false` before the
575606 closeout push; the branch is retained as failure evidence and must not be
576607 merged or treated as the start of 0.2. Release Please remains disabled until
577- its post-manual-release discovery and pull-request authorization strategy are
578- reviewed in a separately authorized maintenance task.
608+ the authorized 0.1.1 repair is merged, the stale branch is revalidated and
609+ removed, and the normal action-created PR path is ready for one first-attempt
610+ preparation run.
579611
580612# # Verification record
581613
0 commit comments