Que fait Nettoyage du Notebook ?
La sélection automatique par le 'Main' ou son propriétaire désigné utilise toujours uniquement
scope=current-task ci-dessous, jamais la valeur par défaut de toute la session. Utilisez-la lorsqu'il existe
des enregistrements jetables avérés, après le résultat et les vérifications requises, et après que le nettoyage
des éléments temporaires de la tâche soit terminé en utilisant leur propriété/liens. Sinon, ne lancez pas
de workflow de nettoyage. Les instructions de conservation, les résultats demandés du Notebook, les
originaux requis et les liens encore utilisés sont des exclusions. Ne les déplacez pas et ne les archivez pas
uniquement pour permettre la suppression. Les pauses, les blocages, les attentes d'approbation, la fin de tour,
l'arrêt de l'agent et l'annulation sans abandon ne sont pas une complétion ; préservez la poursuite nécessaire.
Une invocation publique directe sans cette portée autorise la suppression de l'intégralité du répertoire Task Notebook pour cette session Cursor, y compris les enregistrements terminés. Pour cette valeur par défaut publique, n'attendez pas la fin de la tâche et ne demandez pas de deuxième confirmation.
Valeur par défaut publique pour toute la session
Prenez le session_id actuel uniquement lorsqu'il est explicitement disponible dans le
contexte de la tâche Cursor. Avec les modules intégrés de Node.js, calculez sessionKey comme
Buffer.from(session_id, 'utf8').toString('hex'), puis calculez la cible exacte
comme path.join(os.tmpdir(), 'scope-focus', 'task-notebook', sessionKey).
Exigez un identifiant de session non vide. S'il est indisponible, ne supprimez rien et signalez
que le notebook de la session actuelle ne peut pas être identifié. N'inférez jamais une session
à partir d'un listing de répertoire, d'un ancien notebook ou d'une autre tâche.
Si la cible est absente, signalez que rien ne nécessitait de suppression. Si elle est présente, vérifiez
que la racine du notebook Scope Focus et la cible sont des répertoires réels, pas des liens symboliques. Lorsque
plan.md existe, exigez qu'il s'agisse d'un fichier normal, pas d'un lien symbolique, et exigez que son
en-tête Session: corresponde à l'identifiant de session actuel. Énumérez son contenu et
revérifiez la cible exacte et les exclusions avant la suppression. Ne suivez pas les liens
en dehors de la cible et ne supprimez pas d'autres répertoires de session, fichiers de dépôt
ou rapports HTML stockés ailleurs.
Supprimez uniquement la cible vérifiée avec fs.rmSync(target, { recursive: true }),
sans force ni globs. Confirmez ensuite que la cible est absente et signalez le
résultat. Si la propriété ou la cible est ambiguë, ne supprimez rien et signalez la
raison exacte. Ne créez pas automatiquement un notebook de remplacement.
scope=current-task
Utilisez automatiquement pour les enregistrements éligibles de la tâche en cours ou sur une demande explicite nommant cette portée. Elle n'autorise jamais la suppression de toute la session.
Attendez le résultat substantiel réel, les preuves requises et chaque CLEAN sélectionné ou obligatoire, ainsi que le résultat final du notebook avec le nettoyage encore en attente. Conservez les enregistrements nécessaires à la poursuite tant que l'une de ces conditions n'est pas remplie.
Exigez la clé de tâche exacte, sa relation avec cette exécution terminée, et
soit un session_id actuel explicitement disponible, soit un chemin plan.md de notebook
explicitement fourni pour la même tâche sélectionnée sous le contrat de continuation manuelle du Task Notebook.
Ne recherchez pas de notebooks et n'inférez pas la session actuelle
à partir de répertoires ou d'anciens enregistrements. Pour une session en cours, calculez le chemin
session-key existant comme ci-dessus. Pour un chemin manuel fourni, validez l'en-tête Session:
d'origine par rapport à son répertoire session-key et à la relation explicite
avec cette tâche ; ne le réaffectez pas à la session actuelle.
Résolvez le os.tmpdir() réel avec fs.realpathSync. Exigez que le répertoire de session
soit directement à l'intérieur de son espace de noms scope-focus/task-notebook. Les
répertoires de l'espace de noms, de la session et de la tâche doivent être des répertoires réels, pas des liens symboliques ;
le plan d'entrée, s'il est présent, doit être un fichier normal. Validez le confinement
canonique et chaque composant de chemin affecté avant la mutation. Une clé de tâche doit
être un nom de base compatible avec le système de fichiers, jamais un séparateur, . ou ... Vérifiez Session:,
Task:, la sélection directe ou la sélection automatique avec sa source d'ordre et son besoin,
et l'association d'exécution exacte. Le localisateur racine fourni par le 'Main' a priorité
sur le localisateur local d'un enfant ; les métadonnées seules n'accordent aucune propriété. Un chemin manuel fourni
doit passer les mêmes vérifications d'emplacement et de propriété qu'un chemin calculé.
Énumérez uniquement les cibles et exclusions exactes. Supprimez le répertoire de la clé de tâche
uniquement lorsque son contenu est constitué d'enregistrements avérés de cette exécution ;
conservez les originaux requis, les résultats, les autres tâches et toute entrée inconnue ou ambiguë. Une propriété
inconnue bloque la suppression de cette cible, mais pas la permission de supprimer son parent.
Supprimez le plan.md de la session uniquement si son en-tête nomme encore cette exécution.
S'il appartient maintenant à une autre tâche, conservez-le et utilisez les enregistrements de propriété établis
pour le répertoire de cette tâche ; cet en-tête différent n'est pas une autorisation pour supprimer
une autre tâche. Une preuve manquante ou contradictoire n'autorise aucune suppression.
Revérifiez les chemins exacts, la propriété, la complétion et les exclusions immédiatement avant
la suppression. Utilisez les modules intégrés de Node.js pour les cibles avérées, sans force, globs ou
suivi de liens symboliques. Supprimez le répertoire parent de la session et de l'espace de noms uniquement s'ils
sont effectivement vides ; conservez les autres clés de tâche et sessions. Confirmez que les cibles
sélectionnées sont absentes et que les exclusions subsistent ensuite. Si déjà absentes,
ne créez rien. Signalez le résultat réel ou la limitation concrète ; ne créez pas
de notebook, de migration ou d'archive de remplacement.
Si une suppression éligible requise reste inachevée, conservez la poursuite nécessaire et signalez le travail restant concret. Les enregistrements inconnus ou conservés sont exclus et non une permission de supprimer leur parent. Ne revendiquez pas une complétion totale tant qu'un travail obligatoire reste en cours.