Visual für CLS Closed-Loop System CLS CLS ist Novas Closed-Loop System für verifizierte Browser-Handlungen: Aktionen gelten erst dann als belastbar, wenn Nova das erwartete Ergebnis beobachten oder Unklarheit sichtbar machen kann. Überblick Prüft Agentenmodell Agentenfluss Wann gilt es Fehlerregeln MCP-Vertrag Agenten-Werkzeuge

CLS

CLS steht für Closed-Loop System. Nova behandelt Browser-Aktionen damit als prüfbare Zustandsübergänge: Eine Handlung ist nicht verlässlich, nur weil ein Klick, eine Eingabe oder ein Submit abgeschickt wurde.

CLS gehört zu Momenten, in denen ein Agent Seitenzustand verändert. Nova kann Voraussetzungen prüfen, die Handlung ausführen, das Ergebnis beobachten und melden, ob die erwartete Nachbedingung bestätigt, widerlegt oder noch unklar ist.

Das verhindert falschen Erfolg. Wenn die Seite das gewünschte Ergebnis bestätigt, kann der Agent vom neuen Zustand aus weiterarbeiten. Wenn ein Fehler sichtbar wird, das Ergebnis unklar bleibt oder die Handlung die Seite nie erreicht hat, muss der nächste Schritt reparieren, erneut beobachten oder sicher stoppen.

CLS verbindet Ausführung mit Gedächtnis. TOB liefert beobachtete Evidenz, OK liefert aktuelle Dienstfakten, PKS kann aus verifizierten Erfolgen und Fehlschlägen lernen, und ETM kann das Ergebnis nutzen, wenn ein Aufgabenlauf wirklich abgeschlossen werden soll.

Kurz gesagt

  • Dispatch ist kein Beweis, dass eine Browser-Aktion erfolgreich war.
  • Commit-Point-Handlungen brauchen Voraussetzungen und Nachbedingungen, wenn sie senden, absenden, einloggen, Zustand wechseln oder einen Dienst verändern.
  • CLS trennt Pre-Dispatch-Blocks von Unklarheit nach Dispatch, damit Agenten riskante Handlungen nicht blind wiederholen.
  • Verifizierte Ergebnisse können Aufgabenfortschritt, PKS-Health, ALP-Prüfung und spätere Orientierung stützen.
  • CLS erteilt keine Erlaubnis von allein; Nova-Sicherheitsgates und Nutzerkontrolle gelten weiter.

Was CLS prüft

CLS prüft die Teile einer Handlung, die leicht verwechselt werden, wenn ein Agent nur den Werkzeugerfolg sieht.

  1. Voraussetzungen Vor Dispatch muss die aktuelle Seite noch zum erwarteten Ausgangszustand passen. Wenn die Voraussetzung nicht stimmt, soll die Handlung nicht laufen.
  2. Dispatch Nova meldet, ob die Handlung die Seite wirklich erreicht hat. Ein Block vor Dispatch ist etwas anderes als ein Klick, der ausgelöst wurde, aber nicht das erwartete Ergebnis erzeugt hat.
  3. Nachbedingungen Nach Dispatch prüft Nova Erfolgs-, Fehler- und Ambiguitätssignale. Hier wird aus „gesendet“ entweder „bestätigt“, „fehlgeschlagen“ oder „unklar“.
  4. Retry-Sicherheit CLS sagt dem Agenten, ob er wiederholen darf, nicht wiederholen soll oder zuerst die Nachbedingung prüfen muss, weil eine Wiederholung die Handlung doppeln könnte.
  5. Ziel-Resume Wenn ein Closed-Loop-Ziel aktiv ist, kann Nova den aktuellen Schritt anzeigen, damit ein Agent nach Kontextkompression nicht raten muss, wo er stand.
  6. Lernfeedback Verifizierte Ergebnisse sind stärkere Evidenz für Aufgabenabschluss, PKS-Health und späteres Lernen als ein roher Werkzeugerfolg.

Wann brauche ich CLS?

Nutze CLS für Handlungen, bei denen das Ergebnis Zustand verändert und ein blinder Retry riskant wäre: Nachricht senden, Formular abschicken, Login bestätigen, Modell oder Workspace wechseln, ein zugangsrelevantes Overlay entfernen oder einen Aufgabenschritt abschließen, der nur nach sichtbarem Nachweis zählen soll.

CLS-Modell für Agenten

Für einen Agenten beantwortet CLS vier Fragen: Welches Ziel ist aktiv, welcher Zustand muss vor der Handlung gelten, welches Ergebnis beweist Erfolg oder Fehlschlag, und was passiert, wenn das Ergebnis unklar ist?

Ziel
Ein dauerhaftes Arbeitsziel auf einem Target. Es kann geordnete Schritte enthalten und erscheint bei aktiver Arbeit als goalContext.
Schritt
Eine Handlung innerhalb eines Ziels. Ein Schritt kann geplant, ausgelöst, in Prüfung, erledigt, unklar, fehlgeschlagen, blockiert oder abgebrochen sein.
Transition Contract
Der strukturierte Vertrag für eine bedeutsame Handlung: Voraussetzungen, Aktionsart, Nachbedingungen, Retry-Policy und Ambiguitäts-Policy.
Assertion
Eine maschinenprüfbare Bedingung, zum Beispiel ob ein Fakt existiert, einem Wert entspricht, sich geändert hat oder verschwunden ist. Assertions können als all, any oder forbidden gruppiert werden.
Guarded Commit
Das Ergebnisobjekt, das dem Agenten sagt, was CLS getan hat: Dispatch-Status, Verifikationsstatus, Retry-Hinweis, fehlgeschlagene Assertions und Timing.
Action Dispatch
Der Punkt, an dem die Seite wirklich berührt wurde. Wenn actionDispatched true ist, kann ein Retry einen Submit, Send oder Zustandswechsel doppeln.
Postcondition-first Retry
Eine Wiederherstellungsregel für nicht-idempotente Handlungen: erst das Ergebnis prüfen, dann entscheiden, ob ein weiterer Dispatch sicher ist.

So nutzen Agenten CLS-Infos

CLS gibt Agenten einen Prüfkreislauf um wichtige Handlungen. Der Agent liest die Seite, bindet oder übernimmt das Ziel, nutzt eine geschützte Handlung und lässt danach den zurückgegebenen Zustand über den nächsten Schritt entscheiden.

  1. Seite und Zielkontext lesen Der Agent startet mit nova.perceive. Wenn goalContext vorhanden ist, liest er den aktiven Schritt vor der Handlung.
  2. Ziel erstellen oder abfragen, wenn Arbeit mehrere Schritte hat Für mehrstufige Arbeit kann nova.goal_register das aktive Closed-Loop-Ziel erstellen, abfragen, schließen oder annotieren.
  3. Guarded Commit Tool für bedeutsame Handlungen nutzen Für typische Commit Points bevorzugt der Agent nova.guarded_send_message, nova.guarded_submit_form, nova.guarded_login, nova.guarded_switch_model oder nova.guarded_switch_sandbox.
  4. Transition Contract liefern, wenn rohe Eingabewerkzeuge genutzt werden Wenn der Agent nova.click_selector oder nova.type_selector für einen Commit Point nutzt, sendet er transitionContract mit Voraussetzungen und Nachbedingungen.
  5. Dispatch und Verifikation getrennt lesen Der Agent prüft actionDispatched, guardedCommit.dispatchStatus, guardedCommit.verificationStatus und guardedCommit.retryAdvice.
  6. Nur von verifiziertem Zustand aus fortsetzen Verifizierter Erfolg kann weiterlaufen. Verifizierter Fehlschlag, blockierte Voraussetzung oder unklarer Ausgang verlangen Reparatur, weitere Beobachtung oder sicheren Stopp.

Wann CLS-Zustand gilt

CLS-Zustand ist nur im aktuellen Target- und Handlungskontext belastbar. Ein früheres Ergebnis ist keine Erlaubnis, denselben Seitenzustand nach Navigation, Reload, Nutzerinteraktion oder einer anderen Agentenhandlung weiter anzunehmen.

