/* Page prose (de) */
"JobInThreeSteps" = "# Ein Auftrag in drei abhängigen Schritten\n\nZurück in die **Druckerei**. Um eine Broschüre herzustellen, müssen drei Dinge *der Reihe nach* passieren, wobei jedes das vorherige braucht:\n\n1. **Ein Design laden** (eine Vorlage, von der gedruckt wird).\n2. **Einen Andruck rendern** aus diesem Design (in wie viele Seiten es wird).\n3. **Die Broschüre binden** aus dieser Seitenzahl.\n\nHier sind die drei asynchronen Bausteine. Jeder simuliert echtes Warten (ein Lesevorgang von der Festplatte, ein Rendering, ein Durchlauf der Binderei) mit `asyncAfter` und meldet über einen Completion Handler zurück, der ein `Result` trägt. Weil jeder Schritt das vorherige Ergebnis braucht, verschachtelt sich jeder Aufruf im letzten Handler. Wir stecken das in eine kleine Klasse, damit ein Detail aus der echten Welt mitkommt: Die Closures fangen `self` ein, also müssen wir über Retain-Zyklen nachdenken.";
"JobInThreeSteps-2" = "**Sieh es laufen:** Nach etwa anderthalb Sekunden siehst du `✅ Ready:\nBooklet(12 pages)`. Es funktioniert. Aber sieh dir an, *was es gekostet hat*, drei geordnete Schritte zum Laufen zu bringen, und jede Stelle, an der es stattdessen hätte schiefgehen können.\n\n* callout(Probier es aus): Lösche den `DispatchQueue.main.async { ... }`-Wrapper und rufe `completion(.success(booklet))` direkt auf. Die Ausgabe sieht hier identisch aus, was genau der Grund ist, warum ein vergessener Sprung zum Hauptthread so leicht in Produktion geht.\n\n[Zurück](@previous)  |  Seite 3 von 6  |  [Weiter: Wo Bugs sich verstecken](@next)";
