🏷️ Priorité : BASSE | Type : Enhancement
Contexte
Le manifest utilise uniquement mtime pour détecter les sessions modifiées. Le mtime peut être trompeur :
- Copie de fichier → mtime reset
- Cloud sync (Dropbox, OneDrive) → mtime modifié sans changement de contenu
- Clock skew entre machines
Proposition
Ajouter un hash SHA-256 du contenu en complément du mtime :
import hashlib
def _hash_file(self, path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
Nouveau format manifest
{
"sessions": {
"session_abc": {
"mtime": 1707300000,
"content_hash": "a1b2c3d4...",
"doc_count": 5,
"indexed_at": "2026-02-07T10:00:00+00:00"
}
}
}
Stratégie de détection
- Fast path : si mtime identique → skip (comme aujourd'hui)
- Si mtime différent : calculer le hash
- Si hash identique → skip (contenu pas changé, juste mtime)
- Si hash différent → re-indexer
Backward compatibility
- L'absence de
content_hash dans un ancien manifest → fallback sur mtime seul
- Le paramètre est additionnel, pas un remplacement
Critères de succès
🏷️ Priorité : BASSE | Type : Enhancement
Contexte
Le manifest utilise uniquement
mtimepour détecter les sessions modifiées. Le mtime peut être trompeur :Proposition
Ajouter un hash SHA-256 du contenu en complément du mtime :
Nouveau format manifest
{ "sessions": { "session_abc": { "mtime": 1707300000, "content_hash": "a1b2c3d4...", "doc_count": 5, "indexed_at": "2026-02-07T10:00:00+00:00" } } }Stratégie de détection
Backward compatibility
content_hashdans un ancien manifest → fallback sur mtime seulCritères de succès