Le registre des voix de Shorts passe dans la base du service d'état (voix-des-shorts, t_38768ade) #1701
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/migration-voix-shorts-sqlite"
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?
Carte
t_38768ade— la migration de_reseaux/voix-des-shorts.json(série de STUD-1107).Cause. Le registre qui relie un Short YouTube à sa trace de voix n'avait qu'un foyer, un fichier du dépôt, et
enregistrerle relisait puis le réécrivait en entier pour ajouter une ligne : la règle « un lien qui existe ne se réécrit pas » n'était tenue que par ce lire-modifier-réécrire, deux publieurs sortis en même temps (Crayon et Minute Chat en écrivent le même jour) pouvaient poser deux noms pour le même Short.Remède.
etat_partage.sql: tablevoix_des_shorts, une ligne par lien, clé(compte, vid), un champ par valeur — pas de colonne fourre-tout JSON ;vidvérifié comme un identifiant YouTube,comptesans liste fermée (c'estgarde_voix_short.CHAINESqui juge).etat_partage.py:voix_des_shorts_lire/voix_des_shorts_remplacer/voix_des_shorts_poser(le refus de réécriture est fait en base, dans la même transaction que la lecture)._infra/etat-service.py:GET /voix-des-shorts,POST /voix-des-shorts/poser,POST /voix-des-shorts/remplacer. Aucune route existante ne change et le front Svelte ne consomme aucune de ces routes : rien à prévenir côtésvelte.etat_client.py: client du registre,basculer voix-des-shorts [--essai]etrevenir voix-des-shorts(essai sur une base jetable,.bak-sqlite-<date>, copie réécrite depuis la base, pas de verrou de montage)._reseaux/garde_voix_short.py:enregistrerécrit le fichier toujours puis la base quand la bascule est posée ;nom_de_tracelit la base quand elle fait foi et retombe sur le fichier (tenu à jour) quand le service est muet, en le disant. Un service muet ne refuse jamais un Short dont la voix est prouvée ;STUDIO_ETAT_URL=localcoupe tout appel, et les bancs du garde le posent.Preuves.
python3 controle/test_etat_partage.py→ok 8 : voix-des-shorts — …puisTOUT PASSE.python3 controle/test_voix_des_shorts.py→tout est conforme(24 points, dont 13 sur la migration).python3 _infra/test_etat_service.py→OK : le service d'état répond sur chaque route….controle/bancs_concernes.py) : verts, saufcontrole/test_lui_epoques.pyetcontrole/test_provenance.py, déjà rouges surorigin/mainpour la même cause (cette machine voit/studioen NFS, un montage local y est refusé) — sorties comparées, identiques.cargo test --release --locked:test result: okpartout, 77 tests passés, 0 échec ;cargo build --release --lockedsans avertissement.Non fait, volontairement. Aucune bascule n'a été posée sur le service de production : il est injoignable depuis le PC aujourd'hui (
curl http://192.168.1.142:8799/bascules→Failed to connect), et ce n'est pas le rôle de la carte. Le comportement d'avant la bascule est celui demain: le fichier fait foi.Fusionnée automatiquement par
fusion-auto(forge) : CI verte (Rust et Front Svelte), PR relue (étiquetterelu), sans conflit.