Skip to content

Refactor: Live-, Finalize- und Reprocess-Pipelines orchestrieren #40

Open

Description

@LeonStadler

Ziel

Diktatverarbeitung folgt drei festen, nachvollziehbaren Pipelines mit unveränderlichem Versuchssnapshot und wiederholbaren Schritten.

Umfang

  • Pipeline-Schritte aus DictationRuntime extrahieren und bestehende Builder/Module wiederverwenden.
  • Live, Finalize und Recovery/Reprocess typisiert orchestrieren; keine allgemeine Workflow-Engine.
  • Hintergrund-ASR begrenzen und interaktives Diktat priorisieren.
  • AI asynchron und begrenzt ausführen; Rohtext-Fallback und Wiederholung der Textnachbearbeitung erhalten.
  • Reprocess erzeugt neue Ergebnisversionen und überschreibt erfolgreiche Ergebnisse nicht.

Abhängigkeiten

Teil von #28; baut auf #37, #38, #39 und #41 auf.

Akzeptanzkriterien

  • Bestehende Kombinationen aus Modellen, Modi, Snippets, AI und Delivery behalten ihr charakterisiertes Verhalten.
  • Settings-Änderungen wirken nicht rückwirkend auf laufende oder gespeicherte Versuche.
  • Cancel und verspätete Ergebnisse sind idempotent.
  • Keine unbegrenzte AI-/ASR-Warteschlange.

Activity

  1. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Implementierungsstand (2026-10-30)

    Teilweise umgesetzt auf refactor/architecture-foundation: Versuche frieren bereits einen secret-freien Settings-/Pipeline-Snapshot ein. Reprocess verwendet diesen Snapshot, speichert eine neue Ergebnisrevision und liefert nicht automatisch in ein aktuelles Fokusfeld. Live-AI läuft asynchron; eine einzelne Worker-Schleife verarbeitet die neueste Aktualisierung statt einer unbeschränkten Kette.

    Noch offen: Live/Finalize-Schritte aus DictationRuntime in eigene Pipeline-Use-Cases extrahieren, geplantes Scheduler-Prioritätsmodell und belastbarer Verhaltens-/Concurrency-Nachweis für alle Kombinationen. Issue bleibt offen.

  2. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Architekturfortschritt auf refactor/architecture-foundation-next:

    • 1ed42c5, 29b721e, 3dca84d, 9febb41, 00a4f19, f590c57, 94c2179, 2c7a57b, 684f93d, d9b9bf4, 7bb7d13
    • Persistente lokale Jobs/SQLite-History und Retention sind integriert; Live-Insertion, Konfigurations-Snapshot-Erzeugung und bestätigtes Audiojournal sind schrittweise aus dem Runtime-Pfad herausgezogen.
    • Finalisierung nutzt das bestätigte Audiojournal, beendet laufende Live-ASR-Arbeit kontrolliert und verwendet ein explizites Qualitätsprofil für Datei-ASR. Modell-/Backend-Identität und ursprüngliche Settings bleiben erhalten; Reprocessing nutzt weiterhin den ausgewählten Versuchssnapshot.
    • Veraltete Live-Partials können keine neue Session übernehmen. Abbruch entwertet alte Live-Anforderungen und wartet vor Abschluss auf bereits begonnene Einfügungen.
    • Vollständige Swift-Test-Suite bestanden; vier echte ASR-Smoke-Szenarien wurden mangels Test-Audios übersprungen. Xcode macOS-26 Debug-App-Build erfolgreich.

    Issue bleibt offen. Noch nicht abgeschlossen: vollständig getrennte Live/Finalize/Recovery-Pipelines, wiederherstellbare Job-/Ergebnisversionen und explizite Zustellungszustände, Abbruchverträge über Provider hinweg sowie begrenzter Live-Audio-Speicher. Es fehlen weiterhin reale Modell-, Crash-Recovery-, Performance-/RAM- und manuelle Delivery-Nachweise.

  3. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Architekturprogramm – Fortschritt: Textverarbeitung aus Runtime extrahiert

    Ein kleiner, verhaltensgleicher Ausschnitt von #40 ist jetzt in DictationTextProcessor gekapselt: Normalisierung und Bereinigung von ASR-Artefakten werden zentral von Live-, Finalize- und Reprocess-Pfaden genutzt. Drei gezielte Vertragstests sichern Whitespace-, Artefakt- und Live/Finalize-Regeln ab.

    Validierung: vollständige swift test-Suite erfolgreich; macOS-26-Debug-App-Build erfolgreich. Issue bleibt für die noch offenen Orchestrierungs-, Recovery-, ASR-Buffer- und Zustellungsarbeiten offen.

  4. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Architekturprogramm – Fortschritt: überholte Live-AI-Aufrufe abbrechen

    Der LiveInsertionCoordinator cancelt jetzt kooperativ den laufenden Provider-Task, sobald ein neueres Teilresultat derselben Session eintrifft. Die neueste Anfrage bleibt als einzige ausstehende Arbeit erhalten; alte Generationen können weder Zustellung noch Task-Ownership der neuen Session beeinflussen.

    Nachweis: gezielter Race-Test bestätigt Cancellation und Zustellung ausschließlich der neuesten Sequenz. Vollständige Suite und macOS-26-App-Build laufen als Integrationsgates; Issue bleibt offen für den restlichen Pipeline-/Recovery-Umfang.

  5. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Nachtrag zur Live-AI-Cancellation (2026-10-30): Die anschließende vollständige swift test-Suite ist erfolgreich; drei native ASR-Smokes wurden mangels bereitgestellter Test-Audios übersprungen. Der macOS-26-Debug-App-Build ist ebenfalls erfolgreich.

  6. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Architekturprogramm – Live-AI bei Sessionende

    Commit 0a36aae invalidiert beim Abbruch und Cleanup die Sessiongeneration im Live-Insertion-Koordinator. Laufende Providerarbeit wird kooperativ abgebrochen; verspätete alte Aufträge werden abgewiesen. Eine verspätet eintreffende Invalidierung kann eine bereits gestartete neue Generation nicht abbrechen. Der Zugriff auf den verzögert erzeugten Koordinator ist synchronisiert.

    Nachweise: sieben gezielte Koordinator-Tests und macOS-26-Debug-App-Build erfolgreich. Die praktische Abnahme mit echten Providern und der restliche Pipeline-/Recovery-Umfang bleiben offen.

  7. LeonStadler commented on Oct 30, 2026

    @LeonStadler
    OwnerAuthor

    Architekturprogramm – Diktatvorrang bei Wiederverarbeitung

    Commit 33d1b69 reserviert bei einem neuen Diktat zuerst die Session und fordert eine laufende Wiederverarbeitung zum Abbruch auf. Modell- und Aufnahmevorbereitung warten, bis die Hintergrundaufgabe ihre Ressourcen freigegeben hat. Cancellation wird zwischen Konvertierung, ASR, AI und Ergebnisablage geprüft; ein bereits gespeichertes Ergebnis bleibt erhalten und unterbrochene Versuche werden entsprechend markiert.

    Nachweise: gezielter Runtime-Test für Cancellation und Warten auf Freigabe, vollständige Swift-Test-Suite sowie macOS-Debug-App-Build erfolgreich. Vier modellbezogene Smokes wurden mangels Test-Audio übersprungen. Reale Modellunterbrechungen, Crash-Injection und Performance-Abnahme sind weiterhin offen; native Inferenz kann bis zu einem sicheren Abbruchpunkt weiterlaufen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions