# Release and submission

## Before readiness

1. Run `npm test` from the same package workspace the author reviewed.
2. Run `npm run status`; require valid brief and workspace.
3. Inspect the real player and requested overlay in Workbench at relevant
   viewport sizes. Resolve diagnostics rather than suppressing them.
4. Confirm version, package ID, display metadata, progression thresholds,
   permissions, capabilities, and acceptance scenarios.

For an update, retain the exact previous `.cmpkg`, increment the semantic
version, pack the candidate, and run:

```bash
.chasing-mastery/run.sh evolution <previous.cmpkg> <candidate.cmpkg> --json
```

Use `.chasing-mastery/run.ps1 evolution ...` on Windows. A presentation-only
change may be comparable only when structural checks and differential fixtures
agree. Scoring, unit, metric, default/configuration, or result aggregation
changes require a new result-contract revision. Progression threshold or
evidence changes require a new progression version and lane. Stop on a blocked
report; never assert compatibility manually.

## Produce the handoff

Run `npm run ready`. It reruns conformance, creates the
canonical content-addressed `.cmpkg`, and writes
`dist/chasing-mastery.submission.json`. Record:

- package ID and semantic version;
- authoring-brief digest;
- manifest and archive digests;
- scenario count and verification checks;
- exact Domain Kit provenance, when present, including version, integrity, and
  influenced artifacts;
- relative release path;
- submission state.

The expected local submission state is `not_submitted`. The handoff is not
proof of upload, moderation, approval, installation, or publication.

## Private authenticated return path

- Give the author the `.cmpkg`, `.sha256`, and submission handoff.
- If the authenticated Chasing Mastery MCP tools are available and the member
  explicitly authorizes private submission, use
  the `manage-chasing-mastery-club` skill through the current agent's native
  skill syntax to submit the exact archive and follow its
  asynchronous review state. Otherwise use the signed-in screen below.
- The author returns to the private-authoring screen that preserved their
  Pursuit and draft Sprint, then chooses the `.cmpkg` while signed in.
- Chasing Mastery verifies the archive independently, replays its fixtures in
  the isolated runtime, and shows a resumable uploaded, reviewing, approved, or
  rejected state.
- An approved release appears only in the owner's private Library. The author
  adds the Experience Suite once, receives every package-default Practice Mode
  ready, chooses the relevant mode, and resumes the saved Sprint.
- Never request or handle the author's session cookie, password, API key, or
  other Chasing Mastery credential. The app owns authenticated upload.
- For local platform testing, install into an explicitly selected approved
  registry through the platform checkout's trusted registry tooling. Do not
  add an install/publish script to an authored package by default.
- If the package changes after readiness, update the brief as needed, increment
  the semantic version, compare it with the retained prior archive, and produce
  a new immutable release.

## Required before community publication

Do not add a shortcut around authenticated publisher identity, moderation,
malware/capability review, signing, immutable version enforcement, review
status, revocation, and rollback. Once that gateway exists, this skill may pass
the same handoff to it and report the returned review receipt.
