docs: normalize task headings for brief extraction

This commit is contained in:
m3ta-chiron committed 2026-10-18 15:06:56 +02:00
1 parent 1d32f4dc71
commit c8f39024e1
1 file changed
+9 -9
+9 -9
View File
@@ -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.