I think you are wrong, y is indeed not a leaf. Maybe you had a weird version of Pytorch?
def inplace_playground():
    import torch

    x = torch.tensor([1,2,3.], requires_grad=True)
    y = x + 1
    print(f'x.is_leaf = {x.is_leaf}')
    print(f'y.is_leaf = {y.is_leaf}')
    x += 1

output:
x.is_leaf = True
y.is_leaf = False


@colesbury I think you were correct. Not sure what you corrected but I tried the leaf thing and it seems your right that y is not a leaf (as expected).
Thanks!