# Release Checklist

## Pre-release

- Ensure `npm run build` passes.
- Ensure `npm test` passes.
- Confirm `PROJECT_PLAN.md` status is up to date.
- Confirm `openclaw.plugin.json` version and `package.json` version match.
- Confirm plugin config schema changes are documented.

## Versioning

Use semantic versioning:

- `MAJOR`: breaking tool/config/schema changes.
- `MINOR`: backward-compatible feature additions.
- `PATCH`: fixes and non-breaking improvements.

## Publish Dry Run

- Run `npm pack` and inspect archive contents.
- Prefer the heavier CI proof from `.github/workflows/nightly-release-gate.yml` before a real release window.
- Validate package includes:
  - `index.ts`
  - `openclaw.plugin.json`
  - `skills/`
  - runtime `src/` files

## Publish

- Tag release in git (`vX.Y.Z`).
- Publish package (`npm publish --access public`) when ready.
- Verify install flow with:
  - `openclaw plugins install <npm-spec>`
  - `openclaw plugins enable openclaw-iota-wallet`
  - `openclaw plugins doctor`
  - Confirm postinstall behavior:
    - bootstraps an SDK keystore even if the IOTA CLI is missing or unusable
    - only requires IOTA CLI for KMS signer mode or explicit CLI parity checks
    - optionally auto-installs IOTA CLI when missing (unless disabled via `IOTA_WALLET_AUTO_INSTALL_CLI=0`)
    - keeps the CLI on `mainnet` when the CLI is available
    - creates first wallet address when keystore is empty

## Post-release

- Record release notes.
- Pin plugin version in deployment configs.
- Monitor early adopter issues.
