I know that the .data attribute of tensors has been deprecated (when Variable got merged into Tensor) and I also know its use is discouraged because it causes problems with gradient computation.  However, I still come across old code bases that use it extensively.  In initial phases of my short-term projects, I do not want to update a bunch of deprecated uses if they are harmless to the logical flow and effect of the code.
In short

When is it ok to leave tensor.data in old code?  Can we understand the OK and dangerous uses?

What I know is bad: Let’s say we are building a computation graph with the ultimate goal of computing the gradient of loss with respect to weights.  Assigning values directly to the data attribute in any computations on tensors in the path to loss will not be directly tracked.  This could lead to incorrect derivatives of loss wrt weights.
What I’m not sure about: If we just use tensor.data on the RIGHT HAND SIDE of a computation that does NOT lead to the desired output (loss) in the computation graph, this should be fine, right?  In this case, .data will not track the gradient, and the computation does not lead to a gradient we care about anyway.  For example, say I want to compute the norm of all my weight matrices and write them to disk for analysis later on.  I could do norm(model.layer.weight.data), right?  Same goes for simply tracking the loss: you could in principle do print(loss.data) without causing harm.
I know that it would be better to use .detach() here, but would it be dangerous or lead to unintended consequences to use .data here?
What else? Are there other dangers of .data to be aware of?
Thank you