diff --git a/goodwe_controller/CHANGELOG.md b/goodwe_controller/CHANGELOG.md index 086efbb..cd82615 100644 --- a/goodwe_controller/CHANGELOG.md +++ b/goodwe_controller/CHANGELOG.md @@ -91,8 +91,11 @@ shipped `sum` is correct and must not be "fixed".** 300 W gate. Closed by part 9a's device-clamped counterfactual. * **10 mutations of that one line, each on a fresh full-repo copy mounted `:ro`, bytecode purged by `tools/mutation_run.sh`, the edit re-read from disk and the - byte delta printed. All 10 red.** Ledger and the honest gaps in - `DECISIONS/SAFETY-38-site-standing-pin.md`. + byte delta printed. All 10 red — every one of them in `test_watchdog.py` and + in nothing else.** ⚠️ One **false red** from `test_peakguard.py` on M10 did + not reproduce in four subsequent runs; it is CI-06's known flakiness, no claim + here rests on it, and it is recorded rather than quietly dropped. Ledger and + the honest gaps in `DECISIONS/SAFETY-38-site-standing-pin.md`. **Inverter B gets its own MQTT device, and inverter A keeps the one it has (TEL-07).** MQTT discovery announced **one** device, and every entity hung off diff --git a/goodwe_controller/DECISIONS/SAFETY-38-site-standing-pin.md b/goodwe_controller/DECISIONS/SAFETY-38-site-standing-pin.md index 443277a..289c789 100644 --- a/goodwe_controller/DECISIONS/SAFETY-38-site-standing-pin.md +++ b/goodwe_controller/DECISIONS/SAFETY-38-site-standing-pin.md @@ -189,6 +189,21 @@ fingerprint, and verifies no cache appears during the run). The mutated line was | M9 | `sum(standing.values()) * 2.0` | +6 | **RED** | | M10 | `sorted(standing.values())[-1]` — largest signed | +7 | **RED** | +**Every one of the ten is red in `test_watchdog.py` and in nothing else** — the +other 19 files are green under all ten, which is the measurement of how +unpinned this line was: before part 9 existed, three of these left the whole +suite green and the remaining seven were caught by SAFETY-32's structural pin or +by SAFETY-30's own N≥2 checks, none of which grade the *quantity*. + +⚠️ **ONE FALSE RED, AND IT IS [[CI-06]]'s.** In the batch run M10 also reported +`FAIL test_peakguard.py`. Re-run in isolation **three times** and once more +through `tools/mutation_run.sh` — **four clean passes, zero failures**. The +batch script had discarded the failure detail, so the failing check cannot be +named here; what can be said is that the red did not reproduce in four attempts +and that **no claim in this card rests on it**. `test_peakguard.py` is the file +CI-06 records as flaky, and this is the behaviour it records. Believe no red +from it without three isolated re-runs. + M3 is listed for completeness only. SAFETY-32 already closes it **structurally** and this card does not claim it; that the behavioural fixture also catches it is a free consequence of the same discriminating numbers, not a second pin.