Kein aktives Ziel goalContext=null
Bedeutung
Nova hat für das aktuelle Target oder den aktuellen Owner kein aktives Closed-Loop-Ziel.
Erforderliche Evidenz
Im Seitenlesen erscheint kein goalContext. Zielabfragen können trotzdem terminale oder verwaiste Zustände wie completed, failed, aborted oder orphaned zeigen.
Agentenverhalten
Normale Seitenbeobachtung nutzen oder ein Ziel erstellen, wenn die Arbeit dauerhafte Schrittverfolgung braucht.
Darf fortsetzen
Nur bei einfachen Handlungen.
Aktives Ziel goalContext.state=active
Bedeutung
Ein Closed-Loop-Ziel ist aktiv und kann fortgesetzt werden.
Erforderliche Evidenz
Aktuelle goalId, summary, currentStep und optional stepStatus sind für den Agenten sichtbar.
Agentenverhalten
Vom aktuellen Schritt fortsetzen, nicht aus Erinnerung oder geratenem Plan.
Darf fortsetzen
Ja, nach Seitenprüfung.
Voraussetzung blockiert blocked_precondition
Bedeutung
Die Handlung wurde nicht ausgelöst, weil der erwartete Startzustand nicht galt.
Erforderliche Evidenz
Die Antwort hat actionDispatched=false und guardedCommit.preconditionVerdict=failed oder einen passenden Reason Code.
Agentenverhalten
Seitenzustand reparieren oder Vertrag aktualisieren. Nicht behaupten, dass die Handlung passiert ist.
Darf fortsetzen
Nein.
Dispatch bestätigt actionDispatched=true
Bedeutung
Die Handlung hat die Seite erreicht. Das Ergebnis braucht trotzdem Nachbedingungsprüfung.
Erforderliche Evidenz
Die Antwort sagt actionDispatched=true, möglicherweise mit guardedCommit.verificationStatus.
Agentenverhalten
Nicht-idempotente Sends, Submits oder Login-Commits nicht blind wiederholen.
Darf fortsetzen
Nur nach Verifikation.
Verifizierter Erfolg verified_success
Bedeutung
Beobachtete Seite oder Dienstzustand erfüllt die Erfolgs-Nachbedingung.
Erforderliche Evidenz
Das Guarded-Ergebnis liefert guardedCommit.verificationStatus=verified_success.
Agentenverhalten
Zielschritt weiterführen, Aufgabe fortsetzen und das Ergebnis als stärkere Evidenz für Lernen nutzen.
Darf fortsetzen
Ja.
Verifizierter Fehlschlag verified_fail
Bedeutung
Nach Dispatch wurde ein verbotener oder fehlgeschlagener Ausgang beobachtet.
Erforderliche Evidenz
Das Guarded-Ergebnis liefert verified_fail oder top-level reasonCode=guarded_commit.postcondition_failed.
Agentenverhalten
Schritt als fehlgeschlagen behandeln und vom sichtbaren Fehlerzustand aus reparieren.
Darf fortsetzen
Nein.
Unklar indeterminate
Bedeutung
Nova konnte Erfolg oder Fehlschlag aus den verfügbaren Signalen nicht beweisen.
Erforderliche Evidenz
Das Ergebnis enthält indeterminateReason wie ambiguous_signal, page_navigated, timeout oder eval_error.
Agentenverhalten
Dem retryAdvice folgen. Bei nicht-idempotenten Handlungen die Nachbedingung vor jedem Retry prüfen.
Darf fortsetzen
Noch nicht.
Coordinator- oder Zielblock blocked_goal|blocked_coordinator
Bedeutung
Target oder Ziel ist reserviert, passt nicht oder ist nicht in einem dispatchbaren Zustand.
Erforderliche Evidenz
Dispatch-Status oder Reason Code zeigt blocked_goal, blocked_coordinator, guarded_commit.coordinator_busy oder guarded_commit.dispatch_prepare_rejected.
Agentenverhalten
Warten, Ziel abfragen oder Nachbedingungen erneut prüfen, bevor ein Retry passiert.
Darf fortsetzen
Nein.

Fehler- und Guard-Bedingungen

Diese harten Kanten sollten Agenten und Integrationen vom CLS-Vertrag erwarten.

