Skip to content

ci(release): publish the F292 public package chain - #26

Merged
zts212653 merged 1 commit into
mainfrom
feat/f292-publish-public-packages
Aug 10, 2026
Merged

ci(release): publish the F292 public package chain#26
zts212653 merged 1 commit into
mainfrom
feat/f292-publish-public-packages

Conversation

@zts212653

@zts212653 zts212653 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Why

F292's reviewed public contract landed, but @clowder-ai/plugin-sdk@0.1.0-beta.5 and @clowder-ai/feishu-meeting-intake@0.1.0-alpha.0 are still absent from npm. Cat Café therefore cannot install the official adapter for K-2 production transport or real meeting dogfood.

The CVO explicitly authorized the irreversible prerelease publication and the follow-on K-2 wiring.

What

  • publish the public dependency chain in strict order: contract → SDK → Feishu intake
  • reuse one repository-owned composite action for exact pack/integrity/resume/tag behavior
  • preserve an existing latest; on a first prerelease, remove latest only when npm assigned it to this exact prerelease
  • keep all releases on next with provenance and public access
  • protect the new npm write surface with the existing dual-owner CODEOWNERS rule

Registry pre-state

  • contract beta.9: published; exact integrity present; next=0.1.0-beta.9; existing latest=0.1.0-beta.1
  • SDK beta.5: E404
  • Feishu intake alpha.0: E404

Verification

  • Red → Green release configuration and mutation guards
  • all multiline workflow/action shell blocks parse with bash -n
  • workflow and action YAML parse successfully
  • full public external-contract gate: typecheck, tests, lint, build, conformance, fresh-consumer install, generate check
  • git diff --check

Risk snapshot

  • Behavior: publication workflow only; package runtime bytes are unchanged.
  • Data: no user or production data mutation; npm registry metadata and immutable package versions are the only writes.
  • Security: NPM_TOKEN is scoped only to publish/dist-tag mutation steps; anonymous reads remain credential-free; CODEOWNERS protects the reusable write action.
  • Contract: publishes already-reviewed contract beta.9, SDK beta.5, and Feishu alpha.0 in dependency order with exact registry verification.
  • Irreversible: beta.5 and alpha.0 become permanently occupied npm versions; direct CVO authorization is recorded and exact-HEAD non-author review is required before merge.

Maintainer boundary

This PR changes only release governance/configuration. It does not change package runtime bytes or introduce a second publisher. Main push remains the sole publication trigger after validation.

Why: F292 automatic intake cannot enter production until the reviewed SDK and Feishu adapter are installable from npm. Publish the dependency chain through one exact-integrity prerelease action while preserving the stable latest tag.
@zts212653
zts212653 requested a review from mindfn as a code owner August 10, 2026 11:21
@zts212653

Copy link
Copy Markdown
Owner Author

Exact-HEAD review — verdict: APPROVE

Reviewed commit: 559da859bf0f05f8f1e69b51b724a82e3ca7a9e4
Reviewer: Kimi (k3), cross-individual reviewer

Independent attack on the five declared risk boundaries:

  1. Irreversible first publish — the pack step refuses any non-prerelease version (version.includes('-') guard, stable publication throws); the publish job runs only on push to main with needs: validate, so no PR can trigger it; contents: read + id-token: write is the minimal permission set for --provenance. ✓
  2. Immutable integrity resume — pre-publish inspection hard-fails when an existing registry version's integrity differs from the packed tarball, and idempotently skips when identical. Re-runs of already-published contract beta.9 are safe. ✓
  3. First-prerelease latest cleanup — both npm behaviors handled: if npm auto-assigns latest on first publish, it must equal this prerelease and is removed via dist-tag rm with a final verify that latest is absent; when a previous latest exists (contract: 0.1.0-beta.1), it must remain byte-identical. Both verification blocks retry 12×5s and fail closed. ✓
  4. Token scopeNODE_AUTH_TOKEN is present only on the publish and dist-tag-rm steps; all registry reads are unauthenticated; the action directory is CODEOWNERS-protected by both maintainers. ✓
  5. Dependency publish order — contract → SDK → Feishu matches the dependency chain; publishable packages pin concrete versions (plugin-contract@0.1.0-beta.9, plugin-sdk@0.1.0-beta.5), no workspace:* in any published tarball, and fresh-consumer-install.test.mjs gates installability in CI. ✓

Registry pre-state independently verified: contract latest=0.1.0-beta.1 / next=0.1.0-beta.9; SDK beta.5 and Feishu alpha.0 both E404.

Independent local evidence (clean worktree, Node 24.16, exact 559da859): typecheck / lint / build all PASS; tests — contract 308/308, SDK 218/218, stackchan 44/44, loopback 61/61; conformance 32/32 + 18/18 behavior; fresh-consumer install 2/2; git diff --check PASS. (Note: a first local run showed two Exit status 2 from my own chain running root typecheck/lint before any build — cross-package dist types did not exist yet; re-run in CI order passes cleanly. Not a PR defect; GitHub CI on this HEAD is green.)

Additional positive notes: composite action validates package-directory shape, compares packed name/version against package.json, never echoes the token, and the release-config conformance tests pin the dist-tag/token/idempotent-resume invariants as executable guards.

APPROVE for merge at exact HEAD 559da859bf0f05f8f1e69b51b724a82e3ca7a9e4. The merge authorizes the irreversible first publish of @clowder-ai/plugin-sdk@0.1.0-beta.5 and @clowder-ai/feishu-meeting-intake@0.1.0-alpha.0 under CVO sign-off already recorded in-thread.

[墨墨/Kimi-k3🐾]

@zts212653
zts212653 merged commit 0bc1803 into main Aug 10, 2026
2 checks passed
@zts212653
zts212653 deleted the feat/f292-publish-public-packages branch August 10, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant