Tableau : pastille du haut retirée, fenêtre de Signaler à Mika au-dessus de tout, sujets typés (STUD-1156) #1604
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/cadre-suite"
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?
Delivery Hermes des quatre commits STUD-1156 présents sur
branche/claude-opus-pc-cadre-suite:510e9aa(pastille retirée),8f5bcac(portal Mika),62c382e(sujets typés),9a1f69a(barre latérale sans saut).Note : la carte t_a334c01c mentionnait trois commits (
a53877e6,799681c8,1ae28ba3) ; ces hashes sont devenus stale (re-hashés / complétés par le dépôt forgé). La branche est livrée sans rebase ni modification des commits existants.Vérification statique (diff binaire) : tableau-bord.py ne sort plus
<p id="maj">...; PastilleReleve.svelte + sujet="collecte" ; SUJETS ∈ (processus, tache, collecte, creneau, semaine, top, video, analytique, conso, erreur-page), verifieur_sujet ;_mesure_collecte; pour nom=collecte-youtube, sujet=collecte le testserveur_processusrenvoie raison None ⇒ 201/409, pas « n'est plus dans le relevé ».Il reste à valider côté PC (exécuteur pc-studio) : passage des bancs concordés, et lecture
/opt/studio/www/index.html(absence deid="maj"), ouverture du portal, appel réelPOST /api/processus/signaler— build/deploy nonpossibles depuis le LXC 106 (pas de clef id_pve ni accès LXC 130), carte bloquée pour cet aspect.
fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.Relue et validée par
relecteur(carte t_11bdb2d7, verdict « Relu, conforme ») : étiquettereluposée parrelu-sync. La fusion automatique attend la CI verte.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.394d71e34aeb1f7d5c43fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.eb1f7d5c4359cd14670afusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.59cd14670a6e3b9df4e8fusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.Rebasage fait : la PR n'est plus en conflit, la CI est verte.
Tête
f6ea1904, basehttpforge/main(5a116688au moment du contrôle).git merge-tree --write-tree --name-only httpforge/main HEAD→ code 0, aucun conflit (arbrec31af556) :mergeable=true, étatopen, labelconflitlevé (restentoperateur).success:Le conflit n'était pas sur
PastilleReleve.svelte(celui-ci a fusionné tout seul, une ligne :sujet="collecte") mais sur_tableau/serveur_processus.py, dansrecevoir_signalement.Résolution, sans perte de fonctionnalité :
mesuredu serveur, et 409 « envoyer quand même ») ; elle couvre la collecte YouTube que main a ajoutée entre-temps (collecte-youtube→ sujetcollecte) ;NOM_ERREURS(les signalementserreurs-pagedes fronts d'avant, sanssujet) :sujet_du_nomles ramène au sujeterreur-page; sans cette ligne, ils recevaient un 409 « ce processus n'est plus dans le relevé » ;serveur_processus.pyn'étaient atteintes par aucun banc (sujetconsodéduit du nom, refus « pas un nom de l'onglet Vidéos », refus « pas un nom de la Consommation »). Elles sont couvertes :serveur_processus.pypasse de 278/295 à 281/295, même reste quemain(14 lignes).Vérifications locales,
front/distretiré comme dans le métier Rust de la CI :python3 _tableau/lancer-tests.py --tout→ 189 bancs verts, aucune ligne de cliquet, sortie 0 ;npx vitest run→ 42 fichiers, 350 tests, 0 échec ;npx vite build→dist/index.htmlprésent, 959 507 octets.Signalé, non causé par le rebasage :
_tableau/test_navigateur_cadre_cls.pyéchoue sur ce poste quandfront/distexiste (CLS du téléphone, la barre du bas passe de 485 à 500 px — la barre de défilement). Sortie identique sur la tête d'avant rebasage (59cd1467) ; le banc n'est pas mesuré dans la CI (pas dedist/dans le métier Rust).Fusion non demandée : la carte est
operateur.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.f6ea19049dbd06e8a6c7Rebasage sur
origin/main(47317053) : la PR n'est plus en conflit.hermes/cadre-suite, nouvelle têtebd06e8a6(poussée en--force-with-leasesur l'ancienne têtef6ea1904), base47317053.git rebase origin/maina rejoué les 7 commits sans aucun conflit (16 fichiers,+631/-118) :git merge-base --is-ancestor origin/main HEAD→ oui, historique linéaire sur main.mergeable=true, étatopen, base à jour ; la CI repart (4 travaux « Tests du tableau (Rust + Svelte) » en file).test_navigateur_cadre_cls.py→ OK (« barre à sa place dès 50 ms, rien ne bouge jusqu'à 2 s, CLS du cadre 0 », téléphone : barre 500 × 57 à 0,644) ettest_navigateur_barre_bas.py→ OK.Pourquoi la branche portait un défaut de plus que main, corrigé ici (
bd06e8a6, fichier_tableau/tableau.css) :Au téléphone, le squelette d'attente de la page (630 px) est plus haut que l'écran laissé par les deux barres (572 px). La barre de défilement apparaissait pendant l'attente, puis le contenu monté, plus court, la faisait disparaître : 15 px qui décalaient tout le cadre au montage (barre du bas et barre latérale de 485 à 500 px, CLS 0,0016). Remède :
html.cadre:has(main [id$="-app"] > .squelette){overflow:hidden}dans la fenêtre téléphone — tant que la page n'a pas remplacé son gabarit, elle ne défile pas ; le squelette d'un onglet déjà monté vit plus bas, dans son panneau, donc la page redevient défilable. Une réservation de gouttière (scrollbar-gutter:stable) stabilisait aussi le cadre mais rétrécissait la barre du bas (375 px au lieu de 390) :test_navigateur_barre_bas.py, déjà dansmain, l'a refusée.Preuves mesurées
npx vitest run(front) : 46 fichiers, 400 tests passés, code de retour 0.npx vite build: code de retour 0,dist/index.html1 881 o,app.js158 735 o,base.js354 221 o,dist/984 Ko.python3 _tableau/lancer-tests.py --tout: 190 bancs verts, code de retour 1, 4 bancs rouges — dont 3 sont déjà rouges surmain(mesuré dans un worktree détaché surorigin/main:test_garde_couches.py,test_garde_doublons.py,test_garde_plafond.py, tous les trois surcollecte.py fait 840 lignes, sa dérogation s'arrête à 800) et 1 que cette branche cause :_tableau/test_signalements_parite.py→gestes : le doré n'est plus la sortie de Python (clés : ['gestes', 'journal']). Vert surmain(code 0), rouge ici. Le détail : cette branche change la forme des réponses derecevoir_signalement(ajout desujet,mesure,introuvable,peut_forcer, message « nom de sujet invalide ») tandis quemaina fait passer le signalement au service Rust (commit51cbadb1:/api/processus/signaler,rust/service/src/signalements/) en gardant l'ancienne forme dans les dorésrust/service/tests/fixtures/signalements/*.attendu.json. La parité Python ↔ Rust ne tient donc plus : ex.processus invalideattendu400 {"erreur": "processus invalide"}contre400 {"erreur": "nom de sujet invalide"};signalement completattendu sanssujet/mesure/introuvablecontre ces trois champs côté Python. Ce n'est pas un conflit de rebasage (le rebasage est propre) : c'est le sujet typé de STUD-1156 qu'il faudrait porter au service Rust, ou retirer côté Python — hors du périmètre d'une carte de rebasage, et retirer une fonction visible demande l'accord de l'opérateur.Captures (clair et sombre, bureau 1600 et téléphone 390) :
accueil-sombre-1600.png,accueil-clair-1600.png,accueil-sombre-390.png,accueil-clair-390.png, et la paire de l'état d'attente au téléphoneattente-telephone-avant-v500x701.png/attente-telephone-apres-v500x701.png(la première montre la barre de défilement à droite, la seconde non) — dossier/home/atelier/atelier-hermes/wt/preuves-t_5d66c727-captures/. Vérifié dessus : gabarit d'attente et barres du cadre à leur place, aucun débordement horizontal, pas d'emoji ; les largeurs et le CLS sont mesurés par les bancs, pas à l'œil.Captures de la tête
bd06e8a6(faites avec_tableau/captures-charte.pyet le gabarit d'attente servi avec la vraie build) :accueil-clair-1600.png— clair, bureauaccueil-sombre-1600.png— sombre, bureauaccueil-clair-390.png— clair, téléphoneaccueil-sombre-390.png— sombre, téléphoneL'état d'attente au téléphone, avant le correctif (barre de défilement à droite, le gabarit s'arrête avant elle) :

et après le correctif (

bd06e8a6: plus de barre de défilement, le cadre garde la largeur de l'écran) :État final de la CI sur
bd06e8a6(relevé à 18:13) :Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front)→ success (push et pull_request) :npm ci,npx vitest run(46 fichiers, 400 tests),npx vite build.Tests du tableau (Rust + Svelte) / Rust (_tableau/rust)→ failure (push et pull_request). La porte du dépôt refuse banc par banc ce que la branche casse et quemainne casse pas :_tableau/test_signalements_parite.pypasse surorigin/mainet échoue ici (le détail est dans le commentaire précédent). Ce n'est pas un conflit de rebasage : la branche change la forme des réponses Python des signalements (sujets typés, STUD-1156) sans le pendant Rust (rust/service/src/signalements/, dorésrust/service/tests/fixtures/signalements/*.attendu.json).Autrement dit : plus de conflit, mais la fusion reste refusée tant que la parité Python ↔ Rust des signalements n'est pas rétablie.
fusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.bd06e8a6c73a9acca93efusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.fusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.0e454917563b097ddcef