Skip to content

Orchestrator ruft init_db() nie auf — frische ATOMIC_DB_PATH fuehrt zu stillen Best-effort-DB-Warns #231

Description

@TillQuandel

Befund aus der realen E2E-Abnahme von PR #227 (2026-07-12, --dry-run mit isolierter ATOMIC_DB_PATH auf frischem Pfad):

[warn] DB-Write fehlgeschlagen: no such table: note_evals

Die DB-Datei wird angelegt (4096 Bytes, nur SQLite-Header), aber kein Schema: generative/orchestrator.py ruft db.init_db() an keiner Stelle auf (per Grep verifiziert — identisch auf master und dem #227-Branch, also KEINE Refactor-Regression). Alle Orchestrator-DB-Writes (pipeline_runs-Insert, note_evals via Stage-8) sind best-effort und degradieren still zu Warnungen — der Lauf „funktioniert", hinterlässt aber keinerlei DB-Buchführung.

Wirkung

  • Jeder Lauf gegen eine frische ATOMIC_DB_PATH (E2E-Abnahmen, tests/test_e2e_baseline.py mit tmp-DB, künftige Nutzer-Erstläufe!) verliert seine DB-Zeilen still — dieselbe Fehlerklasse wie die Trace-/DB-Buchführung: Insert-Lücke bei deaktiviertem Inline-Eval, Test-Traces in runs/, total_tokens-Diskrepanz #198-Insert-Lücke (Läufe ohne DB-Zeile verschwinden aus versionsgefilterten Ansichten).
  • Für Endnutzer (lokal-first-Tool, Erstinstallation ohne vorhandene DB) wäre das ein echter Datenverlust-Pfad, sobald die DB nicht durch andere Werkzeuge (Dashboard/run_eval) vorab initialisiert wurde.

Fix-Richtung

Idempotenter db.init_db(db.DB_PATH)-Aufruf beim Orchestrator-Start (Schema ist CREATE TABLE IF NOT EXISTS + _add_column-Migrationen — mehrfacher Aufruf kostet nichts). Danach Warn-Pfad beibehalten (echte I/O-Fehler bleiben best-effort). Regressionstest: Orchestrator-Startpfad mit frischer tmp-DB → pipeline_runs/note_evals existieren.

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