Archive
La zone Archive/ du coffre : tout ce qui est terminé ou mis de côté va ici, et
l'archivage est toujours un déplacement — jamais une suppression. La suppression définitive est /remove. Le
couple backend d'un projet est archivé et restauré avec son dossier.
Couche de base
À lire avant d'agir, chacun sous ../../para/<fichier>.md relatif au répertoire de base de cette compétence — ils contiennent les règles partagées, ne les récitez pas de mémoire :
../../para/paths.md— toujours, y compris « Langue » : les chaînes ci-dessous proviennent delang/<LANG>.md../../para/find-target.md— pour les sous-commandes qui prennent une cible../../para/move.md— toujours../../para/confirm.md— toujours../../para/dod.md— lorsque la cible est un projet../../para/tasks.md— lorsque la cible est un projet : les opérations, l'appairage, les projets de domaine../../para/note-format.md— lors de l'édition du frontmatter ; « Champs hérités »
Sous-commandes
Le premier mot de $ARGUMENTS choisit la sous-commande. list et restore sont les seuls
mots-clés — tout le reste est la cible d'un archivage, donc /archive project c archive
ce projet. $ARGUMENTS vide → affiche les trois sous-commandes et demande.
<target> — mettre dans l'archive
-
Trouver la cible selon
find-target.md, opération « Archiver ». -
Si la cible est un projet :
- Ouvrir les tâches d'abord. Lire les tâches du projet appairé (
task.list, ouvertes, avecproject_ref). Si des tâches sont ouvertes, les lister et demander une fois (Niveau 1,5) ce qu'il faut en faire : les compléter (task.completesur chacune), les déplacer vers un projet de domaine (task.moveavecarea) ou les laisser dans le projet archivé. Là où l'adaptateur indique quetask.completen'est « pas pris en charge », le premier choix est la chaînearchive.close_in_appà la place, et rien n'est appelé pour cela. Transporter la réponse avant de continuer. Souspairing: separate, un projet non appairé avec un dossierTasks/hérité n'a pas de côté backend ;dod.mdexplique comment ses tâches sont vérifiées. Souspairing: noneles tâches sont les propres notesTasks/du projet et se déplacent avec le dossier. - Appliquer
dod.mdet nommer chaque condition qui n'est pas remplie. Ce fichier décide si le résultat est terminé ou abandonné ; ne reproduisez pas son raisonnement ici, et ne l'adoucissez pas. - Déplacer le dossier entier, structure interne inchangée, de
Projects/PROJ-xxxx <titre>/versArchive/PROJ-xxxx <titre>/. Le nom reste exactement tel quel : l'identifiant reste avec le projet à vie, et l'émission d'identifiant scanneArchive/pour le garder réservé (project-id.md). project.archivelorsque appairé (toujours, souspairing: none; une opération nulle là). Conservertasks_ref:dans la vue d'ensemble — la restauration en a besoin.- Les champs hérités (
statuset les autres) sont laissés exactement tels quels (note-format.md) : un projet archivé conserve son historique.
- Ouvrir les tâches d'abord. Lire les tâches du projet appairé (
-
Si la cible est une note autonome (Domaine, Ressource, ou une note égarée de
Inbox/) : déplacer le seul fichier.mddansArchive/.- Les domaines sont par définition continus et ne sont normalement pas archivés. Demander ce qui a été voulu (Niveau 1,5) — cela signifie généralement que la note est obsolète, pas que la responsabilité a pris fin.
- Une note de tâche héritée à l'intérieur d'un projet qui n'est pas archivé : la déplacer ne casse rien d'utile et n'est probablement pas ce qui a été voulu — demander (Niveau 1,5). Les tâches sont fermées dans le backend maintenant.
-
Vérifier les collisions de nom de base avant de déplacer (
move.md,note-format.md). Un doublon rend chaque lien vers ce nom ambigu — Niveau 1,5, demander plutôt que déplacer. -
Fermer la boucle — projets uniquement. Avant de signaler, poser une question et attendre la réponse : la chaîne
archive.ask_changed. Pas ce qui a été produit — la condition 2 dedod.mdcouvre déjà l'artefact — mais ce qui est différent maintenant que c'est fini, et si cela en valait le coût.Avant de demander, lire la section
project.valueà haute voix — le bénéfice que l'utilisateur a noté lorsque le projet a commencé (note-format.md, « Trois sections sur le résultat ») — et demander s'il s'est réalisé avec la chaînearchive.expected({value}= ce qu'il a écrit, par exemple « −5 heures de relecture par semaine »). Si la section est vide ou absente, poser la question telle quelle, sans inventer une attente.Écrire la section
project.what_changedà la fin du corps de la vue d'ensemble. Sa première ligne est le résultat selondod.md— la chaîneproject.outcome.completedouproject.outcome.abandoned({reason}dans les mots de l'utilisateur) — puis la réponse de l'utilisateur dans ses propres mots ; ne la résumez pas dans les vôtres. Si la réponse nomme quelque chose qui survit au projet, c'est la condition 4 dedod.mdqui parle ; acheminez-la versAreas/ouResources/plutôt que de la laisser dans l'archive.Si l'utilisateur ne veut pas répondre, écrire uniquement la ligne de résultat et dire que la boucle a été sautée. N'inventez jamais le reste.
-
Signaler : ce qui a été déplacé, son nouveau chemin, la ligne de résultat, ce qu'il est advenu des tâches ouvertes, si le projet backend a été archivé, tout avertissement.
list — afficher le contenu de l'archive
Lecture uniquement. N'ouvrez jamais les notes au-delà de ce qui est nommé ci-dessous.
- Lister
Archive/— à la fois les dossiers de projets et les fichiers.mdisolés. - Pour chaque dossier de projet, lire le frontmatter de la vue d'ensemble (
id,deadline) et la première ligne de la sectionproject.what_changed, si la section existe. - Afficher deux sections dans
LANG, chacune alphabétique, avec un nombre dans l'en-tête (les chaînesarchive.list.projectsetarchive.list.notes). Le résultat affiché est la première ligne sans son point pour un projet terminé, et seulement le mot avant le deux-points pour un projet abandonné (la raison n'est pas répétée) ; la date limite est la chaînearchive.list.deadline; affichée ici avec les chaînes anglaises :
**Projets archivés (N)**
1. PROJ-0005 Projet D — Terminé, date limite 2026-09-30
2. PROJ-0007 Projet F — Abandonné
3. PROJ-0003 Projet C — aucun résultat enregistré
4. Ancien projet — aucune métadonnée
**Notes archivées (N)**
1. Une note
Le résultat est lu uniquement lorsque la première ligne non vide de la section project.what_changed
est exactement la chaîne project.outcome.completed ou commence par la
chaîne project.outcome.abandoned jusqu'à son deux-points. Sinon — la section est manquante,
ou elle s'ouvre avec les mots de l'utilisateur, comme dans les projets archivés avant cette règle — afficher
la chaîne archive.no_outcome ; n'inférez jamais un résultat à partir d'un texte libre ou d'un status
hérité. La chaîne common.no_metadata — aucun frontmatter du tout. Une archive vide est une
réponse valide : le dire simplement.
restore <target> — ramener quelque chose
- Trouver la cible selon
find-target.md, opération « Restaurer depuis l'archive ». - Déterminer où cela retourne. Un projet retourne dans
Projects/. Une note retourne dans le dossier PARA que son frontmatter implique —area/<slug>→Areas/,resource/<slug>→Resources/. Si les tags ne le disent pas, ou si la note est antérieure à la convention, demander où elle appartient. Rien n'est restauré dansInbox/— ce n'est pas une destination (paths.md). - Vérifier les collisions de nom de base comme ci-dessus, puis déplacer.
- Le côté tâches — projets uniquement.
project.restoreavec leref. Souspairing: separatesanstasks_ref:, proposer de créer le couple (tasks.md« Appairage ») ; sur oui,project.create, ajouter une clétasks_ref:et la remplir. Souspairing: noneil n'y a pas de couple à proposer. Laisser les cases cochées dans la sectionproject.dodet la sectionproject.what_changedtelles quelles — les éditer est de Niveau 2 et rarement souhaité. - Signaler : ce qui est revenu, où, et l'état de son couple backend.
Notes
- Ne jamais rien supprimer ici. L'archivage est toujours un déplacement vers
Archive/; si l'utilisateur veut que quelque chose disparaisse, c'est/remove. - Tout le texte visible par l'utilisateur et chaque valeur de frontmatter dans
LANG; les chaînes fixes proviennent delang/<LANG>.md.