A simple

    return $! result

to force evaluation of result to WHNF suffices to require the fields (except
the `channel' field that's not marked strict) being evaluated.

Otherwise I tested that right now and you are 100% right.
So strictness annotations + $! works fine and solves my problem and I also mostly understand why it works like that :-)
I still need to do a little more reading on the topic but I'm much closer now.

Thank you!

Emmanuel