diff --git a/UMSETZUNGSPLAN-Fable-Review-Fixes.md b/UMSETZUNGSPLAN-Fable-Review-Fixes.md index c9150fc..83a8e22 100644 --- a/UMSETZUNGSPLAN-Fable-Review-Fixes.md +++ b/UMSETZUNGSPLAN-Fable-Review-Fixes.md @@ -14,7 +14,14 @@ - ✅ **Slice 5** – H3: BUY-Skip während ExitPending (Entscheidung A). - ✅ **Slice 6** – SnapshotService entfernt, Demo-Balance/PnL-Reconciliation, Settings-Validierung (IsLadderConfigInverted + Load-Warnung). 3 Tests. -**Stand: 236 Tests grün, Build/Smoke grün.** +**Stand: 244 Tests grün, Build/Smoke grün.** + +### Nachgelagerte Testabdeckung (nach dem K3-Fund) +- **Engine-Integrationstests** (`CopyTradingEngineTests`, gemockter CLOB): H3 BUY-Skip, Doppel-SELL-Guard, K3 System-Close, Fremd-Trader-Reject, H2 Cleanup-schont-Leiter (+Kontrast). Engine `_clob`→`IClobClient`, `ProcessAccountOrderAsync` internal. +- **⚠️ K3-Korrektur:** Der Slice-3-Fix sass am falschen Ort (downstream ~Z.643). Der echte Ownership-Check ist der frühe `inPortfolio`-Lookup (~Z.437, `p.SourceTraderId == signal.TraderId`), der System-Signale schon vorher mit early return abwies. Jetzt am richtigen Ort via `IsAuthorizedSell` – **vom Engine-Test aufgedeckt**. +- **K1a-Test** (`TraderMonitorServiceTests`): Cleanup cancelt Leiter-Order nicht (aktive Leiter) bzw. cancelt sie ohne Leiter. `_clob`→`IClobClient`, `CleanupStaleOpenOrdersAsync` internal. + +**Alle 3 kritischen + 4 hohen Bugs sind jetzt durch Tests abgesichert** (K1a/K1b/K2/K3/H1/H2/H3/H4). ### Bewusst aufgeschobene Follow-ups (Live-Verifikation/Risiko) - **M3 Autoincrement-Migration**: `TradeId` auf DB-Autoincrement umstellen – Schema-Änderung an der Trade-Persistenz, erst im Zielland live verifizieren. (M3-Minimum ist umgesetzt.)