Most definitions of the Open Closed Principle talk in terms of extension. This makes it hard to check for because you need to imagine all possible extensions. There is a simpler equivalent test: How much would I need to change to remove this feature? Theoretically it could be as little as deleting one class that self registers (plus the tests). The advantage is that it’s easier to reason about removal.