I'm a first-time Scrum Master. I'm not even certified in anything PM-related; I'm just a seasoned Python/Django developer. However, I have read the latest official Scrum Guide cover-to-cover. I have also read a lot of articles and blog posts on the internet about Scrum, most of them critiques that seem to be from the short era where "Scrum" was a project management buzzword and lots of people were applying it incorrectly. Hopefully I am better prepared against common pitfalls when applying Scrum.
Anyway, I joined a new company last week and yesterday I conducted the first Definition of Done (DoD) exercise with my team. We are dealing with extending and evolving an existing software product into its next version. And due to the scrappiness of previous project management, the youth of the team, and the time and resource constraints, it appears that quite a few of the criteria we came up with for our DoD cannot be achieved in the imminent future. E.g. automated, repeatable functional tests and integration tests (with good coverage) are desirable, but our existing frontend has no automated test at all; somebody would need to learn stuff like Selenium and set it all up, and that takes time. An adequate level of documentation in terms of architecture, design, deployment, and usage are also desirable, but that's also currently lacking.
What do I do about such criteria?
It is obviously impractical that I say "halt everything and fix these", as we still have other things that need to be developed and delivered.
Do I keep those criteria on the DoD and mark them as "currently lacking/unachievable", and just progressively work towards being able satisfy those criteria as well, iteration by iteration?
Do I just try to satisfy more of these criteria for new development?
I mean, that's in alignment with the spirit of Kaizen, right?
What do I do about the old stuff that has already been deployed, delivered, and "done"?