[P1][audio] Nettoyer la capture live après une erreur STT pendant stop #56
Labels
No labels
Agent/Autonomous OK
Agent/Demeter
Agent/Hermes
Agent/Human
Agent/Needs Review
Area/API
Area/Auth
Area/CLI
Area/Data
Area/Docs
Area/Infra
Area/UI
CI/Failing
CI/Flaky
CI/Green
CI/Needs Runner
CI/Needs Workflow
Compat/Backward Compatible
Compat/Breaking
Compat/Migration
Deploy/Ansible
Deploy/Blocked
Deploy/Homelab
Deploy/Needs Config
Deploy/Needs Secret
Deploy/Ready
Deploy/Rollback
Kind/Bug
Kind/Chore
Kind/Design
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Refactor
Kind/Security
Kind/Spike
Kind/Testing
Ops/Backup
Ops/Incident
Ops/Maintenance
Ops/Monitoring
Ops/Upgrade
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Priority
Someday
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Risk
Critical
Risk
High
Risk
Low
Risk
Medium
Security/Auth
Security/Disclosure
Security/Hardening
Security/Secret
Size
L
Size
M
Size
S
Size
XL
Size
XS
Stack/Ansible
Stack/Docker
Stack/Forgejo
Stack/Hermes
Stack/Node
Stack/Postgres
Stack/Python
Stack/Systemd
Status
Abandoned
Status
Blocked
Status
In Progress
Status
In Review
Status
Need More Info
Status
Ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
2027a/murmur#56
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité et périmètre
P1 / high. Capture live, confidentialité et cycle de vie audio. Revue du commit
65442d2.Constat
Un dépassement de budget STT pendant le drainage après
stoptermine la session enfailed, sans livraison, mais laisse la capture et des segments WAV dans le runtime même lorsque la rétention est désactivée.Le chemin
internal/session/orchestrator.go:395–402appellerecording.Abort()puis retourne sansfinishLiveCapture. Dans le recorder de production,internal/audio/pwrecord/live.go:262–280, unAbortarrivé après la prise de possession parStopattend simplement la fin et ne nettoie pas. Le FakeRecorder nettoie ce même cas : le test existant ne révèle donc pas le défaut.Reproduction
Dans une copie du dépôt : assembler l'orchestrateur avec
pwrecord.Newet unFakeExecutorsimulant uniquement le processus pw-record ; fournir cinq secondes de PCM, bloquer le premier appel STT, demander stop, attendre SIGINT, puis libérer une réponse de quatre octets pour un budget de deux octets.Trois répétitions sous
-race: résultatfailed, capturerecording.wavet au moins un segment encore présents avec rétention désactivée. Aucun microphone réel utilisé.Impact
Conservation involontaire de données audio et accumulation de fichiers. Le parcours live est activé par défaut, mais le déclencheur reproduit exige un dépassement de limite STT pendant l'arrêt ; ce n'est pas un blocage systématique de l'usage.
Correction et acceptation
Garantir un nettoyage unique sur toutes les sorties de runLive, sans modifier la propriété Stop/Abort ni masquer l'erreur STT. Ajouter une régression utilisant le recorder de production et un processus simulé, vérifier les limites texte/segments, l'absence de fichiers résiduels lorsque Keep=false et l'absence de livraison. Conserver les contrôles succès et annulation.