Skip to content

fix(foxess_h3_smart): watch the raw register-map files, not the repo root page - #130

Merged
frahlg merged 1 commit into
mainfrom
claude/hopeful-fermi-g108ra
Sep 22, 2026
Merged

frahlg merged 1 commit into
mainfrom
claude/hopeful-fermi-g108ra

Conversation

@frahlg

@frahlg frahlg commented Sep 22, 2026

Copy link
Copy Markdown
Member

Closes #129.

Summary

manifests/foxess_h3_smart.yaml tracked upstream_docs as the nathanmarlor/foxess_modbus repo's root/landing page. The weekly watcher hashes that page's raw bytes, which include star/fork counts and relative "x months/days ago" commit timestamps that churn on a roughly weekly cadence with no actual register change underneath — six false-positive upstream-doc-changed issues in a row (#87, #101, #104, #109, #119, #125), every one closed as not-planned after a manual register-by-register audit found nothing.

This points the entry at the two files that are the actual register-map source of truth instead, mirroring how nibe_local/myuplink already track a direct file URL rather than a landing page:

  • entity_descriptions.py — telemetry registers
  • remote_control_description.py — control/write registers

#129 flagged one open question before implementing: whether upstream_docs is a manifest field the signed channel publishes, since some manifest field changes require a version bump per CONTRIBUTING.md. spec/manifest-v2.md's own text answers it: "The field is descriptive metadata only: it is not copied into index.yaml and never affects how a driver is installed or run." It's also not in CONTRIBUTING.md's list of fields that reach the signed artifact (ders, protocol, tested_devices manufacturer/model_family). make sync-manifests confirms no manifest hash changed. So no driver version bump applies here — the Lua source and its published bytes are untouched.

upstream-docs-state.json is regenerated for only the two new URLs (fetched live, hashed, first-seen baseline recorded); every other driver's watched-document entries are byte-for-byte untouched, so this doesn't preempt or interfere with the scheduled watch-upstream-docs workflow's own detection of unrelated document changes.

Driver evidence

  • Driver id: foxess_h3_smart
  • Device make/model: not applicable — manifest metadata only, no Lua change
  • Firmware tested: not applicable
  • Protocol/register source: unchanged (still Modbus register map decoded from the same upstream project, now watched at the file level instead of the repo root)
  • Hardware test performed: not applicable — no driver behavior changed
  • Known limits: none introduced

Safety

  • The driver starts read-only, or this is a separately reviewed control change. (no behavior change at all)
  • Vendor signs are converted at the driver boundary. (unchanged)
  • Cached telemetry becomes stale instead of being re-emitted as fresh. (unchanged)
  • No credentials, serial numbers, private addresses or site data are included.

Package or promotion evidence

Not applicable — manifest metadata change only, no package version, target, or control contract changes. foxess_h3_smart stays at 0.9.5.

Checks

  • Commits include Signed-off-by.
  • uv run --frozen --extra package --extra dev python tools/validate_manifest.py manifests/foxess_h3_smart.yaml — OK
  • uv run --frozen --extra package --extra dev pytest -q tests/test_upstream_docs.py tests/test_upstream_docs_watch.py — 25 passed
  • make check — everything green (boundary, sandbox, manifests/index/devices/support-status sync, FTW baseline, host API, full pytest drivers/tests tests: 4404 passed, 1069 skipped) except tools/generate_history.py --check / test_history_never_rewrites_a_published_version, which fails identically on a clean checkout of main (f3771d7) with no changes at all — confirmed by checking out that commit standalone. Pre-existing, environment-wide, unrelated to this diff; not something this PR can or should fix.

🤖 Generated with Claude Code

https://claude.ai/code/session_011UEbhFwLUCC8JHbxPJhAyL


Generated by Claude Code

…root page

manifests/foxess_h3_smart.yaml tracked upstream_docs as the
nathanmarlor/foxess_modbus repo's root/landing page. The weekly watcher
hashes that page's raw bytes, which include star/fork counts and relative
commit timestamps that churn on a roughly weekly cadence with no actual
register change underneath — six false-positive upstream-doc-changed
issues in a row (#87, #101, #104, #109, #119, #125), each closed as
not-planned after a manual register-by-register audit found nothing.

Point the entry at the two files that are the actual register-map source
of truth instead: entity_descriptions.py (telemetry registers) and
remote_control_description.py (control/write registers), mirroring how
nibe_local/myuplink already track a direct file URL rather than a
landing page.

upstream_docs is descriptive metadata only per spec/manifest-v2.md ("not
copied into index.yaml and never affects how a driver is installed or
run") and is not in CONTRIBUTING.md's list of signed-artifact fields
(ders, protocol, tested_devices manufacturer/model_family), so no driver
version bump applies. make sync-manifests confirms no manifest hash
changed. Regenerated upstream-docs-state.json for the two new URLs only,
leaving every other driver's watched-document baseline untouched.

Closes #129.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011UEbhFwLUCC8JHbxPJhAyL
Signed-off-by: Claude <noreply@anthropic.com>
@frahlg
frahlg marked this pull request as ready for review September 22, 2026 07:11
@frahlg
frahlg merged commit 647af8c into main Sep 22, 2026
6 checks passed
@frahlg
frahlg deleted the claude/hopeful-fermi-g108ra branch September 22, 2026 07:11
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-22T07:12:12.952990Z 51ac5c5 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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.

foxess_h3_smart: point upstream_docs at raw source files instead of the repo root page

2 participants