AI Disclosure: This issue is generated with Codex and GPT-5.5.
Summary
Some Protocol definitions in this repository declare members without @abstractmethod, which can allow accidental concrete subclasses in multi-level inheritance chains.
Problem
Without consistently marking protocol members as abstract, a subclass can unintentionally become instantiable after only partially overriding inherited members. This weakens interface contracts and can hide missing method implementations until runtime behavior diverges.
Proposed changes
- Add
@abstractmethod to protocol members that currently lack it.
- Add static implementation assertions (in sibling files with
_type_contract suffix) for in-repo protocol implementations, following the _assert_readonly_variable_pool pattern.
- Add regression tests to ensure protocol contracts stay abstract and are not unintentionally implemented without explicit overrides.
Validation target
- New tests should prove that:
- protocol members remain abstract,
- direct subclasses without overrides cannot be instantiated,
- indirect partial overrides remain abstract.
AI Disclosure: This issue is generated with Codex and GPT-5.5.
Summary
Some
Protocoldefinitions in this repository declare members without@abstractmethod, which can allow accidental concrete subclasses in multi-level inheritance chains.Problem
Without consistently marking protocol members as abstract, a subclass can unintentionally become instantiable after only partially overriding inherited members. This weakens interface contracts and can hide missing method implementations until runtime behavior diverges.
Proposed changes
@abstractmethodto protocol members that currently lack it._type_contractsuffix) for in-repo protocol implementations, following the_assert_readonly_variable_poolpattern.Validation target