L2ContractMigrationFacet.sol implements EIP712. For some reason it requires signature to be signed with chainId = 1 (Mainnet). However protocol is migrated to L2 so it should use chainId of current chain instead.
Here you can see it uses legacyChainId
when calculates domain separator:
https://github.com/Cyfrin/2024-05-beanstalk-the-finale/blob/df2dd129a878d16d4adc75049179ac0029d9a96b/protocol/contracts/beanstalk/silo/L2ContractMigrationFacet.sol#L237
L2ContractMigrationFacet.sol doesn't conform to EIP712.
Manual Review
Use current chainId:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.