Skip to content

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
v2-phase1-architecturefrom
fix/who13-dim27-tier4-ownd-master
Closed

GreenGrassBlueOcean wants to merge 1 commit into
v2-phase1-architecturefrom
fix/who13-dim27-tier4-ownd-master

Conversation

@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor

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 OWNd master as 42384a1f on 2026-11-01, that job fails on every OWNd run with 1 failed, 5141 passed:

OWNd run Ref
41307713753 push to master (42384a1f)
41309009663, 41334654023 chore/release-2.0.0b12
41333627598 OpenWebNet-HA/OWNd#153

The 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 in pending_decoder_rx and asserted OWNMessage.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.13

OWNd master now decodes both into OWNGatewayEvent.model_name, while manifest.json still pins the released OWNd==2.0.0b11, which does not. Both versions report 2.0.0b11, so the test has to hold on either runtime. Only the test is affected; no integration code changes.


What is the solution

  1. tests/test_trace_oracle_validation.py:
    • PENDING_MODEL_NAME_DECODER_RX maps each pending frame to the model name it carries.
    • _manifest_pins_pre_model_name_ownd() is True while manifest.json's requirements contain OWNd==2.0.0b11 (a missing file, invalid JSON, a non-dict document or a non-list requirements give False).
    • _validate_pending_model_name_rx(): while the pin is b11, an OWNd whose OWNGatewayEvent has model_name must decode the frame to OWNGatewayEvent with the expected model_name, and one without it must return None. Once the pin moves past b11 it fails either way, naming the entry to remove from pending_decoder_rx.
    • Tier 4 also asserts that every pending frame still occurs in a capture.
  2. Split out of feat(media_player,number,button): add F500 FM tuner frequency controls, WHO 22 command/state parity & H/L4684 traces (#466) #839: this is commit 63c854c4 from 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]
Loading

Hardware Verification

  • N/A: test-only change. The two frames come from the existing live captures listed below.

How is it tested


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##
  • No new fixtures.

What does the Firmware Oracle / Encyclopedia say

  1. OpenWebNet Encyclopedia (WHO = 13):
    • The Machine KB (ownkb-build-0.9.0) has no DIMENSION 27 record; a search returns the DIMENSION 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.
  2. Firmware Oracle (*#13**27##, suite who13-identification, index hash verified):
    • F450, F454, F459, F460, F461 020011, MH202 answer ACK with *#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; H4684 NACK.
    • The emulated replies differ from the live captures ("F461", "MyHomeServer1"). This test pins only the two captured frames, so the difference does not affect it.

Checklist

  • PR Description: Follows the structured sections above (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).
  • Trace-Backed (if protocol/device change): Behavior is verified against real OpenWebNet bus traces or gateway firmware fixtures rather than guessed.
  • V2 Architecture: New or modified entities implement handle_event() and do not manually subscribe via async_dispatcher_connect. (No entity changes.)
  • Tests & Linters: pytest, ruff, and scripts/verify_ha_standards.py pass.

🤖 Generated with Claude Code

…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-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@GreenGrassBlueOcean

Copy link
Copy Markdown
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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants