Skip to content

[Enhancement] Add content hash to manifest for robust change detection #13

@ngmks

Description

@ngmks

🏷️ 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

  1. Fast path : si mtime identique → skip (comme aujourd'hui)
  2. Si mtime différent : calculer le hash
  3. Si hash identique → skip (contenu pas changé, juste mtime)
  4. 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

  • Hash calculé et stocké dans le manifest
  • Détection mtime-first, hash-second
  • Backward compatible avec anciens manifests
  • Test unitaire

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions