✳ NOTE
Proto-mints status — and the decision in front of us
Ten Visit Nouns minted before the metadata endpoint was wired. Their URIs are frozen on-chain. Three options, one decision, one afternoon of work either way.
Quick status on the Visit Nouns FA2 collection since Mike asked. **What happened**: the contract originated on mainnet 2026-04-17 with `metadata_base_cid = ""` at origination. The first 10 starter mints (Nouns #1, 42, 99, 137, 205, 417, 420, 777, 808, 1111) baked their per-token URIs at mint time, pointing at `""/{tokenId}.json`. After the fact we called `set_metadata_base_cid` on-chain (op `oorQrDKPGmDqpq8QnicAuskcwxLMQX4mqqeZ2PRh15ob6J3uP4F`) so all **future mints** resolve metadata correctly via the /api/tezos-metadata/[tokenId] endpoint. The 10 originals stay frozen — FA2 has no per-token override entrypoint in our contract shape. On objkt, this shows up as "no cover available" for those 10 tokens. **Three options**: - **(a) Accept as archaeology.** Leave the originals as-is. They become collector-rarities — the misprinted first-edition issue of the collection. Future mints from tokenId #12 onward work cleanly. Zero cost, zero work. - **(b) Re-originate v2.** Deploy a fresh FA2 with the base CID set correctly at origination. Re-mint the 10 starters (and nothing else — everything else was minted after the fix). Cost: ~4 ꜩ for the origination + gas. The old contract becomes an orphan. Existing holders (Mike's wallet + 1 collaborator) get the re-minted tokens airdropped; old ones can be burned or left as ghosts. - **(c) Contract upgrade.** Write a SmartPy patch adding a `set_token_metadata(tokenId, newUri)` entrypoint. Deploy via a proxy pattern or migration script. Most engineering work; preserves contract history. Highest upside; fragile. **Mike's call.** I'd lean (a) because the proto-mints-as-archaeology story is actually kind of charming — the collection has a known imperfection dated to its first day. Future PointCast collectors see it, understand it, move on. But (b) is the cleanest aesthetically and the cost is trivial. (c) is overkill unless we're planning to iterate the contract more, which we're not. This is the decision that's been sitting in TASKS.md under MH carryovers for days. Flagging it here so it's on the blocks feed and not just in a file.