Quand FerrFlow rencontre une erreur, il affiche un code comme error[E2001] avec un lien vers cette page. Utilisez le code pour trouver la cause et la solution.
Erreurs de configuration
E1001 : Fichier de config introuvable
Le fichier de config indiqué via --config n'existe pas.
E1002 : Échec du parsing ferrflow.json
Le fichier ferrflow.json contient du JSON invalide.
E1003 : Échec du parsing ferrflow.json5
Le fichier ferrflow.json5 contient du JSON5 invalide.
E1004 : Échec du parsing ferrflow.toml
Le fichier ferrflow.toml contient du TOML invalide.
E1005 : Erreur de sérialisation TOML
Erreur interne lors de l'écriture TOML.
E1006 : Échec du parsing .ferrflow
Le fichier .ferrflow contient du JSON invalide.
E1007 : Erreur de sérialisation .ferrflow
Erreur interne lors de l'écriture du dotfile.
E1008 : Résolution de chemin impossible
Un chemin dans la config n'a pas pu être résolu en chemin absolu.
E1009 : Écriture du loader temporaire impossible
Impossible d'écrire le loader JS/TS temporaire.
E1010 : Impossible d'exécuter tsx
Le runtime tsx est introuvable pour les configs .ts.
E1011 : Impossible d'exécuter node
Le runtime node est introuvable pour les configs .js.
E1012 : Évaluation de la config échouée
Le fichier JS/TS a levé une erreur lors de l'évaluation.
E1013 : Sortie de config invalide
Le fichier JS/TS a produit une sortie non UTF-8.
E1014 : JSON invalide depuis la config
Le fichier JS/TS n'a pas produit de JSON valide.
E1015 : Lecture du fichier impossible
Le fichier de config existe mais ne peut pas être lu.
E1016 : Plusieurs fichiers de config
Plusieurs fichiers de config trouvés dans le répertoire.
E1017 : Fichier déjà existant
ferrflow init lancé alors qu'un fichier de config existe déjà.
E1018 : Chemin hors du dépôt
Un chemin de versionedFiles est absolu, ou sort de la racine du dépôt avec ... FerrFlow ne lit et n'écrit les fichiers de version qu'à l'intérieur du dépôt : écrivez le chemin relativement à la racine.
E1019 : Le pattern d'include ne trouve aucun fichier
Une entrée de include ne correspond à aucun fichier. Les patterns sont résolus depuis le répertoire du fichier de config racine. Corrigez le chemin ou supprimez le pattern.
E1020 : Fichier inclus invalide
Un fichier chargé via include ne décrit pas un package valide. Soit il déclare workspace, include ou package, qui n'ont leur place que dans la config racine, soit son contenu ne se désérialise pas en package. Un fichier inclus décrit un seul package, avec les mêmes clés qu'une entrée package.
E1021 : Package inclus hors du dépôt
Le path d'un package inclus pointe hors de la racine du dépôt. Dans un fichier inclus, path est relatif au répertoire de ce fichier, et vaut ce répertoire quand il est vide.
E1022 : Nom de package en double
Deux packages portent le même name, qu'ils viennent de la config racine ou d'un include. L'erreur indique les deux chemins. Renommez l'un des deux.
E1023 : Package sans chemin
Un package de la config racine n'a pas de path. Renseignez-le relativement à la racine du dépôt, ou déplacez le package dans son propre fichier listé sous include, où path vaut par défaut le répertoire de ce fichier.
E1024 : Fichier versionné introuvable
Un package que cette exécution allait publier déclare une entrée versionedFiles dont le fichier n'est pas sur le disque. L'exécution s'arrête au moment du plan plutôt qu'au moment de l'écriture, où le même problème apparaîtrait sous la forme d'une simple erreur de lecture.
La cause habituelle est un chemin écrit relativement au package plutôt qu'à la racine du dépôt. package.path n'est pas un préfixe que FerrFlow ajoute pour vous :
[[package]]
name = "api"
path = "packages/api"
[[package.versioned_files]]
path = "Cargo.toml" # faux, cherché à la racine du dépôt
# path = "packages/api/Cargo.toml" # correct
L'erreur indique le chemin qu'elle suppose correct. ferrflow validate signale le même problème pour tous les packages configurés, y compris ceux que cette exécution n'aurait pas touchés.
Erreurs de validation
E1100 : Spec de repo invalide
L'argument --repo ne correspond pas au format attendu owner/repo.
E1101 : Erreur API GitHub
L'API GitHub a retourné une erreur lors de la validation distante.
E1102 : Erreur API GitLab
L'API GitLab a retourné une erreur lors de la validation distante.
E1103 : UTF-8 invalide
Le fichier de config distant contient un encodage UTF-8 invalide.
E1104 : Parsing de la config distante échoué
Le fichier de config distant n'a pas pu être parsé.
E1105 : Fichier de config distant introuvable
Le chemin spécifié n'existe pas dans le dépôt distant.
E1106 : Aucun fichier de config trouvé
Aucun fichier de config FerrFlow dans le dépôt distant.
E1107 : --ref nécessite --repo
Le flag --ref a été utilisé sans --repo.
Opérations Git
E2001 : Pas un dépôt git
Le répertoire courant n'est pas dans un dépôt git.
E2002 : Dépôt bare non supporté
FerrFlow ne supporte pas les dépôts git bare.
E2003 : Tag existant
Le tag que FerrFlow veut créer existe déjà.
E2004 : Push de branche échoué
Impossible de push la branche de release.
E2005 : Push rejeté
Le remote a rejeté le push.
E2006 : Push des tags échoué
Impossible de push les tags vers le remote.
E2007 : Push des tags flottants échoué
Impossible de force-push les tags flottants.
E2008 : Remote introuvable
Le remote git configuré n'existe pas.
E2009 : Vérification post-push échouée
Le commit de release n'a pas pu être vérifié sur la branche distante.
E2010 : Branche distante introuvable
La branche distante n'a pas été trouvée après le push.
E2011 : Release déjà en cours
Un autre ferrflow release détient le verrou de release .git/ferrflow.lock, ou le fichier de verrou n'a pas pu être créé. Un verrou laissé par un processus mort sur la même machine est repris automatiquement, et celui d'une autre machine au bout de six heures. Le message affiche le contenu du verrou pour savoir qui le détient.
E2012 : Force-push de la branche de release échoué
FerrFlow n'a pas pu force-push la branche de la PR ou MR de release. Le message reprend la sortie de git. Vérifiez que le token peut pousser sur cette branche et qu'aucune règle de protection n'y interdit le force-push.
E2013 : Inspection de la branche de release impossible
Avant de réutiliser la branche de release, FerrFlow lance git ls-remote, git fetch et git log dessus pour vérifier qu'elle ne contient que ses propres commits. L'une de ces commandes a échoué. La release continue : FerrFlow affiche un avertissement et fait comme si la branche ne contenait que ses commits.
E2014 : Suppression du tag distant échouée
ferrflow rollback n'a pas pu supprimer avec git push --delete un tag poussé par l'exécution échouée. Un tag absent du remote, ou qui pointe désormais vers un autre commit, est ignoré. Vérifiez que le token peut supprimer des tags, puis relancez le rollback.
E2015 : Revert échoué
ferrflow rollback n'a pas pu faire git revert sur le commit de release, par exemple parce qu'il entre en conflit avec des changements plus récents. Terminez le revert à la main. FerrFlow ne pousse jamais le revert : poussez la branche vous-même après vérification.
E2016 : Clone de shadow-release échoué
ferrflow shadow-release n'a pas pu cloner le dépôt dans un répertoire temporaire. Vérifiez que git est dans le PATH et que le répertoire temporaire du système est accessible en écriture.
API GitHub
E3001 : Création de release échouée
L'API GitHub Releases a retourné une erreur.
E3002 : Liste des releases échouée
Impossible de récupérer les releases existantes depuis l'API GitHub.
E3003 : Réponse des releases illisible
L'API GitHub a renvoyé une réponse dans un format inattendu.
E3004 : Publication de release échouée
Impossible de publier (sortir du brouillon) une release GitHub.
E3005 : Création de pull request échouée
L'API GitHub a retourné une erreur à la création de la PR.
E3006 : Réponse de PR illisible
L'API GitHub a renvoyé une PR dans un format inattendu.
E3007 : Champ manquant dans la réponse de PR
La réponse de l'API GitHub pour la PR ne contient pas le champ number ou node_id.
E3008 : Activation de l'auto-merge échouée
Impossible d'activer l'auto-merge sur la PR de release via l'API GraphQL.
E3009 : Réponse GraphQL illisible
L'API GraphQL de GitHub a renvoyé une réponse inattendue.
E3010 : Auto-merge échoué
La mutation GraphQL qui active l'auto-merge a renvoyé une erreur.
E3011 : Recherche de la PR de release échouée
La liste des pull requests ouvertes n'a pas pu être récupérée pendant que FerrFlow cherchait une PR de release existante à mettre à jour. Vérifiez le token et l'accès à l'API GitHub.
E3012 : Mise à jour de la PR de release échouée
FerrFlow a trouvé la PR de release ouverte, mais GitHub a refusé la mise à jour de son titre et de sa description. Vérifiez que le token a pull-requests: write.
E3013 : Requête GraphQL échouée
Une requête vers l'API GraphQL de GitHub a échoué avant d'obtenir une réponse exploitable, sur le réseau ou avec un statut HTTP d'erreur. FerrFlow appelle cette API pour créer le commit de release avec createCommitOnBranch quand FERRFLOW_BOT est défini.
E3014 : Erreur GraphQL
L'API GraphQL de GitHub a répondu par une erreur, ou createCommitOnBranch n'a renvoyé aucun identifiant de commit. Le message reprend le texte de l'erreur GitHub.
E3015 : Déplacement de la branche de release échoué
Quand FERRFLOW_BOT est défini, FerrFlow fait pointer la branche de release sur la tête de la branche cible via l'API refs de GitHub avant d'y créer le commit. GitHub a refusé la mise à jour, ou la création de la ref quand la branche n'existait pas encore. Vérifiez que le token a contents: write.
E3016 : Suppression de release échouée
ferrflow rollback n'a pas pu supprimer une release GitHub créée par l'exécution échouée. Supprimez-la à la main et relancez le rollback.
API GitLab
E3101 : Création de release échouée
L'API GitLab Releases a retourné une erreur.
E3102 : Création de merge request échouée
L'API GitLab a retourné une erreur à la création de la MR.
E3103 : Réponse de MR illisible
L'API GitLab a renvoyé une MR dans un format inattendu.
E3104 : Champ iid manquant
La réponse de l'API GitLab pour la MR ne contient pas le champ iid.
E3105 : Merge de la MR échoué
Impossible de merger la MR de release via l'API GitLab.
E3106 : Recherche de la MR de release échouée
La liste des merge requests ouvertes n'a pas pu être récupérée pendant que FerrFlow cherchait une MR de release existante à mettre à jour. Vérifiez le token et l'accès à l'API GitLab.
E3107 : Mise à jour de la MR de release échouée
FerrFlow a trouvé la MR de release ouverte, mais GitLab a refusé la mise à jour de son titre et de sa description. Vérifiez les droits du token sur le projet.
API Gitea
E3201 : Création de release échouée
L'API Gitea Releases a retourné une erreur à la création d'une release. Vérifiez que le token peut écrire dans le dépôt.
E3202 : Liste des releases échouée
Impossible de lister les releases depuis l'API Gitea pour chercher un brouillon de release existant pour le tag.
E3203 : Publication de release échouée
Impossible de publier (sortir du brouillon) une release Gitea.
API Bitbucket
E3301 : Résolution du tag de release échouée
Bitbucket n'a pas de releases. Sur Bitbucket Cloud, FerrFlow interroge plutôt l'API sur le nouveau tag pour en obtenir le lien, et cette requête a échoué. Vérifiez que le token peut lire le dépôt et que le tag a bien été poussé.
Fichiers de version
Les erreurs E4xxx concernent la lecture, l'écriture et le parsing des fichiers de version. Chaque format a sa propre plage de codes. Les codes UTF-8 invalide viennent de ferrflow validate, qui lit les fichiers versionnés comme des octets bruts ; les autres commandes signalent un fichier qui n'est pas en UTF-8 avec l'erreur de lecture du format.
E4101 : Lecture du fichier TOML impossible
FerrFlow n'a pas pu lire le fichier de version TOML (Cargo.toml, pyproject.toml) sur le disque.
E4102 : Syntaxe TOML invalide
Le fichier de version TOML ne se parse pas. Le message indique où se trouve l'erreur.
E4103 : Aucune version dans le fichier TOML
Aucun des champs package.version, workspace.package.version, project.version ou tool.poetry.version n'est renseigné. Un Cargo.toml qui déclare version.workspace = true tombe aussi ici quand le même fichier n'a pas de [workspace.package].version : faites pointer le fichier versionné vers le Cargo.toml racine du workspace.
E4104 : Écriture du fichier TOML impossible
L'écriture de la nouvelle version dans le fichier de version TOML (Cargo.toml, pyproject.toml) a échoué.
E4105 : UTF-8 invalide dans le fichier TOML
Le contenu du fichier de version TOML (Cargo.toml, pyproject.toml) n'est pas de l'UTF-8 valide.
E4201 : Lecture du fichier JSON impossible
FerrFlow n'a pas pu lire le fichier de version JSON (package.json, composer.json) sur le disque. Le même code couvre le checkpoint de release .git/ferrflow.checkpoint.json.
E4202 : Syntaxe JSON invalide
Le fichier de version JSON ne se parse pas. FerrFlow lève aussi ce code quand le checkpoint de release .git/ferrflow.checkpoint.json est corrompu ou a été écrit par une autre version de FerrFlow : supprimez ce fichier pour repartir de zéro.
E4203 : Aucune version dans le fichier JSON
Le fichier JSON n'a pas de champ version au premier niveau.
E4204 : Écriture du fichier JSON impossible
L'écriture de la nouvelle version dans le fichier de version JSON (package.json, composer.json) a échoué. FerrFlow le lève aussi quand il ne peut pas enregistrer ou supprimer le checkpoint de release, ou réécrire le manifeste d'un package dépendant (package.json ou Cargo.toml) pour suivre une dépendance bumpée.
E4205 : UTF-8 invalide dans le fichier JSON
Le contenu du fichier de version JSON (package.json, composer.json) n'est pas de l'UTF-8 valide.
E4301 : Lecture de Chart.yaml (helm) impossible
FerrFlow n'a pas pu lire le Chart.yaml déclaré avec format = "helm" sur le disque.
E4302 : Aucune version dans Chart.yaml (helm)
Le Chart.yaml déclaré avec format = "helm" n'a pas de champ version: au premier niveau.
E4303 : Écriture de Chart.yaml (helm) impossible
L'écriture de la nouvelle version dans le Chart.yaml déclaré avec format = "helm" a échoué.
E4304 : UTF-8 invalide dans Chart.yaml (helm)
Le contenu du Chart.yaml déclaré avec format = "helm" n'est pas de l'UTF-8 valide.
E4401 : Lecture du fichier XML impossible
FerrFlow n'a pas pu lire le fichier de version XML (pom.xml) sur le disque.
E4402 : Aucune version dans le fichier XML
Le fichier XML n'a pas de balise <version>.
E4403 : Écriture du fichier XML impossible
L'écriture de la nouvelle version dans le fichier de version XML (pom.xml) a échoué.
E4404 : UTF-8 invalide dans le fichier XML
Le contenu du fichier de version XML (pom.xml) n'est pas de l'UTF-8 valide.
E4410 : Lecture du fichier .csproj impossible
FerrFlow n'a pas pu lire le fichier .csproj sur le disque.
E4411 : Aucune version dans le fichier .csproj
Le fichier .csproj n'a pas d'élément <Version>.
E4412 : Écriture du fichier .csproj impossible
L'écriture de la nouvelle version dans le fichier .csproj a échoué.
E4413 : UTF-8 invalide dans le fichier .csproj
Le contenu du fichier .csproj n'est pas de l'UTF-8 valide.
E4501 : Lecture du fichier Gradle impossible
FerrFlow n'a pas pu lire le fichier de build Gradle (build.gradle, build.gradle.kts) sur le disque.
E4502 : Aucune version dans le fichier Gradle
Le fichier de build Gradle n'a pas d'affectation version = "…".
E4503 : Écriture du fichier Gradle impossible
L'écriture de la nouvelle version dans le fichier de build Gradle (build.gradle, build.gradle.kts) a échoué.
E4504 : UTF-8 invalide dans le fichier Gradle
Le contenu du fichier de build Gradle (build.gradle, build.gradle.kts) n'est pas de l'UTF-8 valide.
E4601 : Impossible de lancer git describe
Un fichier versionné gomod tire sa version des tags git via git describe, et la commande n'a pas pu être lancée. Vérifiez que git est dans le PATH.
E4602 : Aucun tag de version
git describe n'a trouvé aucun tag correspondant à *@v* ou v* pour le package.
Depuis FerrFlow v3, le flux de release intercepte ce cas et repart de la version de départ de la stratégie (0.0.0, 0, …) : la première release d'un dépôt neuf réussit sans tag créé à la main. Le code existe toujours pour les programmes qui utilisent GoModVersionFile directement, mais ferrflow release ne devrait plus l'afficher.
E4603 : Version illisible depuis go.mod
La version d'un module Go vient des tags git : FerrFlow ne peut pas la lire dans le contenu de go.mod. ferrflow validate ignore les entrées gomod avec un avertissement.
E4701 : Lecture du fichier texte impossible
FerrFlow n'a pas pu lire le fichier de version texte (VERSION, VERSION.txt) sur le disque.
E4702 : Aucune version dans le fichier texte
Le fichier texte est vide. Avec un selector, ce code couvre aussi une regex qui ne compile pas, qui n'a pas exactement un groupe de capture, qui ne trouve rien ou qui ne capture que des espaces.
E4703 : Écriture du fichier texte impossible
L'écriture de la nouvelle version dans le fichier de version texte (VERSION, VERSION.txt) a échoué.
E4704 : UTF-8 invalide dans le fichier texte
Le contenu du fichier de version texte (VERSION, VERSION.txt) n'est pas de l'UTF-8 valide.
E4801 : Lecture de pubspec.yaml impossible
FerrFlow n'a pas pu lire pubspec.yaml sur le disque.
E4802 : Aucune version dans pubspec.yaml
pubspec.yaml n'a pas de clé version: au premier niveau.
E4803 : Écriture de pubspec.yaml impossible
L'écriture de la nouvelle version dans pubspec.yaml a échoué.
E4804 : UTF-8 invalide dans pubspec.yaml
Le contenu de pubspec.yaml n'est pas de l'UTF-8 valide.
E4811 : Lecture de mix.exs impossible
FerrFlow n'a pas pu lire mix.exs sur le disque.
E4812 : Aucune version dans mix.exs
mix.exs ne contient pas de littéral version: "…".
E4813 : Écriture de mix.exs impossible
L'écriture de la nouvelle version dans mix.exs a échoué.
E4814 : UTF-8 invalide dans mix.exs
Le contenu de mix.exs n'est pas de l'UTF-8 valide.
E4821 : Lecture de Chart.yaml (chartyaml) impossible
FerrFlow n'a pas pu lire le Chart.yaml déclaré avec format = "chartyaml" sur le disque.
E4822 : Aucune version dans Chart.yaml (chartyaml)
Le Chart.yaml déclaré avec format = "chartyaml" n'a pas de clé version: au premier niveau.
E4823 : Écriture de Chart.yaml (chartyaml) impossible
L'écriture de la nouvelle version dans le Chart.yaml déclaré avec format = "chartyaml" a échoué.
E4824 : UTF-8 invalide dans Chart.yaml (chartyaml)
Le contenu du Chart.yaml déclaré avec format = "chartyaml" n'est pas de l'UTF-8 valide.
E4831 : Lecture du fichier .gemspec impossible
FerrFlow n'a pas pu lire le fichier .gemspec sur le disque.
E4832 : Aucune version dans le fichier .gemspec
Le fichier .gemspec n'a pas d'affectation <ident>.version = "…".
E4833 : Écriture du fichier .gemspec impossible
L'écriture de la nouvelle version dans le fichier .gemspec a échoué.
E4834 : UTF-8 invalide dans le fichier .gemspec
Le contenu du fichier .gemspec n'est pas de l'UTF-8 valide.
E4841 : Lecture de Package.swift impossible
FerrFlow n'a pas pu lire Package.swift sur le disque.
E4842 : Aucune version dans Package.swift
Package.swift n'a pas de déclaration let <name>Version = "…" au premier niveau.
E4843 : Écriture de Package.swift impossible
L'écriture de la nouvelle version dans Package.swift a échoué.
E4844 : UTF-8 invalide dans Package.swift
Le contenu de Package.swift n'est pas de l'UTF-8 valide.
E4851 : Lecture du fichier .cabal impossible
FerrFlow n'a pas pu lire le fichier .cabal sur le disque.
E4852 : Aucune version dans le fichier .cabal
Le fichier .cabal n'a pas de champ version: au premier niveau.
E4853 : Écriture du fichier .cabal impossible
L'écriture de la nouvelle version dans le fichier .cabal a échoué.
E4854 : UTF-8 invalide dans le fichier .cabal
Le contenu du fichier .cabal n'est pas de l'UTF-8 valide.
E4861 : Lecture de CMakeLists.txt impossible
FerrFlow n'a pas pu lire CMakeLists.txt sur le disque.
E4862 : Aucune version dans CMakeLists.txt
CMakeLists.txt n'a pas de déclaration project(… VERSION …).
E4863 : Écriture de CMakeLists.txt impossible
L'écriture de la nouvelle version dans CMakeLists.txt a échoué.
E4864 : UTF-8 invalide dans CMakeLists.txt
Le contenu de CMakeLists.txt n'est pas de l'UTF-8 valide.
E4871 : Lecture de galaxy.yml impossible
FerrFlow n'a pas pu lire galaxy.yml sur le disque.
E4872 : Aucune version dans galaxy.yml
galaxy.yml n'a pas de clé version: au premier niveau.
E4873 : Écriture de galaxy.yml impossible
L'écriture de la nouvelle version dans galaxy.yml a échoué.
E4874 : UTF-8 invalide dans galaxy.yml
Le contenu de galaxy.yml n'est pas de l'UTF-8 valide.
Pré-release
E5001 : Nom de channel vide
Le nom du channel de pré-release est vide.
E5002 : Nom de channel invalide
Seuls les alphanumériques et tirets sont acceptés.
Versioning
E5010 : Semver invalide
La version actuelle n'est pas un semver valide.
Hooks
E6001 : Hook échoué
Un hook a échoué avec on_failure: "abort".
Publishers
E6101 : Publisher mal configuré
Un publisher n'a pas pu démarrer parce que sa configuration est incomplète : un registry absent de workspace.registries, une variable tokenEnv non définie, un contexte de build, un chart ou un fichier d'asset introuvable, ou un trustedPublishing utilisé hors de GitHub Actions. Le message nomme le publisher et l'élément manquant. Rien n'a été publié.
E6102 : Publication échouée
L'étape de publication a tourné et a échoué : cargo publish, npm publish, twine upload, docker buildx, helm push, gh release upload ou un webhook a renvoyé une erreur. Le message reprend l'erreur de l'outil, avec les lignes qui en expliquent la cause. Pour cargo, FerrFlow réessaie quelques fois quand l'erreur ressemble à un retard d'index du registre juste après la publication d'une dépendance, et signale E6102 une fois les essais épuisés.
Query
E7001 : Aucun package configuré
Aucun package dans le fichier de config.
E7002 : Package introuvable
Le nom de package spécifié n'existe pas dans la config.
E7003 : Plage de diff invalide
ferrflow diff attend une plage de la forme <from>..<to>, avec deux bornes non vides, par exemple v1.4.0..v1.6.0.
E7004 : Nom de package requis
Le dépôt est un monorepo : ferrflow diff doit savoir quel package comparer, avec ferrflow diff <package> <from>..<to>.
E7005 : Borne de plage introuvable
Une borne de la plage de ferrflow diff ne correspond à aucun tag. FerrFlow essaie la valeur telle quelle, puis comme une version passée dans le modèle de tag du package, avec et sans v initial. Le message liste les noms essayés. Passez un nom de tag ou une version existants.
Monorepo
E8001 : Package introuvable dans la config
Un package référencé pendant la release n'a pas été trouvé.
E8002 : Tag flottant régressif
Un tag flottant serait déplacé vers une version plus ancienne.
E8003 : Cycle de dépendances
Deux packages ou plus dépendent l'un de l'autre via dependsOn, directement ou transitivement : il n'existe aucun ordre de release possible. Le message nomme la boucle, par exemple cycle detected: api → web → api. Supprimez l'une des arêtes dependsOn pour la casser. La vérification s'exécute avant toute écriture de version, donc une configuration cyclique ne laisse jamais de release partielle.
Rollback
E10000 : Rollback bloqué
Chaque package de l'exécution échouée a publié sur un registre qui ne permet pas de dépublier : ferrflow rollback n'a rien qu'il puisse annuler. Le plan affiché indique chaque package bloqué et la raison.