Was macht Notebook-Bereinigung?
Die automatische Auswahl durch den Hauptprozess oder seinen benannten Eigentümer verwendet immer nur
scope=current-task (siehe unten), niemals den sitzungsweiten Standard. Verwende dies nur, wenn nachgewiesen verwertbare Aufzeichnungen existieren, nachdem das Ergebnis und die erforderlichen Prüfungen abgeschlossen sind und nachdem die Aufgaben-Kratzbereinigung unter Verwendung ihrer Eigentums-/Link-Informationen beendet ist. Starte andernfalls keinen Bereinigungsworkflow. Aufbewahrungsanweisungen, angeforderte Notebook-Ergebnisse, erforderliche Originale und noch verwendete Links sind Ausnahmen. Verschiebe oder archiviere sie nicht nur, um eine Löschung zu ermöglichen. Pause, Blockierer, Genehmigungswartezeit, Zugende, Agentenstopp und Abbruch ohne Verwerfung sind kein Abschluss; bewahre die erforderliche Fortsetzung auf. Ein direkter öffentlicher Aufruf ohne diesen Bereich autorisiert das Entfernen des gesamten Task-Notebook-Verzeichnisses für diese Cursor-Sitzung, einschließlich abgeschlossener Aufzeichnungen. Für diesen öffentlichen Standard warte nicht auf den Aufgabenabschluss oder frage nach einer zweiten Bestätigung.
Sitzungsweiter öffentlicher Standard
Nimm die aktuelle session_id nur, wenn sie explizit im Cursor-Aufgabenkontext verfügbar ist. Mit Node.js-Built-ins berechne sessionKey als Buffer.from(session_id, 'utf8').toString('hex'), dann berechne das exakte Ziel als path.join(os.tmpdir(), 'scope-focus', 'task-notebook', sessionKey). Erfordere eine nicht leere Sitzungs-ID. Wenn sie nicht verfügbar ist, lösche nichts und melde, dass das Notebook der aktuellen Sitzung nicht identifiziert werden kann. Leite niemals eine Sitzung aus einer Verzeichnisliste, einem alten Notebook oder einer anderen Aufgabe ab.
Wenn das Ziel fehlt, melde, dass nichts gelöscht werden musste. Wenn vorhanden, überprüfe, ob das Scope-Focus-Notebook-Root und das Ziel echte Verzeichnisse und keine symbolischen Links sind. Wenn plan.md existiert, erfordere es als reguläre Datei, keinen Symlink, und erfordere, dass sein Session:-Header mit der aktuellen Sitzungs-ID übereinstimmt. Zähle seinen Inhalt auf und überprüfe das exakte Ziel und die Ausschlüsse vor der Löschung. Folge keinen Links außerhalb des Ziels und lösche keine anderen Sitzungsverzeichnisse, Repository-Dateien oder anderweitig gespeicherte HTML-Berichte.
Lösche nur das verifizierte Ziel mit fs.rmSync(target, { recursive: true }), ohne force oder Globs. Bestätige danach, dass das Ziel nicht mehr vorhanden ist, und melde das Ergebnis. Wenn der Besitz oder das Ziel mehrdeutig ist, lösche nichts und melde den genauen Grund. Erstelle kein Ersatz-Notebook automatisch.
scope=current-task
Verwende automatisch für berechtigte Aufzeichnungen der aktuellen Aufgabe oder auf eine explizite Anforderung, die diesen Bereich nennt. Es autorisiert niemals die sitzungsweite Löschung. Warte auf das tatsächliche substanzielle Ergebnis, die erforderlichen Nachweise und jede ausgewählte oder obligatorische CLEAN sowie das abschließende Notebook-Ergebnis mit noch ausstehender Bereinigung. Behalte Aufzeichnungen, die für die Fortsetzung benötigt werden, solange eine dieser Bedingungen nicht erfüllt ist.
Erfordere den genauen Aufgabenschlüssel, seine Beziehung zu dieser abgeschlossenen Ausführung und entweder eine explizit verfügbare aktuelle session_id oder einen explizit bereitgestellten Notebook-plan.md-Pfad für dieselbe ausgewählte Aufgabe unter dem manuellen Fortsetzungsvertrag des Task-Notebooks. Suche nicht nach Notebooks oder leite die aktuelle Sitzung aus Verzeichnissen oder alten Aufzeichnungen ab. Für eine aktuelle Sitzung berechne den vorhandenen sitzungsschlüsselbasierten Pfad wie oben. Für einen bereitgestellten manuellen Pfad validiere den ursprünglichen Session:-Header gegen sein sitzungsschlüsselbasiertes Verzeichnis und die explizite Beziehung zu dieser Aufgabe; weise es nicht der aktuellen Sitzung zu.
Löse das tatsächliche os.tmpdir() mit fs.realpathSync auf. Erfordere, dass das Notebook-Sitzungsverzeichnis direkt innerhalb seines scope-focus/task-notebook-Namensraums liegt. Der Namensraum, das Sitzungs- und Aufgabenverzeichnis müssen echte Verzeichnisse und keine symbolischen Links sein; der Eintragsplan muss, wenn vorhanden, eine reguläre Datei sein. Validiere die kanonische Enthaltenheit und jede betroffene Pfadkomponente vor der Mutation. Ein Aufgabenschlüssel muss ein dateisystem-sicherer Basisname sein, niemals ein Trennzeichen, . oder ... Überprüfe Session:, Task:, direkte Auswahl oder automatische Auswahl mit ihrer Reihenfolgenquelle und -bedarf sowie die genaue Ausführungszuordnung. Der bereitgestellte Root-Locator des Hauptprozesses hat Vorrang vor dem lokalen Hook-Locator eines Kindes; Metadaten allein gewähren kein Eigentum. Ein bereitgestellter manueller Pfad muss dieselben Standort- und Besitzprüfungen bestehen wie ein berechneter.
Zähle nur die exakten Ziele und Ausschlüsse auf. Entferne das Aufgaben-Schlüsselverzeichnis nur, wenn sein Inhalt nachweislich Aufzeichnungen dieser Ausführung sind; bewahre erforderliche Originale, Ergebnisse, andere Aufgaben und jeden unbekannten oder mehrdeutigen Eintrag. Unbekannter Besitz blockiert die Löschung dieses Ziels, nicht die Erlaubnis, sein übergeordnetes Verzeichnis zu löschen. Entferne den Sitzungseintrag plan.md nur, wenn sein Header immer noch diese Ausführung nennt. Wenn er jetzt zu einer anderen Aufgabe gehört, bewahre ihn und verwende etablierte Besitzaufzeichnungen für das Verzeichnis dieser Aufgabe; dieser andere Header berechtigt nicht zum Entfernen einer anderen Aufgabe. Fehlende oder widersprüchliche Beweise autorisieren keine Löschung.
Überprüfe die exakten Pfade, den Besitz, den Abschluss und die Ausschlüsse unmittelbar vor der Löschung erneut. Verwende Node.js-Built-ins für die nachgewiesenen Ziele, ohne force, Globs oder das Folgen von Symlinks. Entferne Sitzungs- und Namensraum-übergeordnete Verzeichnisse nur, wenn sie tatsächlich leer sind; bewahre andere Aufgabenschlüssel und Sitzungen auf. Bestätige, dass die ausgewählten Ziele nicht mehr vorhanden sind und die Ausschlüsse danach bestehen bleiben. Wenn bereits nicht vorhanden, erstelle nichts. Melde das tatsächliche Ergebnis oder die konkrete Einschränkung; erstelle kein Ersatz-Notebook, keine Migration oder kein Archiv.
Wenn die erforderliche berechtigte Löschung unvollendet bleibt, bewahre die erforderliche Fortsetzung auf und melde die konkrete verbleibende Arbeit. Unbekannte oder behaltene Aufzeichnungen sind von der automatischen Löschung ausgeschlossen, nicht die Erlaubnis, ihr übergeordnetes Verzeichnis zu entfernen. Beende den Vorgang nicht als vollständig, solange noch obligatorische Arbeit ansteht.