[P1][osd] Clarifier le contrat Process et nettoyer les groupes avant restart #30

Open
opened 2026-07-31 21:05:14 +00:00 by mathieu · 2 comments
Owner

Constat

OSD dépend de stdin mais Process ne le garantit pas, d'où trois assertions dynamiques (internal/ui/osd.go:231-242, :324-328, :353-363). Quand le leader sort, son groupe peut garder des descendants; clearProcess oublie alors le PGID avant restart (:169-194).

Tâche

Ajouter Stdin() io.WriteCloser au contrat compile-time de Process, adapter les fakes, et conserver la propriété du groupe jusqu'à sa terminaison explicite avant restart. Wait reste appelé exactement une fois sur le fils direct.

Critères d'acceptation

  • Un executor ne peut pas retourner un process sans stdin.
  • Aucun type assertion stdin ne reste dans OSD.
  • Un helper qui fork puis sort ne laisse aucun descendant avant restart/Close.
  • Aucun PGID non possédé ne peut être signalé.

Validation

go test -race ./internal/sysexec ./internal/ui ./internal/audio/pwrecord ./internal/session ./internal/acceptance

## Constat OSD dépend de stdin mais `Process` ne le garantit pas, d'où trois assertions dynamiques (`internal/ui/osd.go:231-242`, `:324-328`, `:353-363`). Quand le leader sort, son groupe peut garder des descendants; `clearProcess` oublie alors le PGID avant restart (`:169-194`). ## Tâche Ajouter `Stdin() io.WriteCloser` au contrat compile-time de `Process`, adapter les fakes, et conserver la propriété du groupe jusqu'à sa terminaison explicite avant restart. Wait reste appelé exactement une fois sur le fils direct. ## Critères d'acceptation - Un executor ne peut pas retourner un process sans stdin. - Aucun type assertion stdin ne reste dans OSD. - Un helper qui fork puis sort ne laisse aucun descendant avant restart/Close. - Aucun PGID non possédé ne peut être signalé. ## Validation `go test -race ./internal/sysexec ./internal/ui ./internal/audio/pwrecord ./internal/session ./internal/acceptance`

Correctif proposé dans la PR #42 (#42). Les validations ciblées sous race sont détaillées dans la PR.

Correctif proposé dans la PR #42 (https://git.2027a.net/mathieu/murmur/pulls/42). Les validations ciblées sous race sont détaillées dans la PR.

Correctif proposé et validé dans la PR #42 : #42.

Correctif proposé et validé dans la PR #42 : https://git.2027a.net/mathieu/murmur/pulls/42.
Sign in to join this conversation.
No labels
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
mathieu/murmur#30
No description provided.