Bedingung Beobachtetes Signal Agentenverhalten
Commit Point ohne Vertrag Ein roher Klick oder submit-artiges Tippen wird als Commit Point erkannt und hat kein transitionContract; der Reason Code ist guarded_commit.missing_contract. Guarded-Makro nutzen oder transitionContract.postconditions liefern. Die Handlung wird vor Dispatch blockiert.
Unbekanntes Vertragsfeld Unbekannte Felder in transitionContract, postconditions oder Assertion Sets erzeugen invalid params. Request-Form korrigieren statt anzunehmen, dass Extra-Felder ignoriert werden.
Leere Nachbedingungen Commit-Point-Verträge ohne nicht-leere success-, forbidden- oder ambiguous-Buckets schlagen geschlossen fehl. Mindestens eine beobachtbare Ergebnisbedingung definieren, bevor Dispatch erlaubt wird.
Voraussetzung fehlgeschlagen Reason Code guarded_commit.precondition_failed und actionDispatched=false. Seite reparieren oder neu lesen. Handlung erst wiederholen, wenn der Startzustand stimmt.
Voraussetzung nicht auswertbar Reason Code guarded_commit.precondition_error. Fail-closed behandeln. Assertion vereinfachen oder bessere Faktquelle sammeln.
Coordinator belegt Reason Code guarded_commit.coordinator_busy und oft retryAfterMs=1000. Auf die laufende geschützte Handlung warten, bevor erneut versucht wird.
Nachbedingung fehlgeschlagen Top-level Status kann failed mit reasonCode=guarded_commit.postcondition_failed werden. Sichtbaren Fehler behandeln; den Schritt nicht als abgeschlossen melden.
Unklarer Ausgang nach Dispatch Top-level Status kann partial mit Reason Codes wie guarded_commit.ambiguous_signal, guarded_commit.page_navigated, guarded_commit.frame_destroyed, guarded_commit.eval_error, guarded_commit.no_signal_yet oder guarded_commit.timeout werden. Dem retryAdvice folgen und die Nachbedingung prüfen, bevor nicht-idempotente Handlungen wiederholt werden.

Agentenbeispiel

Das Beispiel zeigt CLS als Vertrag: Der Agent beschreibt das Handlungsziel, Nova prüft die Nachbedingung, und die Antwort sagt, ob der nächste Schritt fortsetzen darf.

Guarded-Action-Request

{
  "tool": "nova.guarded_send_message",
  "arguments": {
    "targetId": "active",
    "text": "Please summarize the selected article.",
    "transitionContract": {
      "postconditions": {
        "success": {
          "any": [
            {
              "factKey": "chat.streamActive.started",
              "operator": "eq",
              "expected": true
            },
            {
              "factKey": "chat.assistantTurnCreated",
              "operator": "eq",
              "expected": true
            }
          ]
        }
      }
    }
  }
}

Relevante Antwortfelder

{
  "structuredContent": {
    "ok": true,
    "status": "ok",
    "actionDispatched": true,
    "guardedCommit": {
      "dispatchStatus": "dispatched",
      "verificationStatus": "verified_success",
      "retryAdvice": "do_not_retry",
      "outcomeVerdict": "satisfied"
    }
  }
}

Agenteninterpretation

{
  "treatAs": "verified action outcome",
  "mayContinue": true,
  "doNotRepeat": "actionDispatched is true and the send is non-idempotent",
  "memorySignal": "success can support task progress and future learning"
}

MCP-Vertrag

Das ist die nüchterne Schicht unter der Erklärung. Sie beschreibt CLS-Felder, die Agenten und Integratoren als Vertragssignale lesen sollen, nicht als freien Beschreibungstext.

Ausführungsregel: Keine Commit-Point-Handlung ist abgeschlossen, bevor ihre aktuelle Nachbedingung beobachtet wurde oder Unsicherheit explizit sichtbar ist.

