According to the description of the transaction lifecycle in the official website documentation, there are four finality states for a transaction: NOT_RECEIVED, RECEIVED, ACCEPTED_ON_L2, and ACCEPTED_ON_L1.
My question is, when a transaction is in the ACCEPTED_ON_L2 state and the proof is submitted to L1 for verification, if the verification fails, will the transaction remain in the ACCEPTED_ON_L2 state indefinitely? Will the transaction be rolled back on L2? If not, how is the consistency between L1 and L2 ensured?
I expect a clear description of how StarkNet or other L2 networks (whether ZK or OP) handle the situation where L1 rejects L2 commit.