Polygon’s FxPortal “state-transfer” Example – Root not receiving Child messages


I implemented the state-transfer example contracts for FxPortal and although Goerli -> Mumbai message passing consistently works (it does take ~25 mins though), I can’t seem to get Mumbai -> Goerli message passing to work.

Attached is my test script, and to double-check, here are the FxRoot, FxChild, and CheckpointManager contract addresses used in the test:

const GOERLI_CHECKPOINT_MANAGER = `0x2890bA17EfE978480615e330ecB65333b880928e`;
const GOERLI_FX_ROOT = `0x3d1d3E34f7fB6D26245E6640E1c50710eFFf15bA`;
const MUMBAI_FX_CHILD = `0xCf73231F28B7331BBe3124B907840A94851f9f11`;

The deployed testnet tunnel contracts are here:

You can see that the Child contract received the message from root: "Hello Child!", and you can go to the Child contract Events tab and see that the Child sent the "Hello Root!" message (attached image #1), but it was never received by the Root contract (attached image #2).

Is there a known issue with Mumbai -> Goerli messaging (Child -> Root) or am I missing a step in my test script here?

Event showing message sent to root from Child contract:

event showing message sent to root from child

But the message was never received by Root contract:

message never received by root