Plugin architectures are powerful, but the real design challenge starts when plugins have different lifecycles, dependencies, and failure modes. Keeping the host isolated from plugin-specific assumptions can make the system much easier to evolve. I’d also treat plugin boundaries as reliability boundaries, not just extensibility points—so a faulty plugin has limited impact on the rest of the application.