One reading, one sale.
Every kWh comes from a meter reading with its own ID. Try selling the same reading twice: the live contract refuses.
Contracts: ReadingRegistry · EnergyMarket. Source verified on Blockscout. The custom error is defined in ReadingRegistry.consume.