I copied our FR10 status script onto the rebuilt laptop. Same file, different result: it rejects an argument before making the read-only request. There are several SDK folders on each machine and no note saying which one runs. What should I compare first?
Which module file is actually loaded? Check that in the running environment, along with the interpreter path. I once spent ages comparing two folders while Python was happily importing a third copy from somewhere nobody had mentioned.
That is exactly what happened here. The old laptop loads a copy under its project folder; the rebuilt one loads an installed package. The argument signatures differ.
There you go. Can you recover the working environment deliberately, rather than copying every SDK folder and hoping Python picks your favourite? Keep the failing traceback too; it'll help when you choose to update later.
We recreated the working environment from the identified copy and recorded its dependencies and paths. The same read-only request now works on both laptops. Updating to the newer interface is a separate piece of work.