# Prepare and launch a test collection

Read the current repository's `services/PREPARATION.md`, `launch/README.md` and `docs/mint-economics.md` before constructing launch artifacts. Those files describe the maintained schemas and verification commands. Do not adapt old ABI examples by guessing missing fields.

A user's request to prepare metadata authorizes local files. A request to launch on a named testnet may already authorize the corresponding publication and transactions. Preserve that scope; do not ask again for existing authorization. Before any additional mutation outside that scope, finish the unsigned reviewable artifacts and ask for the missing authorization. Never send private bundle keys or assignments to public storage.

The creator should choose collection identity, artwork, recipients, price/economics and conversion timing. The agent or platform handles addresses, sorting, raw units and serialization. Explain actual total payment and conversion timing in ordinary language before a launch is signed. Do not silently assign irreversible revenue recipients or fees.

Current mechanics:

- Protocol launch manifest is version 3; the public preparation JSON envelope remains version 1. The folder helper's `jpeg-artwork-preparation` manifest is a separate format.
- N NFTs create N + 1 FLOOR, including one extra FLOOR for the pool. A public mint consumes one whole collection FLOOR per NFT plus the fixed primary fee in quote-token raw units. Team claims have their FLOOR funded at activation and do not pay the primary fee.
- Mint fees, recipient shares and conversion delay are immutable launch inputs. A zero fee requires an empty shares array. Positive fees require 1–8 unique nonzero recipients with positive shares totaling 10,000 bps, sorted numerically. Pool trading fees and reserve backing are separate from primary mint revenue.
- Conversion opens at successful activation plus the configured delay. Sellout does not open it early. Before opening, NFT deposits/sales/exchanges through the converter are unavailable; minting and FLOOR trading can remain available.
- Only minter, collection and converter predictions are fixed. Final FLOOR, receiver and pool addresses may differ from simulation due to occupied candidates; obtain final addresses from verified receipts.

For a supported, reviewed coordinator, read-only address prediction is:

```sh
node launch/cli.mjs predict COORDINATOR ACTOR USER_SALT prediction.json
```

Supply `LAUNCH_RPC_URL` or `ROBINHOOD_RPC_URL` privately. `ACTOR` must be the eventual sender. Keep actor, chain, coordinator, salt, supply and team assignments consistent throughout preparation.

After publishing/pinning exact images and final metadata, the existing private preparation CLI validates content against CIDs and produces public commitments plus encrypted private recovery material:

```sh
node --env-file=.env.rpc --env-file=/absolute/private/bundle-key.env services/src/prepare-cli.mjs /absolute/private/input.json /absolute/staging/public-artifacts /absolute/private/new-recovery
```

Build input exactly as documented in `services/PREPARATION.md`: a creator draft, reviewed deployment pins, each artwork's CID URI and retained metadata/artwork paths, and matching team selections. That CLI performs no upload or transaction. Output directories must be new, separate and non-nested. Keep `BUNDLE_KEY_HEX` outside public files and command arguments; independently retain the recovery key and encrypted bundle. The tool shuffles public artwork assignments; folder order is not a promise of final public mint artwork.

Prepare a fresh unsigned launch against the generated **public protocol metadata manifest**:

```sh
node launch/cli.mjs prepare COORDINATOR ACTOR config.json public-metadata-manifest.json unsigned-launch.json
```

This performs `eth_call` simulation and validates domains, inputs and expected receipts. It never signs or broadcasts. The config must include current economics and use decimal integer strings for token quantities. Preserve the expected manifest hash in the reviewed transaction. Simulation neither reserves addresses nor guarantees execution; refresh against current state before signing.

When transaction execution is within the user's authorization, use the available verified wallet path on the requested test chain, inspect the resulting receipt and final deployed bindings, and check the collection page. If no configured coordinator, wallet or publication provider is available, deliver the preparation artifacts and state the specific missing dependency. Do not invent a `launch` submission command: the CLI above only prepares unsigned transactions. Local rehearsal and mock demo routes do not establish production deployment or production readiness.
