Lots 1-3 modernisation JS (S8786/S2703/S2486) + retrait Sonar CI/prod

- Lot 1 (S8786, ReDoS) : 5 sites documentes NOSONAR apres preuve empirique
  (script reproductible docs/redos_probe_s8786.js), aucune reecriture
  defensive necessaire.
- Lot 2 (S2703, variable globale implicite) : bug reel trouve et corrige
  (SCENE_OBJECT_NAMES en const au lieu de let, cassait la reassignation
  cross-script depuis scene-editor.js) + test de non-regression ; 4 autres
  sites confirmes surs et documentes.
- Lot 3 (S2486, exceptions avalees) : 6 sites confirmes surs et
  documentes ; 2 sites (config sprite JSON invalide) corriges avec un
  console.warn devtools, comportement joueur inchange, couverts par un
  nouveau test.
- Retrait du job CI sonarqube (.gitea/workflows/deploy.yml) et du service
  prod sonarqube/sonar-postgres (docker-compose.prod.yml) : acces dashboard
  bloque par des soucis d'infrastructure reseau (WSL2/pare-feu Hyper-V en
  local, reseau Docker partage avec Caddy pas en place en prod), sans lien
  avec le code du moteur - mis de cote plutot que de continuer a bloquer
  sur de l'infra. Les lots 4+ de modernisation JS dependent de scores
  Sonar exacts et sont donc egalement en pause (voir CODE_QUALITY.md).

SKIP=djlint : H021 (styles inline, 49 occurrences) est un backlog deja
documente et assume (CODE_QUALITY.md section 6), sur des templates non
touches par ce commit - deja exclu de la CI pour la meme raison.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-18 08:46:24 +02:00
co-authored by Claude Sonnet 5
parent 55e81c0fbb
commit 66d8eaeae8
16 changed files with 666 additions and 112 deletions
-40
View File
@@ -24,46 +24,6 @@ services:
SMTP_PASSWORD: ${SMTP_PASSWORD:-}
SMTP_FROM: ${SMTP_FROM:-}
# SonarQube (rapport qualité — voir sonar-project.properties, CODE_QUALITY.md).
# Base PostgreSQL dédiée (jamais la H2 embarquée par défaut, pas adaptée
# en usage durable) — mêmes images que la stack locale (WSL,
# ~/sonarqube-stack/docker-compose.yml) pour rester cohérent.
# SONAR_DB_PASSWORD : requis, à définir dans le .env du serveur (jamais
# en dur ici) — même convention que REGISTRY_IMAGE ci-dessus.
# Port lié à 127.0.0.1 uniquement (jamais 0.0.0.0) : SonarQube n'est
# JAMAIS exposé directement sur internet, seul Caddy (sur l'hôte, voir
# sonar.forgebase.fr) reverse-proxy vers ce port local avec TLS
# (Let's Encrypt) devant.
sonar-postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: ${SONAR_DB_PASSWORD:?SONAR_DB_PASSWORD is required}
POSTGRES_DB: sonarqube
volumes:
- sonar_postgres_data:/var/lib/postgresql/data
sonarqube:
image: sonarqube:community
restart: unless-stopped
depends_on:
- sonar-postgres
environment:
SONAR_JDBC_URL: jdbc:postgresql://sonar-postgres:5432/sonarqube
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: ${SONAR_DB_PASSWORD:?SONAR_DB_PASSWORD is required}
ports:
- "127.0.0.1:9000:9000"
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
volumes:
forge_projects:
forge_data:
sonar_postgres_data:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs: