Die w2-Kaskade (i453) fuehrte die zwei Subscription-Anbieter im interfaces-Katalog ein, das Credentials-Schema-Enum blieb stehen — jeder Vault-POST mit den neuen Anbietern starb am ValidationError, obwohl credentials-api den Katalog bereits annimmt. Ein-Zeilen-Enum-Add, 707/707 Tests gruen.
Fixcredentials
Alt-Bestands-Messung las die falsche Antwort-Form — und schwieg dabei
Der Vorab-Riegel von vault-change-password griff NICHT. Gefunden hat es erst die Live-Probe: der Wechsel ging trotz eines vorhandenen Alt-Zugangs raus und wurde vom SERVER mit 409 gestoppt — die Zusage "stoppt, bevor gesendet wird" war damit gebrochen.
Ursache, am laufenden Dienst gemessen: die Antwort ist { payload: { data: [...] }, meta } — `payload` ist ein OBJEKT, kein Feld. Der Code las `res.payload ?? res.data` als Liste, bekam ein Objekt, und `Array.isArray(...) ? ... : []` machte daraus STILL eine leere Liste. Eine leere Liste heisst hier "keine Alt-Bestaende", also: senden.
Zwei Fehler, nicht einer — und der zweite ist der teurere: (a) falscher Pfad in die Antwort; (b) eine unerwartete Form wurde als "nichts vorhanden" gelesen statt als "nicht feststellbar". Genau die Fehlerklasse, gegen die dieser Riegel steht.
Behoben: der gemessene Pfad zuerst, danach zwei ausdrueckliche Rueckfaelle — und FAIL-CLOSED. Ist das Ergebnis keine Liste, bricht der Befehl ab, statt weiterzumachen. Ebenso, wenn die Liste die Obergrenze (500) erreicht und damit abgeschnitten sein koennte; `meta` traegt keine Gesamtzahl, mit der sich das anders pruefen liesse.
Belegt: dieselbe Live-Probe stoppt jetzt VOR dem Senden, nennt den Zugang namentlich (69fe8996e1772fc374ef1c86 "Rustdesk Public Key") und endet mit Exit 2 statt mit dem Server-409. Drei neue Proben halten die gemessene Form, die unerwartete Form und den Obergrenzen-Fall fest; die bestehenden Proben sind auf die ECHTE Form umgestellt — sie hatten meine falsche Annahme gespiegelt und deshalb gruen gemeldet.
Dazu: die Phrasen-Abfrage nimmt die Phrase nicht-interaktiv ueber die STANDARDEINGABE (nie ueber ein Flag — das stuende in der Prozessliste), je eine Zeile pro Abfrage. Der Leser wird je Befehlsaufruf erzeugt statt im Modul gehalten; als Modul-Zustand teilten sich zwei Aufrufe im selben Prozess einen bereits geleerten Vorrat.
23 Proben in dieser Datei; volle Reihe 1545 gruen / 3 uebersprungen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>