Skip to content

docs(who-4): document #4#INTERFACE routing and actuator status boundaries - #52

Open
GreenGrassBlueOcean wants to merge 1 commit into
mainfrom
docs/who4-interface-routing-and-mh202-crash
Open

GreenGrassBlueOcean wants to merge 1 commit into
mainfrom
docs/who4-interface-routing-and-mh202-crash

Conversation

@GreenGrassBlueOcean

@GreenGrassBlueOcean GreenGrassBlueOcean commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Document gateway firmware routing boundaries and per-actuator status crash behavior for WHO 4 (Temperature Control), keeping published OpenWebNet syntax, recorded socket replies, and recorded SCS bus output separate:

  • Temperature Control addressing (functional/who-4-temperature-control/addressing.md, ownkb:section:d000068:s000007): Document how the twelve emulated gateway firmware images in the own-firmware-oracle v3 thermo-zone-requests suite handle WHERE addresses carrying #4#INTERFACE (F422 local-bus routing) and per-actuator status (Z#N):
    • Zero of the twelve emulated images emit interface-routed SCS telegrams ($06EC... / $06E4...) for any tested WHO 4 #4#II status or dimension request (*#4*2#4#01##, *#4*2#4#12##, *0##, *11##, *19##, *20##, *60##, 2#4#12*20##, 2#1#4#01*20##, TSV lines 22 and 25..32).
    • H4684 (2.0.54) and MH200 (2.1.2) parse the leading integer before # and emit unrouted local-zone-2 queries ($0499023000\r, $0499023012\r, $049902300E\r, $049902300D\r on status; $0499023000\r on *0##; $0499023013\r on *19##).
    • F450 (2.0.10), F454 (2.0.51), F459 (2.1.5), F460 (2.0.12), F461 (2.0.11), and MyHomeServer1 (2.82.6) truncate WHERE at # on *20## ($04A9023010\r / $004A9023010\r, including 2#4#12*20## and 2#1#4#01*20##; F450 and F454 return socket NACK while emitting out, whereas F459, F460, F461, and MyHomeServer1 return socket ACK) and *60## ($06D102030308000000\r / $006D102...), polling local main-bus zone 2 rather than routing across interface 01 or 12.
    • MH202 (1.0.24) misparses the trailing #-delimited tokens of 2#4#01 and 2#1#4#01 as local zone 4, actuator 1 ($0499843110\r on *20##), rejects tested 2#4#12 and 2#4#12*20## (nack, silent), and terminates coso with SIGSEGV (verdict=crash) on dimensionless actuator status *#4*2#1## (line 21) and misparsed *#4*2#4#01## (line 25) in libplug_thermo_tr.so (thermo_open2scs+0x394), whereas per-actuator valve queries use Dimension 20 (*#4*Z#N*20## or *#4*#0*20##).
  • Protocol addressing (protocol/addressing.md, ownkb:section:d000104:s000016): Add a subsystem-specific boundary note under Local Bus Suffixes clarifying that #4#INTERFACE transport is per-WHO in gateway translation plugins rather than uniform across every subsystem.
  • Review note (project/review/who4-gateway-routing-and-actuator-requests.md): Record the bounded evidence table (reset=each on F450 020010 and reset=0 on the other eleven targets; local baseline lines 16..20, 23..24, and 33..38), exact SHA-256 fingerprints, and explicit scope limits.
  • Machine KB (knowledge/): Register 12 fingerprint-pinned thermo-zone-requests.tsv source records (ownkb:source:s001190..s001201) and 14 claims (ownkb:claim:c074157..c074170, review who4-v3-thermo-zone-requests), update knowledge/tests/test_phase12_consistency.py (703 -> 704 protocol claims) and knowledge/tests/test_who4_gateway_routing.py, and preserve all existing identifiers and all 66,466 Device claim records unchanged.

Evidence, provenance, and limits

The oracle results are pinned to OpenWebNet-HA/own-firmware-oracle commit de87a34e251b677a299917c98fcfcea3b409bf34 (own-firmware-oracle#65) across the twelve emulated firmware images (F450 020010, F453 010100, F453AV 030014, F454 020051, F459 020105, F460 020012, F461 020011, H4684 020054, MH200 020102, MH200N 010108, MH202 010024, MyHomeServer1 028206). Each claim carries dynamic_firmware_oracle provenance (epistemic_status: firmware_observed) and explicitly bounds applicability: emulated firmware without a physical F422 interface or secondary thermoregulation riser does not establish unemulated models (F455, MH201, H4890), different firmware revisions, or spontaneous upward F422 event forwarding.

Companion PRs: OpenWebNet-HA/own-firmware-oracle#65, OpenWebNet-HA/openwebnet-mcp#22, OpenWebNet-HA/MyHOME#816.

Git storage policy

In accordance with project/review/checks/README.md and git-storage-baseline.json, the seven Machine KB artifacts exceeding 5 MiB whose bytes changed in this rebuild (knowledge/id-registry.json, knowledge/inputs/claim-context.json, knowledge/inputs/id-registry.json, knowledge/inputs/reference-records.json, knowledge/llm/llm-corpus.md, knowledge/reference/entities.jsonl, and knowledge/retrieval/chunks.jsonl) are tracked via Git LFS in .gitattributes alongside claims.jsonl and claim-records.json. project/review/checks/git-storage-baseline.json, devices/, and sources/manifest.yaml are untouched.

Validation

  • python build.py & git status --porcelain: clean deterministic build.
  • python check.py (two clean rebuilds, byte-for-byte determinism, manifest, schemas, cross-artifact consistency, references, provenance propagation, text hygiene, privacy, and Device definition completeness): PASSED.
  • python knowledge/tools/validate_privacy.py: PASSED (21 generated artifacts and metadata surfaces scanned).
  • python project/review/checks/check_git_storage.py --head HEAD --base origin/main & test_git_storage.py (11 tests): PASSED.
  • python project/review/checks/check_esg.py . & check_ecv.py .: PASSED (objective_failures=0).
  • python project/review/checks/check_artifact_manifest.py: PASSED (807 artifacts).
  • python -m unittest discover -s knowledge/tests -v (234 tests, including test_phase12_consistency.py and test_who4_gateway_routing.py) & test_schema.py (8 tests): PASSED.
  • python evidence/validate_evidence.py (5/5) & pytest evidence/tests (55 passed): PASSED.

@GreenGrassBlueOcean
GreenGrassBlueOcean force-pushed the docs/who4-interface-routing-and-mh202-crash branch from 01fdde7 to e116df3 Compare October 26, 2026 12:03
@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor Author

Hi @anotherjulien — ready for your review when you have a moment!

Scope & Coordination Notes

  1. Oracle provenance pin (de87a34e251b677a299917c98fcfcea3b409bf34): All 12 thermo-zone-requests.tsv source records (ownkb:source:s001190..s001201) and ownkb:claim:c074157..c074170 are pinned to own-firmware-oracle#65 commit de87a34e251b677a299917c98fcfcea3b409bf34 (which is green across all 12 QEMU suites). If #65 is merged via a merge commit (rather than squash), de87a34e251b677a299917c98fcfcea3b409bf34 will remain directly reachable on own-firmware-oracle/main without needing a re-pin here.
  2. CI status on e116df3c8d8abe8e93e667808c858dc9722af6c0:
    • Git storage policy, Mechanical ESG and ECV compliance, and Advisory epistemic review are green (validate-privacy is currently running the 234-test knowledge/tests suite).
    • Source integrity and reproducibility and machine-kb timed out at catalogue_ci_status.py verify waiting for the exact-commit Device catalogue validation status from your account (devices/, sources/manifest.yaml, and all 66,466 Device claims are untouched, and build.py, check.py against MHCatalogue.db, all 234 knowledge/tests, test_schema.py, and test_ci_catalogue.py passed locally).
    • Whenever the content looks good to you, publishing the gate status on e116df3c8d8abe8e93e667808c858dc9722af6c0 and re-running those two jobs should turn everything green:
      python devices/tools/catalogue_ci_status.py validate-local --commit e116df3c8d8abe8e93e667808c858dc9722af6c0 --publish

Companion PRs (openwebnet-mcp#22 and MyHOME#816) are also green and ready for review alongside own-firmware-oracle#65.

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.

1 participant