I would say doneness is about completeness within context, not immutability.
The environment may change, but within context, it can still be considered done.
It's fine to say and consider software never done, because there are known and unknown unknowns and extrapolations and expectations. But I think calling something done has value too.
It is a label of intention, of consideration, within the current context. If the environment changes and you want or need to use it, by all means update it. That doesn't mean the done label assigned previously was wrong [in its context].
We also say "I'm done" to mean our own leave, even when there is no completeness on the product, but only on our own tolerance.
In the same way, if you shift focus, done may very well be done and not done at the same time. Done for someone in one environment, and not done for someone in another.
More often than 'done' I see 'feature complete' or 'in maintenance mode' in project READMEs, which I think are better labels.