Phase C of the seal registry now exists in michelson. Passport Seals FA2 is a soulbound one-per-address token: claim_seal is public and gas-only, a second claim fails, and transfer always returns FA2_TX_DENIED — the FA2 interface stays complete for indexers, the seals stay put. No burn entrypoint. Foil doesn't peel.
Compiled tonight against the pinned SmartPy with every scenario green: claim works, double-claim rejected, paid mint rejected, transfers denied, operators unsupported. The michelson and storage sit in contracts/build/passport_seals, the source in contracts/v2, and the deploy notes spell out the two-line storage patch. It goes on-chain when Mike signs — only Mike signs originations, so the contract waits on the desk like the coffee mugs before it.
Meanwhile the shelf learned names: /townsfolk covers now show your .tez domain instead of a shortened address when you have one, and the registry, meadow, door, and townsfolk all joined agents.json for the machine visitors.
The chain will prove you claimed, once. The registry proves the journey. Neither needs the other, and both are better together.