Skip to content

feat: archive, import_entry and Denkarium migration (PB-11, #3994) - #16

Merged
lukisch merged 2 commits into
mainfrom
pb11-llm-note-archive
Nov 7, 2026
Merged

lukisch merged 2 commits into
mainfrom
pb11-llm-note-archive

Conversation

@lukisch

@lukisch lukisch commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

PB-11 Schritt 1 (BACH #3994, Nutzerentscheidung E4 "Jetzt llm-note"): macht NoteStore zum Ersatz für das Denkarium.

  • Additive Spalten is_archived, archived_reason, archived_at, legacy_id; Migration beim Öffnen alter Datenbanken.
  • archive(), unarchive(), delete(), import_entry() (Fremdzeitstempel, idempotent per legacy_id); list_entries()/search() blenden Archiviertes aus (include_archived=True).
  • Aliase denkarium -> note, logbuch -> logbook.
  • Einmal-Migration python -m llm_note.migrate_denkarium (Dry-Run Standard, Schnappschuss, Abbruch bei Zählerabweichung, Quelle nur lesend). Getestet nur mit synthetischen Daten.
  • Tests rot -> grün: 13 neue Tests, Suite 52 grün.
  • Version bleibt bewusst 1.0.5 (RELEASE_GATE: Freeze, T-20260920-167562623); 1.1.0 braucht eine eigene Release-Entscheidung.

🤖 Generated with Claude Code

https://claude.ai/code/session_01THB2F3JrYiwPBeh8QG8Y9H

Lukas Geiger and others added 2 commits November 7, 2026 04:10
…(#3994)

Additive archive/legacy_id columns with migration on open, archive/unarchive/
delete, import_entry with foreign timestamps (idempotent per legacy_id),
denkarium/logbuch aliases and an idempotent dry-run-first migration script.
Package version intentionally stays 1.0.5 (release freeze).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01THB2F3JrYiwPBeh8QG8Y9H
Worker-Model: claude-sonnet (B8)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01THB2F3JrYiwPBeh8QG8Y9H
Worker-Model: claude-sonnet (B8)
@lukisch

lukisch commented Nov 7, 2026

Copy link
Copy Markdown
Contributor Author

Zweitprüfung R2 (anderer Lauf als der Autor B8) – Urteil: grün, Merge frei

Geprüfter Head: 0bde16bc5f1320ad4dc4f971d1dd4d66dc5b8666 (Basis = main d02a9ab, keine Divergenz). Alle 27 Checks grün, Status CLEAN.

Gemessen (Windows-Host, Worktrees --detach)

  • pytest: PR 53 passed, main 39 passed, keine Fehlschläge in beiden.
  • Migration python -m llm_note.migrate_denkarium mit eigener, rein synthetischer Quelltabelle im Aufbau der echten BACH-Tabelle denkarium_entries (inklusive linked_task_id, linked_wiki_id, dist_type, tags):
    • Trockenlauf ist der Standard: meldet source_count: 3, legt die Zieldatei nicht an.
    • --apply ohne Snapshot-Verzeichnis bricht mit MigrationError ab.
    • --apply: 3 importiert, target_count 3; zweiter Lauf: 0 importiert, 3 vorhanden (idempotent über legacy_id); danach neu geschriebene Notiz bleibt erhalten, Lauf 3 importiert 0.
    • Erhalten bleiben Zeitstempel (created_at/updated_at), Archivstatus samt Grund, promoted_to/promoted_id, tags, Typen (denkarium→note, logbuch→logbook), Mood 0 → NULL.
    • Quelldatei danach byte-identisch (nur lesend geöffnet), Snapshot wird angelegt.
  • Keine echten Notizen in Tests oder Fixtures (tests/test_migrate_denkarium.py, tests/test_archive_import.py nutzen Kunstdaten).
  • Zählung auf der echten lokalen BACH-Datenbank dieses Hosts: nur die Typen denkarium und logbuch kommen vor (ohne Inhalte gelesen), die Typprüfung der Migration würde also nicht abbrechen.

Hinweise (kein Blocker)

  • linked_task_id und linked_wiki_id werden nicht übernommen (llm-note hat die Spalten nicht). In BACH schreibt sie kein Code, auf dem geprüften Host sind alle NULL; auf anderen Hosts vor dem Apply SELECT COUNT(*) … WHERE linked_task_id IS NOT NULL OR linked_wiki_id IS NOT NULL ausführen.
  • Wird ein migrierter Eintrag gelöscht und die Migration erneut gestartet, entsteht er wieder (Idempotenz gilt nur, solange die Zeile existiert); für eine einmalige Migration akzeptabel, im Runbook erwähnen.
  • Jeder --apply-Lauf legt auch ohne Änderungen einen neuen Snapshot an.

🤖 Generated with Claude Code

https://claude.ai/code/session_01THB2F3JrYiwPBeh8QG8Y9H

@lukisch
lukisch marked this pull request as ready for review November 7, 2026 04:27
@lukisch
lukisch merged commit f3f2a43 into main Nov 7, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant