826cf69c9a
Bug 3: install() and activate() now verify that declared dependencies are installed/active before proceeding. Raises ValueError which the service layer converts to HTTPException 400. Bug 5: activate() now performs a soft permission check — logs warnings for declared permissions not found in any discovered plugin.