fix(orchestrator): init_db beim Start (#231)#244
Merged
Conversation
…ug fuer frische und bestehende DBs (#231) orchestrator.main() rief db.init_db() an keiner Stelle auf. Zwei Facetten: - Frische ATOMIC_DB_PATH: get_db() legt die Datei ohne Schema an, jeder DB-Write degradiert still zu "[warn] DB-Write fehlgeschlagen: no such table: ...". - Bestehende DB mit altem Schema: die _add_column-Migrationen liefen nie, nach Schema-Erweiterungen (z.B. n_extracted, #220) scheitert der Insert jedes realen Laufs still. Fix: db.init_db(db.DB_PATH) direkt nach load_runtime_config() (Z.2318ff.), in try/except gewickelt (best-effort, ein kaputtes DB-File darf den Lauf nicht killen). Bewusst nicht im DB-Write-Block Z.2755ff. platziert, um Konflikte mit dem parallelen Issue #235 zu vermeiden. Zwei Regressionstests in generative/tests/test_orchestrator_init_db.py (RED auf master, GREEN nach dem Fix) decken beide Facetten ab.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Befund
generative/orchestrator.pyruftdb.init_db()nie auf. Zwei Datenverlust-Facetten:ATOMIC_DB_PATH:db.get_db()legt die Datei ohne Schema an — jeder DB-Write (pipeline_runs-Insert,note_evalsvia Stage 8) degradiert still zu[warn] DB-Write fehlgeschlagen: no such table: .... Der Lauf selbst "gelingt", die Zeile fehlt einfach._add_column-Migrationen ininit_db()laufen ausschließlich dort — nie im Write-Pfad. Nach Schema-Erweiterungen (z.B.n_extractedaus feat(generative): Stage-Outcome-Events + Drop-Gründe an den Gate-Punkten (#197 Schritt 1+2) #220) scheitert der Insert jedes realen Laufs still mittable pipeline_runs has no column named n_extracted.Fix
db.init_db(db.DB_PATH)direkt nachload_runtime_config()(~Z.2318), Modul-Attribute zur Laufzeit gelesen (import generative.db as _db; _db.init_db(_db.DB_PATH), kein from-Import der Werte — Tests monkeypatchendb.DB_PATH). In try/except gewickelt: ein kaputtes DB-File darf den Lauf nicht killen ([warn] DB-Init fehlgeschlagen: {e}).Bewusst nicht im DB-Write-Block Z.2755ff. platziert — Konfliktvermeidung mit dem parallelen Issue #235, das genau diesen Block editiert. Der bestehende Warn-Pfad dort bleibt unverändert.
TDD-Beleg (RED → GREEN)
Neue Testdatei
generative/tests/test_orchestrator_init_db.py, zwei Regressionstests. Harness wiederverwendet austest_pipeline_run_persist_no_eval.py/test_ci_smoke_e2e.py(main() mit--dry-run --no-llmauf Beispiel-PDF, LLM/Netz gestubbt).RED auf master (56a3a39):
GREEN nach Fix:
db.DB_PATHauf einen neuen, noch nicht angelegten Pfad umgebogen (die autouse-Fixtureisolate_pipeline_side_effectsinitialisiert selbst eine DB — hier bewusst NACH deren Setup überschrieben). Assert:pipeline_runs/note_evals-Tabellen existieren nachmain(), Run-Zeile vorhanden.pipeline_runs-Tabelle ohnen_extracted-Spalte angelegt (Alt-Schema). Assert: nachmain()ist die Spalte da (PRAGMA table_info) und der Insert erfolgreich.Suite
pytest generative lib/decision_engine/tests shared/tests -q: 5790 passed, 3 skipped, 4 deselected, 0 failed (inkl. der 2 neuen Tests).ruff
ruff check .— All checks passed.ruff format --check .— sauber (neue Testdatei einmalig mitruff formatautoformatiert, dann grün).Closes #231