CluPilotCloud/app
nexxo c93510ffe4 Fix-Runde 1: writeAtomic prueft Rueckgabewerte, ceiling() faengt Throwable
Zwei Important-Befunde aus dem Code-Review zu Task 3:

- writeAtomic() ignorierte den Rueckgabewert von File::put()/File::move()
  und meldete setCeiling() als "true", selbst wenn ein I/O-Fehler (volle
  Platte, Rechteproblem) nichts geschrieben oder eine .tmp liegen gelassen
  hatte. Beide Rueckgabewerte werden jetzt geprueft, eine liegen gebliebene
  .tmp wird im Fehlerfall aufgeraeumt, und der Fehlschlag wird bis zu
  setCeiling() durchgereicht (Rueckgabe false).

- ceiling() konnte state() doch werfen lassen: zwischen File::exists() und
  File::get() liegt ein Zeitfenster, und File::get() wirft eine
  FileNotFoundException, wenn die Datei dazwischen verschwindet. readJson()
  und lastLog() kapseln genau dieses Muster schon in try/catch(Throwable);
  ceiling() zieht jetzt nach.

Beide Befunde tragen einen eigenen Test: ein Verzeichnis an der Ceiling-
Datei-Stelle (exists() wahr, get() wirft) fuer den zweiten, eine echte
Rechteverweigerung (chmod 0500 als nicht-root Testbenutzer) fuer den
ersten -- kein Facade-Mock noetig.
2026-08-04 15:30:10 +02:00
..
Actions Kuendigung B1, Fix-Welle: der Platz wird frei, und das Loeschen ist vollzogen 2026-08-04 12:39:06 +02:00
Console Kuendigung B1, Tasks 4+5: der Zeitplan-Griff und die Sichtbarkeit 2026-08-04 12:00:37 +02:00
Exceptions Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
Http Version 1.7.3 — ein Tor, eine Liste 2026-08-04 11:17:05 +02:00
Jobs Fix-Runde 2: eine fremde Mailklasse faehrt im ruhigen Takt statt ungebremst 2026-08-03 19:04:32 +02:00
Listeners Jede Mail faehrt wieder ueber ihren eigenen Mailer 2026-08-03 20:36:20 +02:00
Livewire Kuendigung B1, Fix-Welle: der Platz wird frei, und das Loeschen ist vollzogen 2026-08-04 12:39:06 +02:00
Mail Fix-Welle: die Kuendigung sagt jedem nur das, was fuer ihn stimmt 2026-08-04 10:00:36 +02:00
Models Kuendigung B1, Fix-Welle: der Platz wird frei, und das Loeschen ist vollzogen 2026-08-04 12:39:06 +02:00
Notifications Zwei Empfaengerkreise, und eine Wegwahl, die auch das Konto verschiebt 2026-08-03 17:00:20 +02:00
Observers Say the same thing to the customer, the register and the bank 2026-07-30 01:30:24 +02:00
Policies Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
Providers Eine verschickte Mail hinterlaesst wieder eine Zeile, nicht zwei 2026-08-03 21:13:36 +02:00
Provisioning Kuendigung B1, Fix-Welle: der Platz wird frei, und das Loeschen ist vollzogen 2026-08-04 12:39:06 +02:00
Services Fix-Runde 1: writeAtomic prueft Rueckgabewerte, ceiling() faengt Throwable 2026-08-04 15:30:10 +02:00
Support Das Register behauptete etwas Falsches: der Plan-Wechsel IST gebaut 2026-08-04 14:29:21 +02:00