Repository navigation
chore(deps): pin OWNd==2.0.0b13 and close the OWNd#139 / #142 / #147 transition windows - #848
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
Added cc493cb (normal push): |
cc493cb to
279bfca
Compare
…A#142 transition windows manifest.json requires OWNd==2.0.0b13 (OpenWebNet-HA/OWNd#154, the release of OWNd master fb0acd7: OpenWebNet-HA#139 WHO 13 dimension 27 model name, OpenWebNet-HA#142 no WHO 16 on the F461 / MyHomeServer1 profiles, OpenWebNet-HA#138 "#"-setpoint and clock echoes, OpenWebNet-HA#153 WHO 1004 / WHO 16 steps / WHO 22 seek). The release is not on PyPI yet: the jobs that install the pin cannot pass until it is published. - scripts/update_gateway_profiles.py: F461 and MyHomeServer1 rows pin pinned_whos [1, 2, 4, 18] and sweep_omits [*michnovka#4*0##] (OWNd#142: every WHO 16 frame refused by firmware 020011 / 028206, confirmed live on 2.0.11 and 3.87.13), so the no-OWNd docs jobs generate the same table as the pinned OWNd. - docs/architecture/anti-drift-safeguards.md, docs/getting-started/ hardware-compatibility.md: regenerated with `sync_documentation.py --update` against OWNd master (the Gateway Discovery rows of the F461 / MyHomeServer1 now read "WHO 1, 2, 4, 18" and "Sound is WHO 22 only"). - tests/test_trace_oracle_validation.py: the pending_decoder_rx transition for the two WHO 13 dimension 27 captures (*OpenWebNet-HA#13**27*70#52#54#49## of the F461, the MyHomeServer1 one) is removed; the frames are checked like every other rx frame, plus a test that they decode to OWNGatewayEvent.model_name. - tests/test_gateway_profiles.py, tests/test_sync_documentation.py: the WHO 16 window tests now assert the closed window (a stale pre-OpenWebNet-HA#142 OWNd is flagged against the bumped manifest, tolerated only by an OWNd==2.0.0b11 manifest). - .github/release-notes/2.0.0b17.md: "on OWNd 2.0.0b13". Verified with OWNd master (fb0acd7, what 2.0.0b13 packages) on PYTHONPATH: pytest tests: 5189 passed; ruff clean; mypy custom_components/myhome: 76 files, no issues; scripts/sync_documentation.py --check and scripts/verify_ha_standards.py: pass. Against the installed OWNd 2.0.0b11 the oracle / discovery checks and 7 tests of test_gateway_profiles.py / test_sync_documentation.py fail as designed (stale profile vs the pin), and scripts/run_ownd_smoke.py --target pinned needs the package on PyPI. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… (pin-bump decision, D36 / D38 row) The pin bump closes the `TODO(OWNd>2.0.0b11)` windows: OWNd 2.0.0b13 (OWNd#147) aliases the SSDP spellings `H/L4684`, `HL4684`, `HC4684` to `H4684Profile` and derives the H4684's WHO 22 from firmware 6.0.0 inside the profile, so the `_MODEL_SPELLINGS` fallback in `_profile_for_model` / `_resolved_model` / `_model_key`, the `_firmware_at_least` WHO 22 shim in `_profile_supports_who` and the same shim in `topology.gateway_supported_whos` are dead code with the pinned release and are removed rather than kept. The `"HL4684"` key of `supports_zone_status` stays: it covers the brand-prefixed `BTicino H/L4684`, which no OWNd alias resolves and whose alphanumeric form does not contain `H4684`. `tests/test_issue_466_hl4684_trace.py` no longer simulates a pre-OpenWebNet-HA#147 OWNd lookup; it asserts the pinned OWNd resolves the three spellings and the WHO 22 firmware gate itself. No runtime behaviour changes with the pinned OWNd (453 tests of the touched modules and the full suite with OWNd master on PYTHONPATH pass). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The profile lookup sits in a try/except Exception that turned a missing OWNd or gateway symbol into an empty WHO set for every gateway, which showed up as eighteen unrelated topology, multi-gateway and config-flow failures in a local merge (lab audit 2026-11-03). A profile lookup error still degrades to "no WHOs" (logged at debug); an ImportError propagates. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
279bfca to
b1325c1
Compare
0b805bd
into
OpenWebNet-HA:v2-phase1-architecture
Requested by A
What is the problem
manifest.jsonpinsOWNd==2.0.0b11. OWNd 2.0.0b13 (OpenWebNet-HA/OWNd#154, after #152) carries the changes MyHOME has been waiting for behind transition windows: the F461 / MyHomeServer1 profiles without WHO 16 (OWNd#142), the WHO 13 dimension 27 model-name decoder (OWNd#139), the#-prefixed dimension 14 setpoint (OWNd#138), the H4684 aliases and the firmware-derived WHO 22 (OWNd#147), the narrowed dimension 22 guard (OWNd#151) and the MyHOME#839 companion (OWNd#153). Offered on OWNd#139 / #153; the maintainer asked to finish the pin bump together with the release.CI cannot be green until OWNd 2.0.0b13 is on PyPI (OpenWebNet-HA/OWNd#154 is open; 2.0.0b12 was never published): every job that installs the manifest pin (the conftest fallback install, the HA container smoke, hassfest, the OWNd smoke
--target pinnedgate) fails on the missing package. The OWNd-from-git coverage job is the one to watch meanwhile; locally the whole suite is green with OWNdmasteronPYTHONPATH(that is what 2.0.0b13 will be). Draft until the package exists.What is the solution
custom_components/myhome/manifest.json:OWNd==2.0.0b13.scripts/update_gateway_profiles.py): F461 and MyHomeServer1pinned_whos[1, 2, 4, 18],sweep_omits[*#4*0##]; the transition helpers of chore(profiles): derive the discovery rows from the OWNd profile (prep for OWNd #142) #808 / chore(scripts): align discovery doc check across OWNd==2.0.0b11 WHO 16 transition #831 (PRE_WHO16_OWND_PIN,manifest_pins_pre_who16) go;docs/getting-started/hardware-compatibility.mdanddocs/architecture/anti-drift-safeguards.mdregenerated withscripts/sync_documentation.py --update.verify_profiles_against_oraclekeeps zero WHO 16 tolerance and the Generic-row rejection (tests renamed to the post-bump contract).tests/test_trace_oracle_validation.py:pending_decoder_rx(the two WHO 13 dimension 27 frames*#13**27*70#52#54#49##and the MyHomeServer1 one) andPRE_MODEL_NAME_OWND_PINremoved; replaced by a test that the pinned OWNd decodes them (model_nameF461/MyHomeServer1).gateway.py_MODEL_SPELLINGS/_profile_for_modelfallback and the_firmware_at_leastWHO 22 shim in_profile_supports_who,topology.pyWHO 22 shim; theTODO(OWNd>2.0.0b11)markers): the pinned OWNd aliasesHL4684/H/L4684/HC4684toH4684Profileand derives WHO 22 from firmware >= 6.0.0 inside the profile, so those branches were unreachable; the brand-prefixed"BTicino H/L4684"spelling (no OWNd profile) keeps its one substring key insupports_zone_statuswith a corrected comment;tests/test_issue_466_hl4684_trace.pynow asserts the pinned OWNd's own aliasing. No runtime behaviour changes with the pinned OWNd..github/release-notes/2.0.0b17.md: "on OWNd 2.0.0b13".Not changed on purpose:
pyproject.toml[test]floorOWNd>=2.0.0b11(CI force-installs OWNd from git after it), historical "on OWNd 2.0.0b11" lines in the roadmap and the trace fixtures'ownd_versionfields.State Diagram
N/A — dependency pin, generated docs, transition-window test cleanup, dead-shim removal.
Hardware Verification
N/A (no protocol change). The underlying evidence is on the OWNd PRs listed above.
How is it tested
master(fb0acd7, the 2.0.0b13 tree) onPYTHONPATH: 5188 passed (5 snapshots passed).tests/test_gateway_profiles.py,tests/test_sync_documentation.py,tests/test_trace_oracle_validation.py: 119 passed; shim-affected modules after the removal: 453 passed.ruff check .,mypy custom_components/myhome(76 files),scripts/verify_ha_standards.py,scripts/sync_documentation.py --check: all pass.PYTHONPATH) the same branch fails by design: the docs oracle / discovery checks (RULE_DOCS_ANTI_DRIFT),test_gateway_profiles/test_sync_documentation(7 tests) and the OWNd smoke Gate 1 metadata check.Where are the traces
N/A. The dimension 27 frames in the replaced test are the live F461 2.0.11 / MyHomeServer1 3.87.13 captures of #799.
What does the Firmware Oracle / Encyclopedia say
020011and MyHomeServer1028206WHO 16 refusals behind OWNd#142 (findings/of own-firmware-oracle) are what the regenerated discovery rows encode.Checklist
pytest,ruff,mypyandscripts/verify_ha_standards.pypass with OWNdmasteronPYTHONPATH; CI waits for the PyPI package.🤖 Generated with Claude Code