[P1][stt] Faire primer les erreurs fatales sur la recuperation partielle batch #49

Closed
opened 2026-09-09 01:52:33 +00:00 by silex · 1 comment
Owner

Provenance

Suivi de la revue du 4 septembre 2026.
Chemin local : /home/mathieu/Projets/murmur/docs/code-review-2026-09-04.md.
Revue initiale sur 69a2e643, actualisee sur fcd52c78a765322ae60a8ab74bb30daa6f8f90c6.
Les liens ci-dessous sont figes sur f48f1bd4a6db1c488b8ccc0a87fefb547101db2b, HEAD local et distant verifie le 8 septembre 2026.
Les reproductions sont celles consignees dans la revue ; le comparatif Voxtype du 8 septembre a relu les chemins, sans relancer ces tests ni le desktop.
Tous les chemins relatifs Murmur partent de /home/mathieu/Projets/murmur/.

Constat et chemins revus

En batch avec allow_partial=true, une premiere erreur recuperable masque une erreur de budget ulterieure. transcribeWith conserve firstErr, puis l'appelant transforme cette erreur ordinaire en succes partiel. Le correctif de provenance/tri 95a3b5a ne corrige pas ce chemin.

Reproduction documentee

Sans fallback, budget de huit octets : segment 0 -> unavailable, segment 1 -> aaaa, segment 2 -> bbbb (depassement en comptant le separateur). Resultat observe : error=nil, text="aaaa", partial=true.

Sans la premiere erreur ordinaire, le controle retourne correctement l'erreur de limite. Ce n'est pas une allocation illimitee : c'est la garantie de non-livraison apres depassement qui est contournee. La reproduction couvre TranscribeSegments ; l'effet jusqu'au sink etait etabli par lecture, pas par livraison desktop reelle.

Anciennes fixtures : /tmp/opencode/murmur-review-budget_test.go et /tmp/opencode/murmur-review-overlay.json, temporaires non versionnees, presence actuelle non garantie. Commandes conservees dans la revue.

Correction attendue

Faire primer immediatement les erreurs de limite et d'annulation sur une premiere erreur recuperable. Preserver classe et provenance sans convertir une erreur fatale en succes partiel.

Criteres d'acceptation

  • Erreur ordinaire puis succes puis depassement retourne une erreur fatale, jamais un succes partiel.
  • Aucun appel sink dans un test de session couvrant cette combinaison.
  • Annulation apres erreur recuperable ne devient pas un succes partiel.
  • La recuperation partielle reste possible pour les seules erreurs autorisees et dans les budgets.
  • Tests versionnes : avec/sans premiere erreur, allow_partial actif/inactif, UTF-8 et separateur comptes en octets ; repetitions sous -race.

Validation cible : go test -race ./internal/stt ./internal/session ./internal/cli, puis suite complete.
Connexes : #16 et #17 (classification/provenance des echecs), #23 (budget apres expansions du pipeline). Ce ticket vise le masquage d'une limite deja detectee pendant l'assemblage STT batch.

## Provenance Suivi de la [revue du 4 septembre 2026](https://git.2027a.net/mathieu/murmur/src/commit/f48f1bd4a6db1c488b8ccc0a87fefb547101db2b/docs/code-review-2026-09-04.md). Chemin local : `/home/mathieu/Projets/murmur/docs/code-review-2026-09-04.md`. Revue initiale sur `69a2e643`, actualisee sur `fcd52c78a765322ae60a8ab74bb30daa6f8f90c6`. Les liens ci-dessous sont figes sur `f48f1bd4a6db1c488b8ccc0a87fefb547101db2b`, HEAD local et distant verifie le 8 septembre 2026. Les reproductions sont celles consignees dans la revue ; le comparatif Voxtype du 8 septembre a relu les chemins, sans relancer ces tests ni le desktop. Tous les chemins relatifs Murmur partent de `/home/mathieu/Projets/murmur/`. ## Constat et chemins revus En batch avec `allow_partial=true`, une premiere erreur recuperable masque une erreur de budget ulterieure. `transcribeWith` conserve `firstErr`, puis l'appelant transforme cette erreur ordinaire en succes partiel. Le correctif de provenance/tri `95a3b5a` ne corrige pas ce chemin. - [internal/stt/stt.go:583-600](https://git.2027a.net/mathieu/murmur/src/commit/f48f1bd4a6db1c488b8ccc0a87fefb547101db2b/internal/stt/stt.go#L583-L600) : accumulation des segments et conservation de `firstErr`. - [internal/stt/stt.go:263-275](https://git.2027a.net/mathieu/murmur/src/commit/f48f1bd4a6db1c488b8ccc0a87fefb547101db2b/internal/stt/stt.go#L263-L275) : conversion en recuperation partielle. - [Revue, constat P1 n. 3](https://git.2027a.net/mathieu/murmur/src/commit/f48f1bd4a6db1c488b8ccc0a87fefb547101db2b/docs/code-review-2026-09-04.md#L128-L156). ## Reproduction documentee Sans fallback, budget de huit octets : segment 0 -> `unavailable`, segment 1 -> `aaaa`, segment 2 -> `bbbb` (depassement en comptant le separateur). Resultat observe : `error=nil`, `text="aaaa"`, `partial=true`. Sans la premiere erreur ordinaire, le controle retourne correctement l'erreur de limite. Ce n'est pas une allocation illimitee : c'est la garantie de non-livraison apres depassement qui est contournee. La reproduction couvre `TranscribeSegments` ; l'effet jusqu'au sink etait etabli par lecture, pas par livraison desktop reelle. Anciennes fixtures : `/tmp/opencode/murmur-review-budget_test.go` et `/tmp/opencode/murmur-review-overlay.json`, temporaires non versionnees, presence actuelle non garantie. Commandes conservees dans la revue. ## Correction attendue Faire primer immediatement les erreurs de limite et d'annulation sur une premiere erreur recuperable. Preserver classe et provenance sans convertir une erreur fatale en succes partiel. ## Criteres d'acceptation - [ ] Erreur ordinaire puis succes puis depassement retourne une erreur fatale, jamais un succes partiel. - [ ] Aucun appel sink dans un test de session couvrant cette combinaison. - [ ] Annulation apres erreur recuperable ne devient pas un succes partiel. - [ ] La recuperation partielle reste possible pour les seules erreurs autorisees et dans les budgets. - [ ] Tests versionnes : avec/sans premiere erreur, `allow_partial` actif/inactif, UTF-8 et separateur comptes en octets ; repetitions sous `-race`. Validation cible : `go test -race ./internal/stt ./internal/session ./internal/cli`, puis suite complete. Connexes : #16 et #17 (classification/provenance des echecs), #23 (budget apres expansions du pipeline). Ce ticket vise le masquage d'une limite deja detectee pendant l'assemblage STT batch.
Owner

Corrigé par la PR #52 fusionnée sur main (97e5531). Suite make test sous -race validée sur le commit fusionné ; fermeture du ticket.

Corrigé par la PR #52 fusionnée sur main (97e5531). Suite `make test` sous -race validée sur le commit fusionné ; fermeture du ticket.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
2027a/murmur#49
No description provided.