3.4 KiB
Compatibility baseline
This maintenance line begins from fork commit 84cc0037b1c0 (release v3.0.2).
It intentionally tracks Home Assistant's MQTT discovery test harness without merging
upstream development wholesale.
| Reference | Audited revision / target |
|---|---|
| Fork baseline | 84cc0037b1c0 (v3.0.2) |
| Upstream main | 1d333ab229b2 (v2.1.0) |
| Upstream develop | a7039fad810b (unreleased WIP 2.2.0) |
| Device discovery minimum | Home Assistant 2024.11.0 |
| Test harness matrix | 2024.11.3, current stable, current dev |
The only imported upstream code fix is the four missing-device-ID guards from
upstream commit 9c9d074. Device discovery migration, JSON validation,
lifecycle handling, and tests are fork-native changes.
Arduino framework validation lanes
ArduinoHA compiles its embedded test suites and guided PlatformIO examples in two maintained lanes:
| Selector | Target | Pinned stack | Role |
|---|---|---|---|
esp8266 |
ESP8266 D1 mini | Arduino-ESP8266 commit 521ae60 |
Maintained Postmortem linker-fix test-harness lane |
esp32 |
ESP32 Dev Module | pioarduino 55.03.311 / Arduino-ESP32 3.3.11 / ESP-IDF 5.5.5 |
Maintained baseline |
Every lane pins its complete framework stack. The ESP32 runner keeps its maintained pioarduino graph in the persistent cache shared by these maintained framework repositories, so stale global metadata cannot select an uploader or compiler by accident without redownloading matching inputs for every repository. The ESP8266 framework pin is independent of the ESP32 baseline; see the linker workaround.
Run the current ESP32 lane locally with:
./scripts/test.sh compile --platform esp32
./scripts/test.sh examples --platform esp32
The script keeps that lane in the persistent PlatformIO Core/cache shared by
the maintained framework repositories by default
(${XDG_CACHE_HOME:-$HOME/.cache}/arduino-framework-platformio/core-3.3.11).
This prevents stale global tool-esptoolpy metadata from shadowing the current
pioarduino package-form uploader while avoiding duplicate Core 3.3.11
downloads. Set ARDUINOHA_PLATFORMIO_CORE_DIR,
ARDUINOHA_PLATFORMIO_PACKAGES_DIR, and
ARDUINOHA_PLATFORMIO_CACHE_DIR for a dedicated disk. The script never clears
that cache or repairs it by overriding one compiler package.
The embedded multi-suite compile path also defaults
PLATFORMIO_RUN_JOBS=1. A caller may explicitly set another value, but the
serial default avoids a reproducible PlatformIO archive missing-object race
seen in the Core 3.3.11 lane. Example builds remain parallel.
Deliberate exclusions
- No merge or wholesale cherry-pick of upstream
develop/ WIP 2.2.0. - No
obj_idserialization: Home Assistant removed that discovery field. UsesetDefaultEntityId()for new code. - No binary-sensor
state_class: it is not valid in the current HA MQTT binary sensor schema. - No upstream IMqttClient abstraction or unreviewed entity-type feature PRs.
Ongoing audit routine
The upstream remote has no usable push URL. Fetch and compare explicitly:
git fetch --prune upstream
git log --oneline main..upstream/develop
git diff --stat main...upstream/develop
Port only independently reviewed changes with regression tests; treat open upstream pull requests as proposals, not release inputs. Run the native, board-compile, and HA test harness gates before publishing a new release.