@resource_handlers @resolver_coverage Feature: Handler resolver edge-case coverage As a developer maintaining the handler resolution subsystem I want to exercise the uncovered error paths in resolve_handler So that every branch in resolver.py is tested Background: Given the handler cache is cleared # --- Lines 72-73: empty module_path or class_name after split --- Scenario: Reject handler reference with empty module path When I try to resolve handler ref ":SomeClass" Then a handler resolution error should be raised with message "both module path and class name are required" Scenario: Reject handler reference with empty class name When I try to resolve handler ref "some.module:" Then a handler resolution error should be raised with message "both module path and class name are required" # --- Lines 84-87: generic Exception (not ModuleNotFoundError) during import --- Scenario: Generic exception during module import raises HandlerResolutionError Given a module import that raises a generic RuntimeError When I try to resolve the rigged handler reference Then a handler resolution error should be raised with message "Error importing handler module" # --- Lines 99-102: Exception during handler class instantiation --- Scenario: Exception during handler instantiation raises HandlerResolutionError Given a module whose handler class raises TypeError on init When I try to resolve the rigged handler reference Then a handler resolution error should be raised with message "Cannot instantiate handler" # --- Lines 106-107: instantiated object does not satisfy ResourceHandler protocol --- Scenario: Handler class not satisfying ResourceHandler protocol is rejected Given a module whose handler class does not satisfy ResourceHandler When I try to resolve the rigged handler reference Then a handler resolution error should be raised with message "does not satisfy ResourceHandler protocol" # --- Whitespace-only reference triggers line 53-54 --- Scenario: Whitespace-only handler reference is treated as empty When I try to resolve handler ref " " Then a handler resolution error should be raised with message "must not be empty"