Ce qui s'est passé
Pendant l'installation de la v1.7.0, git pull a refusé de tourner dans ~/Work/jarvis :
error: cannot pull with rebase: You have unstaged changes.
error: Please commit or stash them.
$ git status --short
M SOUL.md
Le seul fichier « sale » du dépôt était l'âme — c'est-à-dire les réglages de persona de l'utilisateur, posés depuis le Control Center. La mise à jour n'y touchait pas, donc un git merge --ff-only est passé sans rien perdre. Mais le réflexe naturel devant ce message, git checkout -- SOUL.md, aurait effacé sans un mot le ton, la voix, la langue, les heures de silence et l'apparence du poisson. Aucune sauvegarde, aucune confirmation, aucune trace.
Pourquoi c'est structurel
SOUL.md est de la donnée utilisateur rangée dans un fichier suivi :
bin/jarvis:73 — SOUL_FILE="${JARVIS_SOUL:-$JARVIS_DIR/SOUL.md}", donc l'âme vit à la racine du dépôt.
set_setting (bin/jarvis:352) écrit dedans avec sed -i, et le Control Center fait la même chose de son côté.
- Résultat : dès que l'utilisateur touche un réglage, son arbre est sale pour toujours. Chaque
git pull s'y heurte, chaque stash la déplace, chaque checkout -- la détruit.
Le dépôt sait déjà résoudre exactement ce problème, et le dit dans son propre .gitignore :
« Sa mémoire vivante : ce qu'il a vécu ICI, avec CETTE personne. Les en-têtes de ces fichiers sont dans memory/scaffold/ et sont suivis ; memory_init les restaure au premier lancement. »
CONVERSATION.md, FAILURES.md, LEARNED.md, ROUTINES.md, REFLEXES.md suivent tous ce motif. SOUL.md est la seule donnée vivante restée dans le dépôt — et c'est la plus irremplaçable des cinq, parce qu'elle n'est pas reconstructible : une mémoire effacée se réécrit à l'usage, un ton choisi ne revient pas tout seul.
Le second défaut, trouvé en chemin
plugin/ControlCenterModule.qml:53 :
readonly property string soulPath: Quickshell.env("HOME") + "/Work/jarvis/SOUL.md"
Le chemin est en dur. Or install.sh copie le greffon dans ~/.config/omarchy/plugins/macarchy.jarvis, donc il ne suit pas le checkout. Deux conséquences :
- Un utilisateur qui clone ailleurs que
~/Work/jarvis a un Control Center dont chaque sed -i vise un fichier inexistant. Les pilules changent à l'écran, rien n'est écrit, et omarchy-jarvis reset est quand même lancé — donc la conversation est jetée pour un réglage qui n'a pas pris.
- C'est le seul endroit du code qui ignore
JARVIS_SOUL, que tout le reste honore.
Ce qui corrigerait les deux
Descendre l'âme dans le motif que le dépôt applique déjà partout ailleurs :
SOUL.md → memory/scaffold/SOUL.md (le gabarit, suivi).
- L'âme vivante à côté de la mémoire vivante, gitignorée, restaurée par
memory_init au premier lancement comme les sept autres.
SOUL_FILE pointe là ; JARVIS_SOUL continue de le déplacer pour les tests.
- Le Control Center demande le chemin à
omarchy-jarvis au lieu de le supposer — jarvis status sait déjà répondre en clé=valeur, une ligne soul= suffit et supprime le chemin en dur.
- Migration pour les installations existantes : au premier lancement, si l'ancien
SOUL.md du dépôt diffère du gabarit, il est déplacé vers le nouvel emplacement, jamais écrasé — c'est la persona de quelqu'un.
Ce que ça vaut
Tant que ce n'est pas fait, chaque mise à jour est un endroit où quelqu'un peut perdre son Jarvis d'un checkout réflexe. Aujourd'hui ça n'est pas arrivé parce que le diff entrant ne touchait pas SOUL.md — la prochaine fois, rien ne le garantit.
omarchy-jarvis doctor
✓ claude (le cerveau)
✓ voxtype (l'oreille)
✓ pw-record
✓ pw-play
✓ piper : une synthèse réelle
✓ voix anglaise
✓ micro présent
✓ daemon wake (hey Jarvis)
✓ venv wake + openwakeword
✓ planches du poisson
✓ poisson conforme à l'âme
✓ greffon installé
✓ unités systemd installées et actives
✓ omarchy-jarvis pointe sur ce dépôt
✓ boîte ~/Jarvis
✓ symlink memory
✓ settings.json valide
✓ table des réflexes bien formée
✓ prompts (ronde, rêve, digestion)
✓ connaissance à jour (omarchy)
✓ état : idle
Tout vert — le défaut n'est pas une panne, c'est une pièce rangée au mauvais endroit.
Trouvé en installant la v1.7.0.
Ce qui s'est passé
Pendant l'installation de la v1.7.0,
git pulla refusé de tourner dans~/Work/jarvis:Le seul fichier « sale » du dépôt était l'âme — c'est-à-dire les réglages de persona de l'utilisateur, posés depuis le Control Center. La mise à jour n'y touchait pas, donc un
git merge --ff-onlyest passé sans rien perdre. Mais le réflexe naturel devant ce message,git checkout -- SOUL.md, aurait effacé sans un mot le ton, la voix, la langue, les heures de silence et l'apparence du poisson. Aucune sauvegarde, aucune confirmation, aucune trace.Pourquoi c'est structurel
SOUL.mdest de la donnée utilisateur rangée dans un fichier suivi :bin/jarvis:73—SOUL_FILE="${JARVIS_SOUL:-$JARVIS_DIR/SOUL.md}", donc l'âme vit à la racine du dépôt.set_setting(bin/jarvis:352) écrit dedans avecsed -i, et le Control Center fait la même chose de son côté.git pulls'y heurte, chaquestashla déplace, chaquecheckout --la détruit.Le dépôt sait déjà résoudre exactement ce problème, et le dit dans son propre
.gitignore:CONVERSATION.md,FAILURES.md,LEARNED.md,ROUTINES.md,REFLEXES.mdsuivent tous ce motif.SOUL.mdest la seule donnée vivante restée dans le dépôt — et c'est la plus irremplaçable des cinq, parce qu'elle n'est pas reconstructible : une mémoire effacée se réécrit à l'usage, un ton choisi ne revient pas tout seul.Le second défaut, trouvé en chemin
plugin/ControlCenterModule.qml:53:Le chemin est en dur. Or
install.shcopie le greffon dans~/.config/omarchy/plugins/macarchy.jarvis, donc il ne suit pas le checkout. Deux conséquences :~/Work/jarvisa un Control Center dont chaquesed -ivise un fichier inexistant. Les pilules changent à l'écran, rien n'est écrit, etomarchy-jarvis resetest quand même lancé — donc la conversation est jetée pour un réglage qui n'a pas pris.JARVIS_SOUL, que tout le reste honore.Ce qui corrigerait les deux
Descendre l'âme dans le motif que le dépôt applique déjà partout ailleurs :
SOUL.md→memory/scaffold/SOUL.md(le gabarit, suivi).memory_initau premier lancement comme les sept autres.SOUL_FILEpointe là ;JARVIS_SOULcontinue de le déplacer pour les tests.omarchy-jarvisau lieu de le supposer —jarvis statussait déjà répondre enclé=valeur, une lignesoul=suffit et supprime le chemin en dur.SOUL.mddu dépôt diffère du gabarit, il est déplacé vers le nouvel emplacement, jamais écrasé — c'est la persona de quelqu'un.Ce que ça vaut
Tant que ce n'est pas fait, chaque mise à jour est un endroit où quelqu'un peut perdre son Jarvis d'un
checkoutréflexe. Aujourd'hui ça n'est pas arrivé parce que le diff entrant ne touchait pasSOUL.md— la prochaine fois, rien ne le garantit.omarchy-jarvis doctorTout vert — le défaut n'est pas une panne, c'est une pièce rangée au mauvais endroit.
Trouvé en installant la v1.7.0.