Conversation
8 of 23 tasks
Contributor
Author
|
On hold following the review feedback on #933: please do not review the current cumulative diff. After the read-only and map-control stacks land, this draft will be rebased and repartitioned into focused changes:
Each part will be submitted sequentially against |
# Conflicts: # roborock/devices/traits/b01/q10/maps.py # tests/devices/traits/b01/q10/test_clean_history.py
This was referenced Sep 27, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Q10 customized cleaning requires typed settings and device confirmation before starting a selected-room clean. This adds global water/pass/route controls, per-room settings codecs, and a confirmation-driven room-cleaning trait.
Scope and dependencies
This draft contains the cumulative map-control work from #934 and archive work from #937–#939; archive parser support from #936 is merged. Its inherited archive implementation now uses the composed
Q10CleanRecordDetailAPI and shared lifecycle fixes from the archive stack.After the preceding work lands, the planned partition is:
Position, zoned cleaning, goto, and the common-coordinate point are already upstream through #908. #965 is merged. Upstream
mainthroughb3a98b9(7.12.0) is integrated.Behavior
RoborockBasemodels. Writes accept supported enums; reads preserve unknown integer values. Command snapshots and private reported-state copies protect command targets from caller mutation.COMMON(101); cleaning mode (137) and selected-room start (201) use direct data points.roborock.vacuum.ss07model. The direct Q10 factory defaults to enabling them.Lifecycle and map validity
Room operations snapshot their inputs, capture the current map revision, and validate room IDs after acquiring the existing write lock. An operation queued across map invalidation is rejected even if a refreshed map reuses the same room IDs. Map validity is checked again after confirmation and before publishing the selected-room start.
Local saved-map apply invalidates settings before publishing. The confirmation deadline includes settings publication and the full-response request. Device teardown invalidates settings and cancels the active room command sequence; future cleanup also handles invalidation during a failed or cancelled publish.
These guards cannot retract a command already published before a map change is observed. Reads and setting confirmations have no map-generation identifier, so concurrent changes from another client still require authoritative device updates. Inherited clean-history requests retain their documented late-response ambiguity barrier.
Allen’s follow-up feedback on merged #936 is addressed by separate clean-record and saved-map decoder tests, with no conditional assertions.
Validation
Validation of
6c8075d:uv run pytest -qon Python 3.13: 1,655 passed, 53 xfailed, 92 snapshots passed.uv buildpassed for both wheel and sdist.No physical-device run was performed for this revision.
Coverage includes sanitized physical fixtures, simulator dispatch, matching confirmations, timeout/cancellation, caller mutation, concurrent writes, queued operations across map invalidation, invalidation after confirmation or during mode publication, early invalidation during map apply, stalled publication, and device teardown.
Earlier Q10 S5+ validation exercised global setting round trips and a customized single-room clean, then restored the original presets and normal cleaning mode. The post-dock full-response fallback was verified on the device. An earlier wheel was exercised in Home Assistant; the hardware scenarios have not been rerun for this revision.
Home Assistant controls and destructive map operations are outside this contribution. No credentials, personal room labels, floorplans, or private raw captures are included. Related: #767.