Hello. I load a USD file into Solaris (Houdini 20.5), using a Sublayer or Asset Reference LOP node. Now i want to randomize the values of some of the primvars in that USD. Ideally this is a one and done thing, i don't need the values to be recomputed until I want to do it again. The issue I'm having is that, if I implement that logic in a shelf tool or Python panel, the values are modified, but the renderer (Karma in this case) is not aware of those changes, and I cannot see the modifications in the final rendered image.
Here's a short code snippet of what I'm trying to do:
def random_primvars(self, node_path):
    lop_node = hou.node(node_path)    
  
    stage = lop_node.stage()  
    stage.SetEditTarget(stage.GetSessionLayer())
    
    min_val = self.min_input.value()
    max_val = self.max_input.value()
    
    for prim in stage.Traverse():
        primvars_api = UsdGeom.PrimvarsAPI(prim)
        for pv in primvars_api.GetPrimvars():
            if "to_update_" in pv.GetName():
                new_val = random.uniform(min_val, max_val)
                pv.Set(new_val)

Running this code in a shelf tool or Python panel will update the primvar values (as shown in Solaris Geometry SpreadSheet panel), but the render won't change.

However, if I implement a similar logic in a Python LOP node, the values are updated and the render shows the expected result.
The downside of this approach is that the node is cooked whenever Houdini decides it needs to, and I would like to be in control of when it's executed.

So, I guess my question is, is it possible to edit the primvars outside of a LOP node and the renderer be aware of the changes? And, if possible, is it recommended, or should I this always be done in a LOP node?