Limpeza do Notebook
A seleção automática pelo Main ou seu proprietário designado sempre usa apenas
scope=current-task abaixo, nunca o padrão de sessão inteira. Use quando existirem
registros descartáveis comprovados, após o resultado e verificações necessárias e após
a limpeza do scratch da tarefa ter sido concluída usando sua propriedade/links. Caso contrário, não inicie
um fluxo de limpeza. Instruções de retenção, resultados solicitados do Notebook, originais
necessários e links ainda em uso são exclusões. Não mova nem arquive apenas para
permitir a exclusão. Pausa, bloqueador, espera de aprovação, fim de turno, parada do agente e
cancelamento sem descarte não são conclusão; preserve a continuação necessária.
Uma invocação pública direta sem esse
escopo autoriza a remoção de todo o diretório do Notebook da Tarefa para esta sessão do
Cursor, incluindo registros concluídos. Para esse padrão público, não aguarde a
conclusão da tarefa nem peça uma segunda confirmação.
Padrão público de sessão inteira
Pegue o session_id atual somente quando estiver explicitamente disponível no
contexto da tarefa do Cursor. Com módulos internos do Node.js, compute sessionKey como
Buffer.from(session_id, 'utf8').toString('hex'), depois compute o alvo exato
como path.join(os.tmpdir(), 'scope-focus', 'task-notebook', sessionKey).
Exija um ID de sessão não vazio. Se ele não estiver disponível, não exclua nada e relate
que o notebook da sessão atual não pode ser identificado. Nunca infira uma sessão
a partir de uma lista de diretórios, de um notebook antigo ou de outra tarefa.
Se o alvo estiver ausente, relate que nada precisava ser excluído. Se presente, verifique
se a raiz do notebook do Scope Focus e o alvo são diretórios reais, não links simbólicos. Quando
plan.md existir, exija que seja um arquivo normal, não um link simbólico, e exija que seu
cabeçalho Session: corresponda ao ID da sessão atual. Enumere seu conteúdo e
reverifique o alvo exato e as exclusões antes da exclusão. Não siga links para fora
do alvo e não exclua outros diretórios de sessão, arquivos de repositório ou relatórios HTML armazenados em outro lugar.
Exclua apenas o alvo verificado com fs.rmSync(target, { recursive: true }),
sem force ou globs. Confirme que o alvo está ausente depois e relate o
resultado. Se a propriedade ou o alvo forem ambíguos, não exclua nada e relate o
motivo exato. Não crie um notebook substituto automaticamente.
scope=current-task
Use automaticamente para registros elegíveis da tarefa atual ou em uma solicitação explícita nomeando este escopo. Nunca autoriza a exclusão de sessão inteira. Aguarde o resultado real substantivo, as evidências necessárias e cada CLEAN selecionado ou obrigatório, além do resultado final do notebook com limpeza ainda pendente. Mantenha os registros necessários para continuação enquanto qualquer uma dessas condições não for atendida.
Exija a chave exata da tarefa, seu relacionamento com esta execução concluída,
ou um session_id atual explicitamente disponível ou um caminho plan.md do notebook
fornecido explicitamente para a mesma tarefa selecionada sob o contrato de continuação manual do Task Notebook.
Não pesquise notebooks nem infira a sessão atual a partir de diretórios ou registros antigos. Para uma
sessão atual, compute o caminho da chave de sessão existente acima. Para um caminho manual
fornecido, valide o cabeçalho original Session: em relação ao seu diretório de chave de sessão e ao relacionamento explícito
com esta tarefa; não o reatribua à sessão atual.
Resolva os.tmpdir() real com fs.realpathSync. Exija que o diretório da sessão do notebook
do namespace scope-focus/task-notebook. O
namespace, a sessão e os diretórios da tarefa devem ser diretórios reais, não links simbólicos;
o plano de entrada, quando presente, deve ser um arquivo normal. Valide a contenção canônica
e cada componente de caminho afetado antes da mutação. Uma chave de tarefa deve
ser um basename seguro para o sistema de arquivos, nunca um separador, . ou ... Verifique Session:,
Task:, seleção direta ou seleção automática com sua fonte de ordem e necessidade
e a associação de execução exata. O localizador raiz fornecido pelo Main tem prioridade
sobre o localizador de hook local de um filho; metadados sozinhos não concedem propriedade. Um caminho manual
fornecido deve passar as mesmas verificações de localização e propriedade que um computado.
Enumere apenas os alvos e exclusões exatos. Remova o diretório da chave da tarefa
somente quando seu conteúdo for registros comprovados desta execução; preserve
originais necessários, resultados, outras tarefas e cada entrada desconhecida ou ambígua. Propriedade desconhecida
bloqueia a exclusão desse alvo, não a permissão para excluir seu pai.
Remova o plan.md da entrada da sessão apenas se seu cabeçalho ainda nomear esta execução.
Se agora pertencer a outra tarefa, preserve-o e use registros de propriedade estabelecidos
para o diretório desta tarefa; esse cabeçalho diferente não é autoridade para remover outra tarefa. Prova ausente ou contraditória não autoriza nenhuma exclusão.
Reverifique os caminhos exatos, propriedade, conclusão e exclusões imediatamente antes
da exclusão. Use módulos internos do Node.js para os alvos comprovados, sem force, globs ou
seguir links simbólicos. Remova os diretórios pai da sessão e do namespace apenas se
estiverem realmente vazios; preserve outras chaves de tarefa e sessões. Confirme que os alvos
selecionados estão ausentes e que as exclusões permanecem depois. Se já estiverem ausentes,
não crie nada. Relate o resultado real ou limitação concreta; não crie
um notebook substituto, migração ou arquivo.
Se a exclusão elegível necessária permanecer inacabada, preserve a continuação necessária e relate o trabalho concreto restante. Registros desconhecidos ou retidos são excluídos da exclusão automática, não permissão para remover seu pai. Não reivindique conclusão total enquanto houver trabalho obrigatório restante.