Journal
6 min de lecture

La semaine d'avant : ce que seule une vraie soirée trouve

Une semaine avant mon anniversaire, j'ai testé Orfeo pendant un repas avec quatre amis. Tous mes tests passaient. La soirée a quand même trouvé cinq bugs — et le jour J en a trouvé un sixième.

Une semaine avant mon anniversaire, tous mes tests passaient.

Le cerveau d'Orfeo était testé. La base tenait 140 invités simulés. Sur le papier, c'était prêt.

Alors j'ai fait la seule chose qui manquait : un repas avec quatre amis, Orfeo aux commandes, comme si c'était le vrai jour.

Vingt-huit correctifs plus tard, j'ai compris la différence entre « chaque pièce marche » et « ça tient une soirée ».

Le titre banni qui revient

Premier fantôme. Pendant le repas, un morceau passe, personne n'en veut, je mets mon véto. Il saute. Parfait.

Une heure plus tard, il est de retour sur l'écran de salle. En position 4 de la file. Alors qu'il est affiché, noir sur blanc, dans ma liste rouge.

L'explication est bête. Bannir un titre à venir le retirait bien du lecteur. Bannir le titre en cours le faisait juste sauter — son entrée restait dans la liste d'Apple Music. Et quand le lecteur arrivait au bout et rebouclait, mon titre banni redevenait un titre « à venir » comme les autres.

Mes tests vérifiaient qu'un véto faisait sauter le morceau. Aucun n'attendait une heure pour voir s'il revenait.

Le rap d'il y a une heure

Celui-là m'a vraiment inquiété.

Le repas avance, l'ambiance a changé, et d'un coup : The Kinks, puis Chappell Roan… avec du rap français en attente derrière. Du rap choisi une heure plus tôt, quand la soirée était encore rap.

Je me suis dit que ce n'était pas gagné, pour l'enchaînement fluide et logique.

Voilà ce qui se passait. Quand personne ne propose rien, Orfeo choisit des titres tout seul et les range dans la file comme n'importe quelle proposition. Sauf que ces titres-là n'expiraient jamais. Ils perdaient face aux titres votés, donc ils restaient derrière. Mais ils gagnaient chaque créneau que les invités ne remplissaient pas.

Résultat : la salle entendait le registre d'il y a une heure.

Et rien dans ma formule ne l'attrapait. Ma pénalité de genre punit la répétition, pas l'incohérence. Deux morceaux de registres opposés peuvent avoir la même énergie et coller aussi bien l'un que l'autre à la phase.

Le correctif : passé quarante minutes, un titre choisi par la machine n'est plus candidat. Avec une exception qui fait toute la difficulté — sauf s'il ne reste plus assez à jouer. Ces titres sont le filet de sécurité. Les faire expirer trop strictement, c'est vider la file exactement au moment où on en a besoin.

Le filet qui s'efface tout seul

En parlant de filet.

J'avais prévu une sortie de secours : si tout plante ou s'emballe, exporter la file à venir en playlist Apple Music et continuer à la main. Un « au cas où ».

En relisant le code cette semaine-là, je suis tombé sur ça : quand Orfeo publiait une file vide, il effaçait tout ce qui existait. Logique, en un sens. Sauf qu'un simple raté réseau au mauvais moment était indiscernable d'une file vide.

Donc : coupure réseau, Orfeo croit que la file est vide, il efface tout — y compris les lignes que ma sortie de secours était censée lire.

Le filet de sécurité, supprimé au pire moment, par l'échec de la lecture qui devait justement le restaurer.

La règle depuis : une file vide veut dire « je n'ai rien à dire ». Jamais « efface ».

Je ne me suis jamais servi de la sortie de secours. Mais j'ai mieux dormi en sachant qu'elle marchait.

L'écran qui s'endort

Les deux derniers sont moins spectaculaires, et tout aussi impossibles à voir depuis mon bureau.

L'écran de salle — celui qui affiche le titre en cours — s'éteignait au bout d'un moment. Rien ne le gardait éveillé. Et quand j'ai ajouté ce qu'il fallait, j'ai découvert que le navigateur relâche ce verrou tout seul dès que la page passe en arrière-plan, sans prévenir.

Et les téléphones. À chaque mise à jour, chaque téléphone rechargeait tout. Avec quatre amis, ça ne se voit pas. Avec quarante-cinq, chaque vote déclenche quarante-cinq rechargements complets. Mon test de charge ne pouvait pas le voir : il simulait des invités, pas l'application qui tourne dans leur poche.

Celui que la répétition n'a pas trouvé

Je pourrais m'arrêter là et dire que la répétition a tout attrapé. Ce serait faux.

Le soir de mon anniversaire, la file d'Apple Music a fait un saut — un rebouclage, un véto tombé loin. Orfeo a regardé la position du lecteur, vu qu'il avait avancé de douze titres, et en a conclu que douze titres venaient de passer.

En une minute, douze propositions d'invités ont été marquées « jouées ». Aucune n'était passée.

Je ne l'ai pas vu sur le moment. Personne ne me l'a dit. Je l'ai trouvé après, dans les données. Douze titres proposés par des invités ce soir-là, et jamais entendus.

Le correctif tient en une phrase : un morceau ne peut pas être « fini » s'il s'est écoulé moins de soixante secondes. Le principe derrière compte plus que le code : rater un marquage coûte peu, en inventer un coûte à un invité sa chanson. Dans le doute, on ne marque pas.

Ce que j'en retiens

Ce qui me faisait le plus peur, toute cette semaine, c'était l'enchaînement des morceaux. Pas un plantage. Pas une erreur à l'écran. Juste la musique qui continue, mais qui sonne faux.

Et c'est exactement ce que mes tests ne savaient pas voir. Un test vérifie qu'une règle fait ce qu'elle dit. Il ne s'assoit pas à table pendant trois heures pour sentir que l'ambiance a changé.

Les bugs de cette semaine ont tous le même profil. Aucun ne plante. Tous ont besoin de temps — une heure, un rebouclage, quarante minutes — et de vrais gens qui font des choses dans le désordre.

Si tu construis quelque chose qui doit tenir une soirée, fais une soirée. Une petite. Quatre amis et un repas suffisent.

C'est le dernier article de cette série. La suite d'Orfeo, c'est de l'ouvrir à d'autres que moi — et il y aura des choses à raconter.

— Pato