When zombienet exports the parachain genesis state it uses a command like the following:
parachain-template-node export-genesis-state --chain /tmp/zombie-91732cca35cc89d9bc40d256bff11459_-279173-rjyW4YgPKWMA/2000-rococo-local.json > /tmp/zombie-91732cca35cc89d9bc40d256bff11459_-279173-rjyW4YgPKWMA/cfg/genesis-state-2000
This has worked reliably so far, but only because of a bug in cumulus that I am now fixing. (See paritytech/polkadot-sdk#2326 and paritytech/polkadot-sdk#2331 for context.) Previously, Cumulus made some assumptions about the genesis block, and created a new one on the fly whenever you asked to export the genesis state. With this bug fixed, cumulus will now read the genesis block from the database instead of re-generating it 🚀
But that means that you will now need to make sure you are not implicitly using some pre-existing un-purged data directory.