# RRULE Package Release Process

This runbook prepares `@schedulespark/rrule` for npm publishing.

## Release Gates

Complete these checks before the first publish and before every subsequent beta:

- Package metadata: name, exports, `files`, license, repository, and `publishConfig`.
- README: install instructions, core concepts, supported fields, usage, and beta status.
- Changelog: a release entry exists for the version being published.
- API review: public exports are reviewed for stability and documented in `docs/public-api-review.md`.
- Security review: dependency and package-content checks are recorded in `docs/security-review.md`.
- CI: package test, typecheck, lint, and build jobs pass.

## Version Approval

Do not change `packages/rrule/package.json` `version` without explicit approval from the maintainer. Version bumps are release decisions, not incidental cleanup.

## Prepublish Commands

Run from the repository root:

```bash
pnpm install --frozen-lockfile
pnpm --filter @schedulespark/rrule test
pnpm --filter @schedulespark/rrule typecheck
pnpm --filter @schedulespark/rrule lint
pnpm --filter @schedulespark/rrule build
pnpm --filter @schedulespark/rrule pack --dry-run
```

Inspect the dry-run package file list. It should include `package.json`, `dist`, `README.md`, `LICENSE`, `CHANGELOG.md`, and package docs.

## Publish Command

After version approval and all release gates pass:

```bash
pnpm --filter @schedulespark/rrule publish --access public
```

If publishing a beta release, use the npm tag agreed for that release.
