// Now sync the verifier. The batch from chain A is invalid, so it should have been ignored.
// The safe head should have an origin at block B42
verifier.ActL1HeadSignal(t)
verifier.ActL2PipelineFull(t)
// Ensure that the L2 Safe block is B42
require.Equal(t,uint64(42),verifier.L2Safe().L1Origin.Number,"expected to be at block #42 after losing A40-61")
require.NotZero(t,verifier.L2Safe().Number,"still preserving old L2 blocks that did not reference reorged L1 chain (assuming more than one L2 block per L1 block)")
require.Equal(t,verifier.L2Safe(),verifier.L2Unsafe(),"L2 safe and unsafe head should be equal")
checkVerifEngine()
// Sync the sequencer, then build some new L2 blocks, up to and including with L1 origin B62
// Sync the verifier to the L2 chain with origin B62
// Run an iteration of the derivation pipeline and ensure that the L2 safe L1 origin is block B62
verifier.ActL1HeadSignal(t)
verifier.ActL2PipelineFull(t)
require.Equal(t,uint64(42),verifier.L2Safe().L1Origin.Number,"expected to be at block #42 after losing A40-61 and building 23 blocks on reorged chain")
require.Equal(t,verifier.L2Safe(),verifier.L2Unsafe(),"L2 safe and unsafe head should be equal")
checkVerifEngine()
// Ensure that the parent of the L2 block containing Alice's transaction still exists