Repository navigation
fix(oracle): verify OWNd's own gateway profiles and check F461 live traces against the oracle (#735) - #745
Merged
GreenGrassBlueOcean merged 2 commits intoOct 21, 2026
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
GreenGrassBlueOcean
force-pushed
the
arch/issue-732-modularize-monoliths
branch
from
October 17, 2026 10:16
e99c6b4 to
eb84a8e
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-735-v2-release-consolidation
branch
2 times, most recently
from
October 17, 2026 10:28
758fd05 to
5dab9f0
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-732-modularize-monoliths
branch
from
October 17, 2026 10:40
08267ae to
bbdcf40
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-735-v2-release-consolidation
branch
from
October 17, 2026 10:40
5dab9f0 to
4160a82
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-732-modularize-monoliths
branch
2 times, most recently
from
October 19, 2026 10:04
aba7687 to
3ef903f
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-735-v2-release-consolidation
branch
from
October 19, 2026 10:26
4160a82 to
318f4e0
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-732-modularize-monoliths
branch
from
October 19, 2026 12:37
3ef903f to
3acf978
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-735-v2-release-consolidation
branch
from
October 19, 2026 12:37
318f4e0 to
ac9d8a0
Compare
GreenGrassBlueOcean
force-pushed
the
arch/issue-732-modularize-monoliths
branch
from
October 20, 2026 20:05
3acf978 to
b6966a6
Compare
Base automatically changed from
arch/issue-732-modularize-monoliths
to
v2-phase1-architecture
October 20, 2026 20:16
….0.0 documentation (#735) - Rebase onto #744 (3ef903f) and latest v2-phase1-architecture (fcdb507) - Deduplicate _ensure_oracle_verified_profiles in scripts/update_gateway_profiles.py - Add test_f461_live_traces_2026_10_18_conformance_with_oracle verifying physical BTicino F461 (2.0.11) live traces against OWNd parser and F461 oracle verdicts
GreenGrassBlueOcean
force-pushed
the
arch/issue-735-v2-release-consolidation
branch
from
October 21, 2026 16:39
ac9d8a0 to
0b02a95
Compare
…e oracle (#735) - Remove the import-time OWNd profile shim from scripts/update_gateway_profiles.py and custom_components/myhome/where_grammar.py. Every value it wrote already matches OWNd 2.0.0b11 (the minimum) and OWNd master, so its only effect was making verify_profiles_against_oracle() compare the oracle with itself. - verify_profiles_against_oracle() now reports any OWNd profile changed after import, so a future shim fails the check instead of passing it. - Replace the F461 2026-10-18 test: per trace, every recorded event must decode to the OWNd class the capture logged, and every answered command must match the F461 020011 oracle (ACK when the oracle saw it reach the bus, NACK when it was dropped). The oracle reply field is not compared; for three frames it says NACK where the hardware ACKed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 21, 2026
GreenGrassBlueOcean
deleted the
arch/issue-735-v2-release-consolidation
branch
October 21, 2026 19:35
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.
Part of #735
What is the problem
scripts/update_gateway_profiles.pyandcustom_components/myhome/where_grammar.pyeach carried a shim that ran at import and rewrote OWNd'sauth_measured,audio_measuredandsupported_whofor F453, F453AV, F454, F461, MyHomeServer1, MH200 and MH200N with hard-coded values taken from the firmware oracle.verify_profiles_against_oracle()then compared those rewritten values with the same oracle, so a regression in OWNd for any of those seven models would passtest_gateway_profiles_match_oracle_verdictsandsync_documentation.py --check. The script also held a third, older copy of the shim.OWNMessage.parse()does for any well-formed frame, including an unknown WHO.How is it solved
pyproject.tomland themanifest.jsonpin) and in OWNd master, checked profile by profile. The verification now reads OWNd's real profile data.verify_profiles_against_oracle()reports any OWNd profile whose class__init__was replaced, or whose registered instance no longer equals a fresh one. Two tests intests/test_gateway_profiles.pypatch an instance and a class and expect the violation.test_f461_live_trace_agrees_with_oracle, one case per trace):ownd_classmust still decode to that class (73 + 58 events);F461 020011oracle also replayed must agree with it: live ACK when the oracle verdict isout, NACK when it issilent(6 frames per trace).How is it tested
ruff,mypy,scripts/verify_ha_standards.pyandscripts/sync_documentation.py --checkpass.Where are the traces
tests/fixtures/traces/f461_live_2026-10-18/myhome_trace_F461_live_2026-10-18.json(physical F461, firmware 2.0.11)tests/fixtures/traces/f461_who14_live_2026-10-18/myhome_trace_F461_who14_live_2026-10-18.json(physical F461, firmware 2.0.11)Both were already on
v2-phase1-architecture; this PR adds no fixtures.What does the oracle say
F461 020011reply / verdict*#13**15##,*#13**16##,*#13**23##,*#13**24##*#1*0##,*#18*51*113##*1*1*0##,*#2*0##,*#18*51*#1200#1*0##*#18*51*1200##The live ACK/NACK follows the oracle's
verdictin every case. Itsreplyfield disagrees with the hardware on three frames, so the test does not compare it. That field is also whattest_golden_corpus_against_firmware_oracleandKNOWN_GATEWAY_DISCREPANCIESrely on, which is worth a separate look.Not in this PR
The earlier description also listed an oracle resync, README/docs calibration and the repair-issue catalog. None of that is in this diff (the base branch already passes the oracle integrity test and
sync_documentation.py --check), so this PR no longer closes #735.🤖 Generated with Claude Code