Paillasse/docs/dette.md
Adam Belkacemi f899aac48a corrige le code de classe (caractères ambigus) et fige l'image Uptime Kuma par digest
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-12 21:50:53 +02:00

6 KiB

Dette technique

Ce qui est connu, accepté pour l'instant, et à traiter. Une ligne par sujet ; retirer la ligne (et le noter dans le journal) quand c'est fait.

Sujet Pourquoi c'est une dette Quand Origine
Image Uptime Kuma encore « historique » (même contenu que :1, désormais figé par digest — 2026-10-12) Le digest figé est celui publié sous le tag flottant :1 (1.23.17), qui injecte encore docker-latest-warning.js (sans impact : visible seulement sur /setup, jamais atteint). Migrer vers le build du tag versionné 1.23.17 (digest différent, probablement une image reconstruite sans ce script) demande de re-pull et de revérifier la page de statut et les sondes — pas fait ici. Avant le pilote Demande d'Adam, 2026-10-09 ; réduite le 2026-10-12
Projet paillasse, compte paillasse-service et son rôle créés à la main (étape 6) Pas rejouables par Ansible (gabarit et quota le sont depuis l'étape 13, rôle openstack-projet). Bloc B Étape 6
Clé age des sauvegardes : copie hors du serveur non confirmée Sans elle, aucune sauvegarde n'est déchiffrable si le serveur est perdu (voir docs/runbooks/sauvegardes.md). Adam doit confirmer l'avoir mise en lieu sûr. Dès que possible Étape 3
Vitrine : Tailwind par CDN d'exécution (cdn.tailwindcss.com, 19 pages) Non destiné à la production selon Tailwind, lent, et oblige la vitrine à tolérer les scripts en ligne dans sa CSP. Compiler ces styles avec Vite. Avant ouverture publique Étape 12 (design)
Vitrine : 52 scripts en ligne ; Pyodide et sql.js depuis jsDelivr (/ide) ; vidéo YouTube possible (/cours/…/cm) CSP vitrine avec 'unsafe-inline' ; tiers déclarés dans /confidentialite. Polices, xterm.js et CodeMirror sont auto-hébergés depuis l'étape 14. Héberger Pyodide/sql.js, passer les scripts en fichiers. Avant ouverture publique Étapes 12 et 14
xterm.js 5.5.0 (6.0.0 disponible) Version majeure à évaluer séparément. Bloc B Étape 12
NodeSource installé par curl … | bash Script distant exécuté en root au premier déploiement. Déclarer le dépôt (deb822) avec une clé vérifiée. Bloc B Étape 8
Aucune vérification dans un vrai navigateur Extension Chrome non connectée (étapes 8, 12 et 14). La CSP n'est contrôlée que par ses rapports. Adam a testé /ide le 2026-10-09 (erreurs corrigées) ; à revérifier : exécution Python et SQL de /ide, pages vitrine utilisant xterm.js/CodeMirror servis par le portail. Dès que possible Étapes 8, 12, 14
Pas de sonde hors du serveur Si le serveur tombe, personne n'est prévenu. À décider avec Adam Étape 7
Kolla installé depuis une branche, pas un tag Reproductibilité. Montée de version ADR 0001
Correction séquentielle (~5 s pour le lab 08) Acceptable ; à paralléliser si la charge l'exige. Bloc B Étape 11
Jeton de console : ≈ 1,1 s par appel Nova remote-consoles Plus gros poste de l'ouverture d'un lab (2,8 s au total, critère < 5 s tenu). Préparer les jetons à l'attribution si besoin. Bloc B Étape 13
Tâches Ansible toujours « modifiées » (composer, npm, build, cache) Brouille la lecture de l'idempotence. Bloc B Étape 8
Mentions légales à compléter Article « Disponibilité et responsabilité » des CGU ; délégué à la protection des données s'il en est désigné (éditeur, SIREN et adresse complétés le 2026-10-09). Avant le pilote Étape 14
Slogans « du lycée au master » Le catalogue va aujourd'hui du lycée au BUT. Positionnement laissé tel quel : décision éditoriale d'Adam. À décider Étape 14
Ancien storage/logs/laravel.log Fichier unique d'avant la rotation quotidienne (étape 14) : jamais purgé, à supprimer ou archiver (accord d'Adam). Dès que possible Étape 14
Pages d'aperçu publiques (32) Signalées comme aperçus avec données fictives ; à retirer ou remplacer au fur et à mesure que les fonctions réelles arrivent. Au fil du bloc B Étape 14
Invitation des élèves majeurs par e-mail (V2 du CLAUDE.md) Demande un service d'envoi d'e-mails (compte ouvert par Adam, DNS SPF/DKIM). Jamais pour les mineurs. V2 2026-10-09
Code de classe : caractères ambigus Généré avec Str::random (0/O, 1/I/l possibles), contrairement aux codes élèves. Utiliser le même alphabet sans ambiguïté. Bloc B 2026-10-09
sudo sans mot de passe pour adam (/etc/sudoers.d/90-adam) La clé SSH de Claude Code (sans passphrase) donne un accès root complet. Retrait proposé à l'étape 16 ; gardé par choix d'Adam pendant le bloc A. Retrait : vérifier son mot de passe (sudo -k && sudo -v), garder la session ouverte, sudo rm /etc/sudoers.d/90-adam, puis playbooks avec -K. Fin du bloc A Étape 16
Visio : pas de relais TURN sur 443 Les réseaux scolaires qui bloquent l'UDP n'auront ni son ni image (CLAUDE.md : tout par 443). Restructurer l'entrée HTTPS (aiguillage Nginx par nom) + coturn ; demande un nom DNS (turn.syllabuslab.fr). Avant le pilote Étape 15
Visio : chat activé à chaud non vérifié L'interrupteur « Chat des élèves » change la barre d'outils par overwriteConfig ; non vérifié en navigateur. Vue mobile de la maquette non reprise (la page élève est simplement adaptative). Bloc B Étape 15
Image Jitsi figée sans procédure de mise à jour stable-11248 : comme pour Kuma, prévoir la montée de version par Ansible (variable visio_version) et rejouer visio-e2e.mjs. Bloc B Étape 15
Self-healing : pas d'alerte Prometheus dédiée syllabus_vm_panne_generale et syllabus_vm_irreparables sont publiées mais sans règle d'alerte ; seul le prof voit une VM irréparable dans la salle d'attente. Avant le pilote 2026-10-12
Self-healing : ne couvre que les VM (pas le serveur, déjà en dette, ni les conteneurs/services, déjà Restart=always) Documenté dans docs/runbooks/self-healing.md, pas une lacune à corriger — rappel pour ne pas le redemander. — 2026-10-12