Variable Typ / Werte Standard Wirkung
goalContext object oder null in Wahrnehmungsantworten null, wenn kein aktives Ziel passt Resume-Anker für das aktive Closed-Loop-Ziel auf dem aktuellen Target.
goalContext.goalId / summary string; string berechnet Identifiziert das aktuelle Ziel und gibt dem Agenten einen kompakten, menschenlesbaren Zielanker.
goalContext.mode agent_driven | runtime_assisted | fully_autonomous agent_driven beim Erstellen eines Ziels Zeigt, wie stark Zielarbeit vom Agenten oder von Laufzeitassistenz getragen wird.
goalContext.state active active, wenn sichtbar Perception liefert nur aktiven Zielkontext zum Fortsetzen. Zielabfragen können auch terminale Zustände zeigen.
goalContext.currentStep / totalSteps Integer; Integer berechnet Zeigt, wo der Agent innerhalb des aktiven Schrittplans steht.
goalContext.stepStatus planned | ready | blocked | dispatched | verifying | done | ambiguous | failed | aborted | null null, wenn kein Schritt existiert Sagt dem Agenten, ob der aktuelle Schritt noch geplant, schon ausgelöst, in Prüfung, erledigt oder blockiert ist.
goalContext.stepAction string oder null null Menschenlesbare Handlungsbeschreibung für den aktuellen Schritt.
nova.goal_register MCP-Tool in CLS-fähigen Nova-Sitzungen verfügbar Erstellt, liest, schließt oder annotiert Closed-Loop-Ziele.
op create | query | close | annotate erforderlich Wählt die Goal-Register-Operation.
targetId string create defaultet auf active; query optional; Interaktionstools defaulten auf active, wenn weggelassen Ordnet ein Ziel oder eine Handlung dem gemeinten Browser-Tab oder Sandbox-Target zu.
agentId string optional bei Guarded-Action-Tools Kennzeichnet den aufrufenden Agenten für Guarded-Makros und claim-bewusste Ausführung. Es ist Agentenmetadatum, kein sichtbarer Seitenzustand.
goalId string erforderlich für close/annotate und gezielte query Identifiziert das Ziel, das gelesen, geschlossen oder annotiert wird.
summary string erforderlich für create Definiert die Zielzusammenfassung, die später in goalContext erscheint.
mode agent_driven | runtime_assisted | fully_autonomous agent_driven Legt den Ausführungsstil des Ziels fest.
preconditions Assertion Set optional beim Erstellen eines Ziels Speichert Ziel-Voraussetzungen, die beim Öffnen des Ziels bereits gelten sollen.
ownerAgentId / sidecarSessionId string; string optional Bindet ein Ziel an Agenten-Owner oder Sidecar-Sitzung für sichereres Resume und Handoff. Wenn weggelassen, wird keine Owner- oder Session-Bindung gesetzt.
leaseMs Integer 1000-600000 120000 Begrenzt, wie lange eine Ziel-Lease ohne Fortschritt aktiv bleiben darf.
steps Array, max. 50 optional Definiert einen geordneten Schrittplan für das Ziel.
steps[].actionDesc string pro Schritt erforderlich Benennt einen Zielschritt für Agenten-Resume und Aktivitätsanzeige.
steps[].contract transitionContract object optional Speichert den Closed-Loop-Vertrag für diesen Schritt.
includeSteps / includeEvents / eventsLimit boolean; boolean; Integer 1-200 true; false; 50 Steuert, wie viel Schritt- und Event-Detail eine Zielabfrage zurückgibt.
state completed | failed | aborted erforderlich für close Schließt ein Ziel mit einem terminalen Zustand.
content / source string; string content für annotate erforderlich; source defaultet auf agent Fügt einem Ziel ein Annotation-Event hinzu.
legacy aliases preconditionsJson, steps[].contractJson, ownerAgent, ownerSession, leaseTimeoutMs aus Kompatibilitätsgründen akzeptiert Kompatibilitätsnamen für ältere Clients. Neue Integrationen sollten strukturierte Felder bevorzugen und strukturierte und Legacy-Formen nicht mischen.
transitionContract object an Click-/Type-/Guarded-Tools für erkannte Commit Points erforderlich; von Guarded-Makros automatisch erzeugt Definiert Voraussetzungen, Nachbedingungen, Retry-Policy, Ambiguitäts-Policy und Stabilitätseinstellungen für eine zustandsändernde Handlung.
transitionContract.actionKind dismiss_overlay | send_message | submit_form | select_option | custom custom bei rohen Verträgen; makrospezifisch bei Guarded-Tools Wählt aktionsspezifische Stabilitätsstandards.
transitionContract.preconditions Assertion Set: all / any / forbidden optional Bedingungen, die vor Dispatch ausgewertet werden. Fehlgeschlagene Voraussetzungen blockieren die Handlung.
transitionContract.postconditions.success / forbidden / ambiguous Assertion Sets mindestens ein nicht-leerer Bucket für Commit Points Definiert, welche beobachteten Ergebnisse als Erfolg, Fehlschlag oder Ambiguität zählen.
assertion.factKey / operator / expected / frameId string; eq | not_eq | neq | exists | not_exists | contains | gt | lt | gte | lte; JSON; string oder null factKey und operator erforderlich Einzelne maschinenprüfbare Bedingung innerhalb von Voraussetzungen oder Nachbedingungen.
transitionContract.retryPolicy idempotent | non_idempotent | no_retry non_idempotent Steuert, ob ein erneuter Dispatch sicher sein kann. Sends, Submits und Logins sind meist nicht-idempotent.
transitionContract.ambiguityPolicy signal | retry_once | abort signal Steuert, wie ambige Nachbedingungs-Treffer den Retry-Hinweis beeinflussen.
transitionContract.stabilityWindowMs / stabilityMs Integer 500-30000; Integer 0-5000 aktionsspezifische Template-Standards Optionales Beobachtungsfenster und Haltezeit. Runtime begrenzt Werte auf geschützte Grenzen.
actionDispatched boolean berechnet True erst, nachdem die Seite wirklich berührt wurde. Bei true dürfen Agenten Sends/Submits nicht blind doppeln.
guardedCommit.transitionId string generiert Korrelierter Identifier für eine geschützte Transition durch Dispatch und Verifikation.
guardedCommit.dispatchStatus dispatched | blocked_precondition | blocked_goal | blocked_coordinator berechnet Sagt, ob die Handlung ausgelöst wurde oder vor Seitenkontakt blockiert blieb.
guardedCommit.verificationStatus verified_success | verified_fail | indeterminate | skipped | pending berechnet Ergebnis-Klassifikation nach der Handlung.
guardedCommit.indeterminateReason no_signal_yet | ambiguous_signal | page_navigated | frame_destroyed | timeout | eval_error | null null Erklärt, warum CLS Erfolg oder Fehlschlag nicht beweisen konnte.
guardedCommit.retryAdvice safe_to_retry | do_not_retry | check_postcondition_first berechnet Leitet Wiederherstellung nach Fehlschlag oder Unklarheit.
guardedCommit.preconditionVerdict / outcomeVerdict satisfied | failed | unknown | null berechnet Zeigt, ob das geprüfte Voraussetzung- oder Nachbedingungs-Set bestanden hat.
guardedCommit.failedAssertions[] factKey, op, expected, observed, passed, error nur bei fehlgeschlagenen oder unbekannten Assertions Zeigt, welche Assertion Block, Fehlschlag oder Unklarheit verursacht hat.
guardedCommit.startedAt / completedAt / durationMs Integer-Zeitstempel; Integer-Dauer berechnet Zeigt, wann die geschützte Verifikation begann, wann sie endete und wie lange sie dauerte.
stage / verifyState / retryAdvice string; verified | likely | uncertain | failed; Retry-Hinweis oder null berechnet, wenn vom Tool unterstützt Kompakte Top-Level-Orientierung, wo das Tool stoppte, wie stark Ad-hoc-Verifikation war und ob Recovery Vorsicht braucht.
status / reasonCode / retryable / retryAfterMs Top-level Antwortsignale berechnet Kompakte Tool-Ergebnisfelder für blockierte, teilweise, fehlgeschlagene oder retryfähige Ausgänge.
Agenten-Werkzeuge

MCP-Tools für Agenten. Diese Variablen und Werkzeugnamen sind für Agenten und Integratoren gedacht. Sie sind keine normalen Bedienbefehle für Menschen in der Oberfläche.

Variable Bedeutung
nova.goal_register Ein Ziel festhalten
nova.guarded_send_message Nachricht mit Ergebnisprüfung senden
nova.guarded_submit_form Formular mit Ergebnisprüfung absenden
nova.guarded_switch_model Modellwechsel mit Ergebnisprüfung ausführen
nova.guarded_switch_sandbox Sandbox-Wechsel mit Ergebnisprüfung ausführen
nova.guarded_login Geschützte Anmeldung ausführen
nova.perceive Liest die aktuelle Seite und kann den aktiven Closed-Loop-Zielkontext liefern.
nova.click_selector Klickt einen Selektor oder eine CTA-Referenz; Commit-Point-Klicks können einen Transition Contract nutzen und ein Guarded-Commit-Ergebnis zurückgeben.
nova.type_selector Tippt in einen Selektor; Submit-artiges Tippen kann einen Transition Contract nutzen und ein Guarded-Commit-Ergebnis zurückgeben.