Dependency Management
Direct and transitive dependencies, update risk, API stability, versioning as a communication convention, and deprecation as a lifecycle rather than a deletion.
Every package in the lockfile is code you now operate without having written it — and most of it arrived without anyone making a decision.
A small package can carry a large graph you did not choose, cannot audit, and run in production with your own privileges.
Four questions decide it: how much it does for you, how hard it would be to replace, what it drags in, and who maintains it.
An interface with no external users still has consumers. Changing it frequently across many of them costs coordination, and that cost is invisible in every individual diff.
A communication convention, not a guarantee. The number is a claim made by a human about their own code, and humans get it wrong in both directions.
Introduce the new thing, migrate the consumers, warn on the old, then remove it. Skipping a step does not save time; it moves the cost onto whoever is unlucky.