Repository navigation
test(heating): align F461 season frame assertion with WHO 4 season contract - #120
Merged
GreenGrassBlueOcean merged 1 commit intoOct 16, 2026
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
fedem95
approved these changes
Oct 16, 2026
fedem95
left a comment
Contributor
There was a problem hiding this comment.
This aligns the F461 season-frame assertion with the WHO 4 season contract and fixes the documentation sync entry for door_entry. The changes are focused, and the visible CI jobs pass.
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.
What is the problem
Immediately after merging PR #97 (
feat/who4-consolidated-heating, commit6af9377) intomaster, CI failed across all Python matrix versions (3.11, 3.12, 3.13, 3.14) on run #395.The root cause was a semantic merge conflict between two PRs merged back-to-back:
fix/f461-live-plant, commit278c732) addedtests/test_f461_live_plant.pycontaining:feat/who4-consolidated-heating, commit6af9377) merged directly afterward without rebasing onto PR fix(heating,gateway): dimension 19 is_active, plain protection form and device type 200 from a live F461 capture #116. PR fix(heating): correct season status, holiday programs, and CU diagnostics (#87, #88, #89, #94) #97 aligned WHO 4 bare WHAT 0 / 1 frames (*4*0*Z##,*4*1*Z##) with the Legrand WHO 4 specification ("zone operation mode acquire frame", p. 5, 13, 16, 19, 63): these frames report the current zone/plant season (season == "heating"or"conditioning",message_type == "hvac_season",mode is None), rather than an operating mode change (mode == "heat"/"cool"). Becausetest_f461_live_plant.pystill asserted the obsolete pre-fix(heating): correct season status, holiday programs, and CU diagnostics (#87, #88, #89, #94) #97.modeattribute, it failed withAssertionError: assert (None == 'heat').Additionally,
OWNd/message/door_entry.py(added in PR #109) was missing an entry inCOMPONENT_NOTESinscripts/sync_documentation.pyand theREADME.mdcoverage table, which caused the documentation anti-drift sentinel tests (test_sync_documentation_live_readmeandtest_main_cli_modes) to fail whenevercoverage.xmlwas present in the repository root.How is it solved
Updated
tests/test_f461_live_plant.py::test_season_frames_and_area_zero_lights_parse_as_beforeto assert.seasoninstead of.mode:Added
"OWNd/message/door_entry.py": "WHO 6 & WHO 8: Door entry, lock, and video intercom events and commands"toCOMPONENT_NOTESinscripts/sync_documentation.pyand regenerated the coverage table inREADME.md.How is it tested
tests/test_f461_live_plant.pytests/test_who4_season.pytests/test_firmware_contract.pytests/test_sync_documentation.pyruff check OWNd tests setup.py scripts(all clean)mypy OWNd tests/typing(success, 27 source files checked)python scripts/verify_library_standards.py(all library standards passed)python scripts/sync_documentation.py --check(0 drift, fully synchronized)Where are the traces
F461 Live Plant Trace:
tests/test_f461_live_plant.py:GATEWAY_FRAMES(lines 30–66): The full capture of distinct frames sent by the physical BTicino F461 gateway (firmware 2.0.11), captured 2026-10-15.*4*1*2##(heating season) and*4*0*2##(conditioning season) in the live 5-frame status response to*#4*2##.EVENTS_AFTER(lines 84–95): Shows event sessions reacting to commands (*4*1*2##and*4*0*2##).WHO 4 Firmware Contracts & Oracles:
tests/oracle/who4_facts.json: 1,745 decoded facts extracted from gateway firmware execution (F453AV, F454, MyHomeServer1) verifying WHO 4 season acquisition and status frames.tests/test_who4_season.py: Protocol specifications validating WHAT 0 / 1 zone operation mode against Legrand WHO 4 v2.0.0 documentation andlibqtdevices(probe_device.cpp:240-253).