S/R-Auto-Close komplett entfernt + Circuit-Breaker als runder CB-Knopf (v=210)

(1) S/R-AUTO-CLOSE RAUS (User-Vorgabe: "die brauche ich nicht mehr").
Der Schalter stand seit dem 19.08. ohnehin auf AUS - abgeschaltet, nachdem
analyze_pbreak_live.py das P(break)-Modell live als INVERTIERT gemessen hatte
(AUC 0,452, Klassen monoton rueckwaerts). Ohne funktionierendes Gate ist der
S/R-Close faktisch der PAUSCHALE, und der ist 2x gemessen und verworfen
(Gewinner-Kappen). Die Entfernung vollzieht den gemessenen Stand nach.

WEG: _check_sr_close, set_sr_autoclose, set_sr_close_min_gain, die
Konstruktor-Felder, die %-Armierung des Gewinn-Close, drei Snapshot-Felder,
beide runtime_state-Schluessel, die Reichweiten- und Systemstatus-Zeilen,
/api/srclose und /api/srclose_min, der Knopf S/R, das Gewinn-Close-Feld, der
Toast "Bot hat am Level geschlossen".
BLEIBT: `_sr_close_hint` (App-Hinweis, P(break)-Chartlinien, Copilot-Kontext,
pbreak_predictions-Tracking), `stop_approach`, das Modell selbst und die
closed_by=sr_close-Historie in der DB. Live gegengeprueft: die drei Felder sind
aus dem Snapshot verschwunden, sr_close_hint und stop_approach sind da, beide
Endpunkte antworten 405.
Sicherung: .removed_backup/sr_auto_close_2026-08-21.py

⚠ Der Close-Alarm gilt jetzt schlicht ab jedem Gewinn (`minGain = 0`) - die
Schwelle gab es nur fuer den Auto-Close. Das ist der Zustand von vor 2026-07.

⚠ Der Test test_automatik_zeile_nennt_alle_schalter war MITGEZAEHLT und faellt
korrekt - er ist angepasst, nicht entfernt: jetzt zwei Schalter statt drei, und
die Negativ-Pruefungen ("SIG"/"S/R-Close" duerfen NICHT auftauchen) sind der
eigentliche Wert, denn ein wieder auftauchender Pfad waere ein stiller Rueckbau.

(2) CIRCUIT BREAKER als runder Knopf "CB" rechts neben BALANCE.
⚠ Farb-Logik wie vorgegeben: GRUEN = inaktiv (aus), ROT = aktiv (scharf).
Bewusst NICHT die uebliche "gruen = geschuetzt"-Lesart - hier signalisiert Rot,
dass eine Automatik eingreifen kann. Im Code und im Markup steht das dran, damit
es niemand spaeter "korrigiert".
⚠ VERSCHOBEN, nicht kopiert: zwei Elemente mit derselben ID waeren ein stiller
Fehler, weil getElementById nur das erste findet.

⚠ Beim Entfernen zwei eigene Fehler: (a) ein Slice ueber `rindex("try:")`
schnitt durch fremde Konstruktor-Bloecke und riss Kommentar-Fragmente heraus -
zurueckgesetzt und zeilenbasiert von hinten neu gemacht; (b) beim Toast-Block
eine Klammer zu viel entfernt, von `node --check` sofort gefangen.

Pipeline A-G gruen, 97 Tests, 14 render*-Funktionen, deployt und am
ausgelieferten HTML/Snapshot verifiziert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-21 10:47:44 +02:00
co-authored by Claude Opus 5
parent ebf10da00e
commit 0dd2e524b7
6 changed files with 75 additions and 209 deletions
+10 -6
View File
@@ -46,14 +46,18 @@ def _text(z):
def test_automatik_zeile_nennt_alle_schalter():
"""⚠ Seit dem 2026-08-12 sind es DREI — der Auto-Signal-Pfad (SIG) ist
entfernt. Der Test zaehlt sie bewusst einzeln auf: verschwindet einer
stillschweigend aus der Zeile, faellt es hier auf und nicht erst, wenn
monatelang niemand merkt, dass ein Schalter aus ist (real geschehen:
`auto_sr_close` stand 5 Tage aus, gemessener Wert +350,81 EUR)."""
"""⚠ Seit dem 2026-08-21 sind es ZWEI. Entfernt wurden der Auto-Signal-Pfad
(SIG, am 12.08.) und der S/R-Auto-Close (am 21.08., User-Vorgabe — er stand
seit dem 19.08. ohnehin aus, weil das P(break)-Modell live INVERTIERT misst).
Der Test zaehlt sie bewusst einzeln auf: verschwindet einer stillschweigend
aus der Zeile, faellt es hier auf und nicht erst, wenn monatelang niemand
merkt, dass ein Schalter aus ist.
⚠ Die beiden Negativ-Pruefungen sind der eigentliche Wert: ein entfernter
Pfad, der wieder auftaucht, waere ein stiller Rueckbau."""
z = _text(_Stub(brk=True, src=True, flip=False)._system_status())
assert "BRK AN" in z and "S/R-Close AN" in z and "Flip aus" in z
assert "BRK AN" in z and "Flip aus" in z
assert "SIG" not in z, "der entfernte Pfad darf nicht wieder auftauchen"
assert "S/R-Close" not in z, "der S/R-Auto-Close ist entfernt (21.08.)"
def test_toter_logger_wird_gemeldet():