The model conformance test added in #955 fails on current main (eac001c) for the existing Q10RoborockPoint introduced by #908.
Reproduction from an untouched checkout:
uv run pytest -q tests/conformance/test_model_conformance.py
Result: 1 failed, 83 passed. The failure is test_data_model_subclasses_roborock_base[roborock.data.b01_q10.b01_q10_containers.Q10RoborockPoint].
Q10RoborockPoint is intentionally @dataclass(frozen=True) and supports hashable coordinate values. RoborockBase is a non-frozen dataclass; Python rejects inheriting a frozen dataclass from it. Removing frozen=True to satisfy the check would change the point's existing immutability and hashability contracts.
Proposed fix: document and check an explicit exception for this existing coordinate value, retain the inheritance requirement for every other domain model, and add tests that coordinate assignment/deletion remain prohibited and hashing is stable. This is independent of the pending Q10 archive PRs.
The model conformance test added in #955 fails on current
main(eac001c) for the existingQ10RoborockPointintroduced by #908.Reproduction from an untouched checkout:
Result: 1 failed, 83 passed. The failure is
test_data_model_subclasses_roborock_base[roborock.data.b01_q10.b01_q10_containers.Q10RoborockPoint].Q10RoborockPointis intentionally@dataclass(frozen=True)and supports hashable coordinate values.RoborockBaseis a non-frozen dataclass; Python rejects inheriting a frozen dataclass from it. Removingfrozen=Trueto satisfy the check would change the point's existing immutability and hashability contracts.Proposed fix: document and check an explicit exception for this existing coordinate value, retain the inheritance requirement for every other domain model, and add tests that coordinate assignment/deletion remain prohibited and hashing is stable. This is independent of the pending Q10 archive PRs.