Repository navigation
fix(tests): align WHO 13 dim 27 Tier 4 check across OWNd==2.0.0b11 transition - #840
Closed
GreenGrassBlueOcean wants to merge 1 commit into
Closed
GreenGrassBlueOcean wants to merge 1 commit into
GreenGrassBlueOcean wants to merge 1 commit into
Conversation
…ansition OWNd#139 (WHO 13 dimension 27 model-name decoder) merged into OWNd@master after OWNd==2.0.0b11 shipped. Tier 4 asserted that the two captured model-name replies parse to None, so OWNd's "MyHOME conformance" job (MyHOME v2-phase1-architecture against OWNd@master) has failed on every OWNd run since 42384a1f. While manifest.json pins OWNd==2.0.0b11, accept both runtimes: None on a pre-#139 OWNd, OWNGatewayEvent with the expected model_name on #139+. Once the pin moves past b11 the check fails so the pending list is removed. Split out of #839 so OWNd CI does not wait on the F500 tuner PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Contributor
Author
|
Superseded by #839, merged into \�2-phase1-architecture\ as 104ed58, which carries the same commit (63c854c) together with the HA dev \UNDEFINED\ fix (ecf5ba5) that this PR lacked. The OpenWebNet-HA/OWNd#153 MyHOME conformance job has since been re-run and passes (5157 passed). |
Merged
4 tasks done
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
OWNd's MyHOME conformance workflow runs this branch's (
v2-phase1-architecture) full test suite against the OWNd checkout under test. Since OpenWebNet-HA/OWNd#139 (WHO 13 dimension 27 model-name decoder) merged into OWNdmasteras42384a1fon 2026-11-01, that job fails on every OWNd run with1 failed, 5141 passed:master(42384a1f)chore/release-2.0.0b12The failing test is
tests/test_trace_oracle_validation.py::test_tier4_all_trace_rx_frames_parse_cleanly_in_ownd. It kept two captured WHO 13 dimension 27 replies inpending_decoder_rxand assertedOWNMessage.parse(frame) is None:*#13**27*70#52#54#49##("F461" as ASCII codes), live F461 2.0.11*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##("MyHomeServer1"), live MyHomeServer1 3.87.13OWNd
masternow decodes both intoOWNGatewayEvent.model_name, whilemanifest.jsonstill pins the releasedOWNd==2.0.0b11, which does not. Both versions report2.0.0b11, so the test has to hold on either runtime. Only the test is affected; no integration code changes.What is the solution
tests/test_trace_oracle_validation.py:PENDING_MODEL_NAME_DECODER_RXmaps each pending frame to the model name it carries._manifest_pins_pre_model_name_ownd()isTruewhilemanifest.json'srequirementscontainOWNd==2.0.0b11(a missing file, invalid JSON, a non-dict document or a non-listrequirementsgiveFalse)._validate_pending_model_name_rx(): while the pin is b11, an OWNd whoseOWNGatewayEventhasmodel_namemust decode the frame toOWNGatewayEventwith the expectedmodel_name, and one without it must returnNone. Once the pin moves past b11 it fails either way, naming the entry to remove frompending_decoder_rx.63c854c4from feat(media_player,number,button): add F500 FM tuner frequency controls, WHO 22 command/state parity & H/L4684 traces (#466) #839 with an identical diff, so OWNd CI does not wait on the F500 tuner PR. feat(media_player,number,button): add F500 FM tuner frequency controls, WHO 22 command/state parity & H/L4684 traces (#466) #839 merges cleanly on top of it.State Diagram
flowchart TD F[pending WHO 13 DIM 27 rx frame] --> P{manifest.json pins OWNd==2.0.0b11?} P -- no --> X[fail: remove the frame from pending_decoder_rx] P -- yes --> M{OWNGatewayEvent has model_name?} M -- "yes (OWNd#139+, OWNd@master)" --> D[expect OWNGatewayEvent with model_name F461 / MyHomeServer1] M -- "no (released 2.0.0b11)" --> N[expect parse to return None]Hardware Verification
How is it tested
tests/test_trace_oracle_validation.py::test_tier4_all_trace_rx_frames_parse_cleanly_in_ownd(updated) and::test_tier4_pending_model_name_decoder_transition_regimes(new; covers both runtimes under a b11 pin, the post-bump failures and the fail-closed manifest reads).tests/test_trace_oracle_validation.py, 72 passed against each of:OWNd==2.0.0b11(themanifest.jsonpin;OWNGatewayEventhas nomodel_name)master42384a1f(with feat(gateway): WHO 13 dimension 27 model-name decoder OWNd#139)6590538bmaster42384a1finstalled, the configuration OWNd's conformance job runs (Python 3.14, core 2026.10.1, WSL): 5143 passed, against the job's1 failed, 5141 passed(+1 fixed, +1 new test).ruff check custom_components tests scripts: all checks passed.scripts/verify_ha_standards.py: passed.scripts/sync_documentation.py --check: in sync.ruff format --checkwould reformat this file, as it already does onv2-phase1-architecture; CI does not run it, and the diff is kept identical to feat(media_player,number,button): add F500 FM tuner frequency controls, WHO 22 command/state parity & H/L4684 traces (#466) #839's commit.Where are the traces
tests/fixtures/traces/f461_live_2026-10-23/myhome_trace_F461_live_2026-10-23.json: F461 2.0.11,*#13**27*70#52#54#49##tests/fixtures/traces/myhomeserver1_live_2026-10-24/myhome_trace_MyHomeServer1_live_2026-10-24.json: MyHomeServer1 3.87.13,*#13**27*77#121#…#49##What does the Firmware Oracle / Encyclopedia say
WHO = 13):ownkb-build-0.9.0) has noDIMENSION 27record; a search returns theDIMENSION 15(device type) and WHO 1013 identification claims only. Nothing in this PR depends on the meaning of dimension 27 beyond what OWNd#139 decodes.*#13**27##, suitewho13-identification, index hash verified):ACKwith*#13**27*72#79#83#84##("HOST"); F453 and F453AV answer*#13**27*66#84#87#69#66##("BTWEB"); MH200, MH200N and MyHomeServer1 028206 emit*#13**27*#*#*1##with no client reply; H4684NACK.Checklist
What is the problem,What is the solution,State Diagram,How is it tested,Where are the traces,What does the Firmware Oracle / Encyclopedia say).handle_event()and do not manually subscribe viaasync_dispatcher_connect. (No entity changes.)pytest,ruff, andscripts/verify_ha_standards.pypass.🤖 Generated with Claude Code