docs(wiki): dix-septième passe — les deux journaux peuvent être attribués au mauvais projet après un changement
Un nouveau bug applicatif réel trouvé et filé cette passe, dans la même
famille que les issues #33/#34/#35/#38/#39 (relire un état de singleton
en direct après un await asynchrone) :
- issue #40 : les deux journaux (journal de recherche brain.db, journal
d'usage IA journal.db) peuvent recevoir un événement attribué au
mauvais projet après un changement — HistoryService.init() implique
une vraie fenêtre d'I/O asynchrone, et chaque site d'écriture relit
le gestionnaire courant plutôt que de garder une référence figée.
Contrairement au cas de l'indexation PDF (#38), cela ne plante pas :
l'écriture réussit toujours, juste dans le mauvais journal.
Trois vérifications ciblées sont revenues négatives (comportement déjà
sûr, pas un bug) : le cache de undo/historique d'état de l'éditeur est
entièrement vidé à chaque changement de projet (commentaire du code
nommant explicitement ce risque de collision) ; les caches
d'embeddings de requête et de chunk sont des fonctions pures
texte→vecteur sans donnée spécifique au projet, donc sans risque de
fuite ; la synchronisation Tropy reçoit son vectorStore en paramètre
explicite capturé une fois, contrairement à Zotero.
Autres corrections :
- Features.md : quatre lacunes de complétude comblées — quatre bugs
déjà filés (#19, #17/minTopicSize, #37, #38) n'étaient pas encore
répercutés dans les puces correspondantes de la page.
- RC3 Release Notes : #37 et #38 ajoutés à la liste des bugs trouvés
depuis la sortie, en réappliquant le même critère de sévérité que la
passe précédente.
- Logging System : cinquième passe consécutive trouvant encore une
petite incohérence interne (la section Environment Detection et
l'exemple Checking Filter Status ne portaient pas la réserve
« uniquement dans le process principal » déjà présente ailleurs sur
la page).
- Tropy Integration Guide : précision sur une connexion vectorStore non
fermée à chaque changement de projet dans TropyService.init() — pas
un nouveau bug en soi, déjà substantiellement couvert par les issues
#29 et #34 existantes.
- Archive Connectors Guide : confirmation que la clé API Europeana est
globale à l'application, jamais scopée par projet — aucun risque de
fuite inter-projets à ce niveau.
Cluster install & build : troisième passe consécutive entièrement
propre, convergence confirmée (matrice OS/architecture et intégrité
des liens vers les 39 issues re-vérifiées, tout tient).
docs(wiki): seizième passe — changer de projet peut perdre des frappes non sauvegardées ou faire planter l'indexation PDF en cours
Poursuite de la chasse « que se passe-t-il si on change de projet
pendant une opération en cours », déjà fructueuse en passe 15 (issues
#33/#34/#35). Trois nouveaux bugs applicatifs réels trouvés et filés
cette passe, chacun dans un mécanisme différent qui n'avait pas encore
été soumis à cet angle :
- issue #37 (le plus impactant pour l'utilisateur) : changer de projet
ClioDeck avec des modifications non sauvegardées dans l'éditeur les
perd silencieusement, sans aucun avertissement. Le garde-fou qui
protège déjà la bascule de chapitre (loadFile() vérifie isDirty et
sauvegarde avant de continuer) n'a pas d'équivalent au niveau du
changement de projet (loadProject() n'a aucune vérification de ce
type). C'est exactement la même classe de bug déjà corrigée une fois
à l'échelon du chapitre, réintroduite un niveau au-dessus.
- issue #38 : l'indexation d'un PDF peut planter si l'on change de
projet pendant qu'elle tourne encore — pdf-service.ts ferme
inconditionnellement le vectorStore de l'ancien projet dès le début
de init(), sans vérifier qu'une indexation est encore en cours. Pas
de corruption inter-projets ici (le PdfIndexer garde sa bonne
référence), mais l'écriture finale échoue contre une base fermée —
d'autant plus atteignable que l'extraction PDF isolée (documentée en
passe 14) peut prendre jusqu'à 120 secondes.
- issue #39 : l'entrée de journal d'audit d'un appel d'outil MCP peut
être attribuée au mauvais projet après un changement — même famille
et même sévérité que l'issue #35, aucun résultat d'outil n'est
affecté, seule la traçabilité de l'audit peut se tromper de projet.
Confirmé aussi qu'exactement le même défaut existe une seconde fois
dans le gestionnaire zotero:apply-updates — couvert par l'issue #33
existante plutôt que filé séparément, le correctif étant identique.
Autres corrections :
- RC3 Release Notes : nouvelle sous-section listant les bugs
significatifs découverts depuis la sortie (#27, #30, #32, #33),
confirmés présents dès le tag v1.0.0-rc.3 lui-même.
- Logging System : incohérence interne trouvée sur une relecture
complète de bout en bout — le schéma d'architecture étiquetait
encore console-filter.ts « (live) » sans conditions, alors que le
texte détaillé explique depuis plusieurs passes que le filtre
renderer n'est en réalité jamais actif.
- Features.md : le filtrage par tags multiples est en réalité en OR
(n'importe quel tag sélectionné), pas en AND comme un utilisateur
pourrait raisonnablement s'y attendre, et il n'existe aucun bouton
pour changer de mode — précision ajoutée.
Audit d'intégrité, à l'échelle du wiki entier : les 39 issues filées à
ce jour ont été vérifiées une à une (numéro, état, titre) contre GitHub
depuis chaque page qui les cite — aucune référence périmée, fermée ou
renumérotée trouvée.
Cluster install & build entièrement propre cette passe (aucune
correction), converge après plusieurs passes consécutives sans
trouvaille nouvelle.
docs(wiki): douzième passe — touches d'envoi du chat inversées, contradictions avec les issues #24 et #28, minTopicSize figé à 3
Aucun nouveau bug applicatif filé cette passe — uniquement des
corrections de documentation, mais deux d'entre elles sont des
contradictions directes avec des bugs déjà filés lors des passes
précédentes, qui avaient survécu parce que les pages n'avaient pas été
recroisées entre elles :
- Features.md : les réglages de compression de contexte et le ratio de
compression dans RAGExplanation étaient encore présentés comme
actifs, alors que la passe 11 a établi qu'ils sont totalement
jamais câblés (issue #28) — corrigé et lié.
- RC3 Release Notes : les réglages de livre (notes, numérotation,
bibliographie) étaient listés comme une fonctionnalité RC3 sans
réserve, alors que 1.15-Books-and-Chapters.md documente depuis la
passe 9 qu'aucun n'a d'interface (issue #24) — réserve ajoutée et
lien.
- RC2 Release Notes : deux affirmations sur obsidian-vectors.db
encore séparé de brain.db à l'époque de RC2 étaient fausses même
pour ce tag précis — vérifié via `git show v1.0.0-rc.2:...` que la
fusion datait de 5 jours avant le tag.
Corrections supplémentaires :
- Keyboard Shortcuts : les touches d'envoi/retour à la ligne du chat
RAG étaient inversées (Ctrl/Cmd+Entrée envoie, Entrée simple insère
un retour à la ligne — c'était documenté à l'envers) ; la touche
Échap pour annuler n'existe pas, seul un bouton l'annule.
- Guide des templates Word : mauvais pointeur de dépannage vers le
Journal Panel (qui est le journal d'usage IA, sans rapport avec les
logs d'export).
- Corpus Analysis Guide : nombre de topics par défaut réellement 10
(pas "Auto"), taille minimale de topic figée à 3 dans le code (pas
5, sans aucune interface pour la changer).
- Tropy Integration Guide : documentation du bouton de purge de la
base des sources primaires (tropy:purge), jusqu'ici non documenté
mais correctement scopé (contrairement au bug Obsidian/brain.db).
- Brainstorm Mode Guide : liste des préfixes de verbes de lecture
incomplète dans la nouvelle section bannière MCP.
- Build and Deployment Guide : npm test tourne en mode watch par
défaut, pas "une fois" ; storage des clés API.
- ClioDeck Installation : le lanceur .desktop généré ajoute
--no-sandbox à l'AppImage, absent du lancement direct.
Quatre passes de vérification exhaustive supplémentaires n'ont rien
trouvé de nouveau dans leurs clusters respectifs (LLM & analyse au-delà
du point ci-dessus, install & build au-delà des deux points ci-dessus).
docs(wiki): deuxième passe — Features.md, Home.md, RC3, Similarity Finder
- RC3 notes : « Branch: release/v1.0.0-rc.3 » — cette branche a été
fusionnée puis supprimée du remote, comme son équivalent déjà corrigé
sur la page RC2. Remplacé par « Tag: v1.0.0-rc.3 ».
- Features.md : trois chiffres/faits faux, vérifiés frais.
- Modèle Ollama par défaut annoncé gemma2:2b ; le vrai défaut du code
est llama3.2 (cliodeck-config-adapter.ts:138,240), gemma2:2b n'est
qu'une recommandation.
- Cache d'embeddings de requête : 500 entrées/60min annoncées, contre
2000/10min réels (retrieval-service.ts:68).
- Liste des providers cloud incomplète (Claude/OpenAI seulement) —
Mistral et Gemini sont deux providers de premier rang au même
titre, absents de la liste.
- Pointeur mort vers « les fichiers de documentation de chaque
fonctionnalité » : 7 des 8 pages FEATURE_* ont été supprimées cette
session, remplacé par un renvoi vers Home.md et la seule page
restante.
- Home.md : la section « Feature notes » ne contenait plus qu'une seule
entrée après les suppressions — repliée dans « Working with the
corpus », à côté du guide qu'elle complète.
- FEATURE_SIMILARITY_FINDER.md : deux imprécisions supplémentaires.
- Le cache est verrouillé au niveau du document entier (hash document
+ hash vectorstore + options), pas segment par segment comme le
schéma le suggérait ; expire aussi après 24h et se réinvalide sur
changement de granularity/maxResults/similarityThreshold — aucun
des deux n'était documenté.
- La section d'interprétation des scores (>0.8 / 0.5-0.8 / <0.5)
ne s'applique qu'avec useReranking désactivé. Par défaut (activé),
rerankWithLLM remplace le score par un rang synthétique
(1.0/0.8/0.6/0.4/0.2 pour 5 candidats) — vérifié
similarity-service.ts:754. Le nombre affiché par défaut n'est donc
pas une similarité sémantique.
docs(wiki): corriger le compte de tests et la revendication Windows des notes RC3
« 1 184 tests » ne correspond à aucun point de contrôle réel retrouvé.
La CI du dernier merge sur main (27400d9) rapporte 1277 réussis + 1
ignoré (1278) ; le tag rc.3 lui-même n'est qu'à 13 commits de ce même
point, essentiellement de la documentation. Remplacé par « plus de
1270 », sans revendiquer une précision que je n'ai pas vérifiée au
commit exact du tag.
« A Windows build exists and should work, but has not been tested » :
la release v1.0.0-rc.3 sur GitHub ne contient que quatre artefacts
(AppImage arm64, deux .dmg, un .deb arm64) — aucun exécutable Windows.
Reformulé pour dire ce qui est vrai : le code devrait fonctionner sous
Windows, mais aucune build n'est publiée, et Linux n'est disponible
qu'en arm64 pour cette release.
docs(rc3): Windows — devrait fonctionner, non testé
Les notes de version laissaient entendre que Windows est une plateforme
supportée (« macOS and Windows will warn on first launch »), ce que le
guide d'installation contredisait déjà. Alignement sur la formulation de
l'auteur, et distinction entre l'avertissement Gatekeeper et l'absence de
test sous Windows.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
docs: wiki à jour pour la 1.0.0-rc.3
Les 33 pages ont été confrontées au code, pas réécrites de mémoire.
Créées : « Writing a Book — Chapters Guide » (la nouveauté majeure de
cette version : manifeste, navigateur, plan, recherche d'ouvrage,
renumérotation, réglages, exports), « The Editor » (CodeMirror 6 en rendu
live, notes et citations pandoc, fidélité octet pour octet, propositions
adjudicables) et les notes de version RC3.
Corrigées, entre autres :
- Features et Technical Architecture annonçaient encore l'éditeur
Milkdown, retiré depuis ;
- trois raccourcis documentés n'existent pas (Ctrl+Shift+S, Ctrl+Shift+L,
Alt+4) et Ctrl+J n'était pas documenté — vérifié dans menu.ts ;
- « Export Presentations » ne parlait pas des présentations malgré son
titre : ni reveal.js, ni modes en ligne/hors ligne/PDF, ni Beamer ;
- Electron 28 dans deux pages, alors que le projet est en 40.9.2 ;
- le journal d'usage IA distingue désormais ses deux couches et
enregistre les adjudications de propositions.
Cinq pages anciennes (Tropy, LLM embarqués, analyse de corpus,
similarité, stratégie d'embeddings) portent un bandeau signalant qu'elles
n'ont pas été revérifiées ligne à ligne : elles ne contiennent rien de
manifestement faux, mais leur horodatage est ancien.
Aucune page supprimée. Le wiki ne contient aucune capture d'écran : rien
à refaire de ce côté.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>