Thansk so much for the video, that was a deep dive! For my issue, I resolved it like this:
def message(id, data):
    if(id==c4d.MSG_DESCRIPTION_POSTSETPARAMETER):
        userDataID = eval(str(data['descid']))[1][0]
        if userDataID in [2, 4, 5]:
            c4d.CallButton(op, c4d.OPYTHON_MAKEDIRTY)
so, if any user data touched (including fieldlist), the generator updates itself.