From c8f39024e16830ca0b7c4b36a2580fc9ce996b6b Mon Sep 17 00:00:00 2001 From: m3ta-chiron Date: Sun, 18 Oct 2026 15:06:56 +0200 Subject: [PATCH] docs: normalize task headings for brief extraction --- .scratch/talk-2-0/plan.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.scratch/talk-2-0/plan.md b/.scratch/talk-2-0/plan.md index 460a10f..37d2011 100644 --- a/.scratch/talk-2-0/plan.md +++ b/.scratch/talk-2-0/plan.md @@ -24,7 +24,7 @@ Branch: feat/v1 (ab main; Repo wird in Task 01 initialisiert) - **Doku-Sprache:** Deutsch (README, Skill). - **Commits:** Conventional Commits; keine Pushes; keine Änderungen außerhalb des Repos (Ausnahme Task 12, siehe dort). -## Task 01: Repo-Skeleton & CI-Backbone +## Task 1: Repo-Skeleton & CI-Backbone Keine Blocker. Liefert: initialisierbares, grünes Go-Repo. @@ -38,7 +38,7 @@ Keine Blocker. Liefert: initialisierbares, grünes Go-Repo. - Mind. ein sinnvoller Test, der die CI-Struktur verifiziert (z. B. Version-String-Test). - Abnahme: `go vet && go test && go build` grün; Workflow-Datei valider YAML; README/LICENSE vorhanden; Commit(s) conventional. -## Task 02: Erste Ansage end-to-end (OS-TTS) +## Task 2: Erste Ansage end-to-end (OS-TTS) Blockiert durch: 01. Liefert: `talk "Hallo Welt"` spricht über OS-TTS. @@ -50,7 +50,7 @@ Blockiert durch: 01. Liefert: `talk "Hallo Welt"` spricht über OS-TTS. - `cmd/talk`: `say`-Pfad implementiert: Text (Arg oder stdin) → langdetect → Providerauswahl (hier: osbuiltin, Kette kommt in Task 03; Struktur so, dass `--provider`-Flag schon existiert und `osbuiltin` default ist) → Synthesize → Sink.Play. Blocking (Daemon kommt in Task 04). - Abnahme: `talk "Hallo Welt"` erzeugt hörbare Ausgabe auf dem Dev-Host (Linux; espeak vorhanden oder als Dev-Abhängigkeit dokumentiert); `TALK_AUDIO_SINK=null` läuft ohne Ton durch; `go test ./...` grün (langdetect + config + provider-mit-fake-proc wo sinnvoll). -## Task 03: Provider-Kette mit Cloud-Anbietern +## Task 3: Provider-Kette mit Cloud-Anbietern Blockiert durch: 02. Liefert: Vier-Stufen-Fallback mit Keys + Fake-barkeit. @@ -64,7 +64,7 @@ Blockiert durch: 02. Liefert: Vier-Stufen-Fallback mit Keys + Fake-barkeit. - Tests: jeder Cloud-Provider gegen `httptest`-Fake (200 mit Bytes; 500 → Fehler; 401 → Fehler) **außer edge** (WebSocket-Protokoll — edge wird über Interface + Fehlerpfad-Mock und eine als `testing.Short` überspringbare Integration-Testmarkierung behandelt; Dokumentationspflicht im Report, welche Teile fake-bar getestet sind); Kettentests: erster 500 → zweiter getroffen → Bytes. - Abnahme: `talk "Test" --provider=elevenlabs` mit echtem Key funktioniert am Dev-Host ( einmalig manuell, im Report dokumentiert); ohne jeden Key wählt die Kette edge bzw. osbuiltin; `go test ./...` grün. -## Task 04: talkd-Daemon + Queue + Mute +## Task 4: talkd-Daemon + Queue + Mute Blockiert durch: 02, 03. Liefert: Daemon-betriebene, serialisierte Ansagen mit persistentem Mute. @@ -79,7 +79,7 @@ Blockiert durch: 02, 03. Liefert: Daemon-betriebene, serialisierte Ansagen mit p - Tests an der **Prozessgrenze** (primäre Seam): talkd mit Fake-Provider-Endpunkt + `audio.sink=null` starten; per CLI/HTTP enqueue; assert: Serialisierung (2 schnell nacheinander → nacheinander abgespielt, an Fake+Sink beobachtbar), Priorität, Mute-Persistenz über Daemon-Restart, cancel, non-blocking-Verhalten (say kehrt vor Abspielende zurück), Degraded Mode (Daemon tot → Lock-File-Pfad). - Abnahme: alle Prozessgrenzen-Tests grün; `talkd &` + 3 parallele `talk`-Aufrufe → drei Ansagen nacheinander; `talk mute` → Daemon-Restart → weiter stumm. -## Task 05: Rate-Limit + Ruhezeiten +## Task 5: Rate-Limit + Ruhezeiten Blockiert durch: 04. Liefert: Daemon-Gesetz gegen Spam. @@ -88,7 +88,7 @@ Blockiert durch: 04. Liefert: Daemon-Gesetz gegen Spam. - Tests an der Prozessgrenze: kurzes Rate-Limit (z. B. 1/s) konfigurieren; 5 enqueues → 1 abgespielt, low verworfen, normal geparkt; quiet_hours-Fenster künstlich um die aktuelle Zeit legen → discard/toast-Verhalten. - Abnahme: Tests grün; `talk status` zeigt Rate-Limit- und Quiet-Hours-State. -## Task 06: CORS-Tür + MCP-Endpoint +## Task 6: CORS-Tür + MCP-Endpoint Blockiert durch: 04. Liefert: Browser- und MCP-Anbindung auf localhost. @@ -99,7 +99,7 @@ Blockiert durch: 04. Liefert: Browser- und MCP-Anbindung auf localhost. - Tests: MCP-Handshake + tools/call an der Prozessgrenze (HTTP-Payloads literal getestet); CORS-Preflights. - Abnahme: curl-Preflight von gelisteter Origin ok; ein MCP-fähiger Client (z. B. manuelle JSON-RPC-Curl-Sequenz im Test/Report) sieht `speak` und enqueued erfolgreich. -## Task 07: `talk wrap` +## Task 7: `talk wrap` Blockiert durch: 04. Liefert: Befehlsummwicklung mit Ansage. @@ -109,7 +109,7 @@ Blockiert durch: 04. Liefert: Befehlsummwicklung mit Ansage. - Tests: Unit für Formatierung + Prozessgrenze: `talk wrap -- sleep 1` mit Fake/Sink null → enqueue-Call mit Erfolgs-Ansage verifiziert; fehlschlagender Befehl → Code 2 durchgereicht + Fehler-Ansage. - Abnahme: `talk wrap -- sleep 2` annonciert Erfolg + Dauer; Exit-Codes korrekt. -## Task 08: `doctor` / `test` / `voices` (plain) +## Task 8: `doctor` / `test` / `voices` (plain) Blockiert durch: 03, 04. Liefert: Selbstdiagnose und plain Oberflächen. @@ -119,7 +119,7 @@ Blockiert durch: 03, 04. Liefert: Selbstdiagnose und plain Oberflächen. - Tests: doctor gegen laufenden/keinen Daemon an der Prozessgrenze (mit sink null + fake provider); voices-Output-Format Unit. - Abnahme: bei kaputtem Setup (falscher Port, Key weg) nennt doctor die Punkte explizit; `talk test` funktioniert einmal end-to-end am Dev-Host. -## Task 09: Bubble-Tea-TUI: `setup` / `status` / `voices` +## Task 9: Bubble-Tea-TUI: `setup` / `status` / `voices` Blockiert durch: 03, 08. Liefert: geführtes Onboarding, Live-Dashboard, Voice-Picker.