Hi @vbuterin thank you for your response. I re-read your post regarding Cross-rollup NFT wrapper and migration ideas. This implementation is similar to Extension 2, but instead of having a single contract manage all NFTs, where all potentially withdrawn NFTs are pre-created. This implementation instead uses a single NFT-collection contract, where the individual who created the contract owns the NFTs and can set the amount to be allocated on each individual layer. This has the added benefit of allowing each NFT to be tracked and located from the Layer 1 contract, with the assumption that the NFT stays on that layer and is not deposited to another contract outside of the architecture. This allows other users/contracts to see where the NFT is officially located using the Layer 1 contract.
I agree that there is a significant trade-off in the wait time for the transition between layers. Any type of messaging across chain would have to be put in that waiting period. I personally think that the event of transitioning an NFT from a Layer 2 is rare, but necessary to have. The initial idea is to have the ability for NFT projects to support multiple allocations on multiple layers, while still retaining the ability to make a withdrawal to Layer 1/2. Thank you for your thoughts and discussion points related to this design.