No worries!

How would autograd reconstruct original x for backprop

It does not.
If you modified it inplace, and you save it, you will get the modified version during the backward pass.
For example:
import torch


class MyFn(torch.autograd.Function):
    @staticmethod
    def forward(ctx, inp):
        print("fw in", inp)
        inp += 2
        print("fw out", inp)
        ctx.mark_dirty(inp)
        ctx.save_for_backward(inp)
        return inp

    @staticmethod
    def backward(ctx, grad_output):
        inp, = ctx.saved_tensors
        print("bw inp value", inp)
        return grad_output


a = torch.rand(2, requires_grad=True)

out = MyFn.apply(a.clone())

out.sum().backward()

Will print:
fw in tensor([0.3568, 0.4446], grad_fn=<CloneBackward0>)
fw out tensor([2.3568, 2.4446], grad_fn=<CloneBackward0>)
bw inp value tensor([2.3568, 2.4446], grad_fn=<MyFnBackward>)

As you can see the backward contains the modified value