Skip to content

Sync fork with current upstream main - #3

Merged
MrCodeLabs merged 27 commits into
mainfrom
sync/upstream-20261102
Nov 2, 2026
Merged

MrCodeLabs merged 27 commits into
mainfrom
sync/upstream-20261102

Conversation

@MrCodeLabs

Copy link
Copy Markdown
Owner

Merge marq24/main at 4cc2b59 while preserving the fork's existing commits and blueprint tests. Runtime integration files match upstream exactly. The four reviewed follow-up changes remain in separate branches and PRs.

marq24 and others added 27 commits October 18, 2026 11:34
…arq24#171)

* Target the selected charger in the PV surplus blueprint
* Validate PV blueprint measurements before sending updates
tests are cool - but
load/unload SERVICES (only for first/last) active charger
make sure we have read data from a JSON response
AI slope
only add Tag.AMP after it's init completed
remove data from device_info
moved to baseline
…lt aiohttp client header limit and set it globally to 64 KiB so all systems that have updated to HA 2026.10.4 will be able to fetch updates via HACS - so we can roll back the patch from yesterday.

48px icons for readme
…ke that this attribute is not present for "none" FLEX Chargers (at least that's what I assume right now)
* Add regression tests for the integration (no charger, no network)

79 passing tests and 11 strict xfail tests that describe known bugs
(they turn red as soon as a bug is fixed, so the marker must then be removed).

Covered: HTTP requests and answers (official go-e docs), WebSocket messages,
password hashing and signing, the 16 A decision table, entity ID stability
(snapshot), config entry migration, services, multi-charger registry and unloading.

Based on upstream main 98af3e0. Not intended as a pull request to the upstream repository.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Make known bugs fail visibly instead of xfail

Tests that describe unfixed bugs now carry the marker `known_bug` and fail the run.
Deselect them with -m "not known_bug".

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Add negative tests: WebSocket login, coordinator outages, setup and config flow

Each failure path ends cleanly (error reported, no data kept, no command sent).
Positive controls make sure the fakes let valid input pass. Nine deliberate code
mutations were all caught by these tests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Add contract tests against the official go-e key table

api_keys.json is generated from the official table (names and flags only).
Unsupported and undocumented keys are classified with a reason, differences
between documentation and code are listed and fail without blocking
(marker needs_decision) until someone has decided whether they are intended.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Record per-firmware key list values in deviations.json

The per-firmware lists agree with the code for frm and ids; the main table is
the odd one out there. For the other deviations the lists agree with the main table.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Add tests for platforms, polling, writing, coordinator runtime, services/setup and config flow

About 370 more tests (491 behaviour and error-path tests in total). Platform entities,
the polling read cycle, all write paths, coordinator runtime (limiter, reconnect, watchdog),
services, setup/unload and the config flow are covered. One new known_bug marks a swallowed
error message in async_setup_entry. Measured path coverage (upper bound of basis paths)
rose from 20 % to 61 %.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Add test report of 2026-10-29 and the measurement tools

Coverage, junit and path-trace data plus testreport.md (line, branch and path coverage,
paths by criticality). Tools: path tracer plugin, criticality classes, report builder, measure.sh.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Test every new upstream release with the regression tests

Workflow polls for the latest release of the upstream integration, clones it, copies
tests/integration into the clone and runs the blocking tests. Known-bug tests that pass
are reported as probably fixed. A tag tested/<release> marks releases already tested.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Add arc42 architecture documentation and test concept

Reconstructed from code, README and the official go-e API documentation; written with AI
assistance and reviewed by the fork owner. Statements are marked by their source.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* tests: skip the cll-without-cableCurrentLimit rows on releases that predate 98af3e0

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* tests: HTTP and WebSocket must give the same versions data (issue marq24#176)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* tests: controller key contract and value ranges from the official docs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* ci: manual workflow that builds the full test report

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* ci: name the measured version and the tests commit correctly in the report

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* ci: publish report, summary and test case list with GitHub Pages

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* ci: add arc42 and test concept as pages with table of contents and diagrams

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* tests: pin the Home Assistant test framework, option to run against the latest

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* docs: update test concept and arc42 to 987 tests, add Max-Ampere reset finding (R30)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* tests: trigger the generic websocket message with a real error, not with the 'no device data' path

Upstream eb5da46 now reports 'no device data' with its own message, so the
language fallback test must reach the generic message through an exception.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* tests: adapt to the decision that a call without configid is refused when several chargers exist

Upstream 4702213 raises ServiceValidationError instead of picking the first
charger. The old known_bug about a changing default charger is obsolete; it is
replaced by a test of the new rule (skipped on versions that still guess).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Oliver-Marcus Eder <github.dev@oliver-eder.de>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
- removed the tests\reports
…kflows (marq24#179)

regression-on-release.yaml and pages.yaml were written for a fork: they check
out the branch tests/regression-suite, sync the fork and publish GitHub Pages,
which is not enabled here. tests.yaml runs the blocking tests on push to main
and on pull requests and lists the open findings in the job summary.

Co-authored-by: Oliver-Marcus Eder <github.dev@oliver-eder.de>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
…200 from the cloud (marq24#180)

Ten tests describe findings that main fixes now (stop_charging flag, empty
websocket result, controller unload counter, pgrid, 'essential data' message,
rejected write). The 202 test is replaced: the maintainer states that the
real cloud answers 200 and the documentation is wrong.

Co-authored-by: Oliver-Marcus Eder <github.dev@oliver-eder.de>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
… numbers, tests live in this repository now (marq24#181)

Co-authored-by: Oliver-Marcus Eder <github.dev@oliver-eder.de>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
…x, when a 16A cable is connected, that the device will not charge with > 16A
@MrCodeLabs
MrCodeLabs merged commit eb1b08b into main Nov 2, 2026
3 of 5 checks passed
@MrCodeLabs
MrCodeLabs deleted the sync/upstream-20261102 branch November 2, 2026 20:09
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.

3 participants