8b567e15bf
Projekt-Nachrichten aus der Zeit vor dem chat_backup-project_id-Feld (getaggt in conversation.jsonl seitfc0f91d, aber chat_backup fuehrte project_id erst abf51ad15) lagen in der UI im Hauptchat statt im Projekt. Die App/Diagnostic zeigen aus chat_backup.jsonl — dort fehlte der Tag. Neue Einmal-Migration (Brain-Lifespan) schreibt project_id aus conversation.jsonl per (role, text)-Match reihenfolge-erhaltend nach chat_backup.jsonl zurueck: - idempotent via Marker /shared/config/.chat_backup_projectid_backfill_v1 - nicht-destruktiv: legt .pre-backfill-v1.bak an, setzt nur LEERE project_ids, entfernt/aendert nie einen bestehenden Tag - atomar (tmp + os.replace) - Duplikate: Deque je (role, normtext) inkl. "" fuer Hauptthread → korrekte Zuordnung auch bei wiederholten Texten, kein faelschliches Taggen von Hauptchat-Interleaving Mit Logik-Tests (Zuordnung, Duplikat-Reihenfolge, Idempotenz) verifiziert. Nachrichten aus der Zeit bevor es Projekte gab bleiben untagged im Hauptchat. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>