A failed PluginManager.register() call can leave a plugin partially registered when a later hook implementation fails validation. On main at 9836e54, a plugin with a valid a_hook and invalid b_hook raises PluginValidationError but remains in the manager and leaves a_hook installed. Expected: registration failure leaves no plugin mapping or hook implementations, so callers can safely fix and retry. The register implementation currently contains a TODO noting that state should not change on failure.
A failed PluginManager.register() call can leave a plugin partially registered when a later hook implementation fails validation. On main at 9836e54, a plugin with a valid a_hook and invalid b_hook raises PluginValidationError but remains in the manager and leaves a_hook installed. Expected: registration failure leaves no plugin mapping or hook implementations, so callers can safely fix and retry. The register implementation currently contains a TODO noting that state should not change on failure.