---
from: qwen
to: dom
date: 2026-06-04
topic: revue-build-beta
status: open
priority: high
references:
  - inbox/for-qwen/2026-06-04_14-35_claude_repartition-jobs-beta.md
---

# Revue build beta — 2026-06-04

## Resume
**2 risques bloquants, 4 recommandations**

## Risques bloquants

| # | Fichier | Ligne | Risque | Impact |
|---|---|---|---|---|
| B-1 | `scripts/build_windows_oneclick.ps1` | ~189-203 | `RequiredSourceFiles` liste 11 fichiers **source .py** comme prerequis au build (`launcher.py`, `Pseudonymisation_Gui_V5.py`, `admin_rules.py`, etc.). Ces fichiers sont necessaires au *runtime* de l'app, mais le build PyInstaller les embarque via le `.spec` (Analysis sur `launcher.py`). Cette verification est redondante mais **non bloquante en soi** — en revanche, si l'un de ces fichiers est deplace ou renomme, le build echouera avec une erreur explicite. | Build casse si un module source est deplace |
| B-2 | `scripts/build_windows_oneclick.ps1` | ligne 201 | `Require-Path` sur `models\camembert-bio-deid\onnx\model.onnx` — le modele ONNX doit etre present **avant** le build. Le `.gitignore` exclut `*.onnx` et `models/`. Donc sur une machine de build propre (clone frais), le build **echouera systematiquement** sans etape prealable de telechargement/depot du modele. C'est documente dans `docs/build-windows-oneclick.md` ("modele ONNX embarque requis doit exister localement"), mais aucun script ne le telecharge automatiquement. | **Bloquant** : build impossible sur clone frais sans action manuelle |

## Recommandations

| # | Fichier | Sujet | Proposition |
|---|---|---|---|
| R-1 | `scripts/build_windows_oneclick.ps1` | Timestamp server HTTP | Ligne 10 : `http://timestamp.digicert.com` utilise HTTP (non RFC 3161). Le serveur DigiCert supporte `http://timestamp.digicert.com` mais Microsoft recommande RFC 3161 (`http://timestamp.digicert.com` fonctionne en pratique). Pas bloquant, mais mentionner que le serveur RFC 3161 est `http://timestamp.digicert.com` (meme URL, protocole different dans SignTool). |
| R-2 | `build_windows_installer_oneclick.bat` | Nom du script PS appelle | Ligne 7 : pointe vers `scripts\build_windows_oneclick.ps1` (le script complet de build EXE+ZIP+installer). Le fichier s'appelle `build_windows_installer_oneclick.bat` mais relance le build **complet**, pas uniquement l'installateur. Si l'EXE existe deja, c'est inefficace (rebuild complet). Le script dedie `scripts/build_windows_installer_only.ps1` existe mais n'est appele par aucun `.bat`. Ajouter un `build_windows_rebuild_installer.bat` qui appelle `build_windows_installer_only.ps1`. |
| R-3 | `installer/Anonymisation.iss` | `AppPublisher` | Ligne 2 : `#define MyAppPublisher "CHUXX"` — c'est un placeholder, mais le fichier est versionne. Pour une beta, c'est acceptable, mais avant diffusion externe, remplacer par le nom reel de l'editeur. |
| R-4 | `scripts/install_inno_setup_build_dep.ps1` | Telechargement HTTP non verifie | Ligne 4 : telecharge `innosetup` depuis `https://jrsoftware.org/download.php/is.exe` sans verification de hash apres telechargement. Sur une machine de build, un download corrompu ou intercepte installerait un binaire inattendu. Ajouter une verification de hash SHA256 ou utiliser `Invoke-WebRequest` avec `-UseBasicParsing` + verification. |

## Verifications conformite

- [x] D-11 : EXE auto-suffisant sans installer — **CONFORME**. Le `.spec` embarque tous les modules via `hiddenimports` et `datas`. Le ZIP `Anonymisation-Windows.zip` contient l'EXE seul + README.txt. Aucun installateur requis pour l'utilisateur final. L'installateur Inno Setup est optionnel (`-SkipInstaller` disponible, et un avertissement est affiche si Inno Setup est absent).

- [x] D-13 : Mode admin NON active par defaut — **CONFORME**. Aucun des scripts de build ne definit `ANON_ADMIN`, ne cree de fichier `.admin`, ni n'embarque de fichier `.admin` dans le package. Le `launcher.py` ne definit pas cette variable d'environnement. Le `.gitignore` n'exclut pas `.admin` explicitement, mais le fichier n'est cree que manuellement. Le README.txt genere ne mentionne pas le mode admin.

- [x] D-14 : Pas de reference a `app.aivanov.fr` qui fuiterait — **CONFORME**. `grep` confirme : `app.aivanov.fr` n'apparait dans **aucun** fichier `.ps1`, `.bat`, `.iss`, `.py`, ou `.spec`. La reference `app.aivanov.fr` est uniquement dans `docs/coordination/decisions/2026-06-02_dom_d14-plateforme-licence-architecture.md` (fichier de decision, non embarque dans l'EXE). Le `launcher.py` contient `self.root.title("aivanonym")` et `APP_DIR` — pas de fuite de domaine.

## Autres observations

### Chemins absolus / secrets
- **Aucun chemin absolu** (`C:\Users\dom\...` ou `/home/dom/...`) trouve dans les 6 fichiers de build lus. Le probleme Q-2 signale dans l'audit (`chemin absolu C:\Users\dom\...` dans `anonymisation_onefile.spec`) a ete corrige — le `.spec` utilise `SPECPATH`/`project_dir` de maniere relative.
- **Aucun secret en dur** : `build_signing.example.ps1` contient des placeholders (`REMPLACER_PAR_L_EMPREINTE_DU_CERTIFICAT`). Le fichier `build_signing.local.ps1` est correctement exclu par `.gitignore`.
- Le parametre `-PfxPassword` passe le mot de passe en ligne de commande a `signtool.exe` (`/p`), ce qui peut apparaître dans les logs processus Windows. C'est une limitation inherente a SignTool — acceptable si le build est lance sur une machine dediee.

### Artifacts PII dans le repo
- Les fichiers de build **ne generent pas** de PII. Le `README.txt` genere contient uniquement date/branch/commit/signature.
- Le hash SHA256 est ecrit dans `release/Anonymisation.exe.sha256.txt` — pas de PII.

### Dependances non documentees
- `build_windows_oneclick.ps1` necessite : Python (3.11 ou 3.x), `requirements.txt`, `pyinstaller`, et optionnellement Inno Setup 6. Tout est documente dans `docs/build-windows-oneclick.md`.
- Le script `install_inno_setup_build_dep.ps1` installe Inno Setup en mode utilisateur (`/CURRENTUSER`) — pas besoin de droits admin, ce qui est coherent avec le principe de moindre privilege.

### Cohérence BAT <-> PS1
- `build_windows_installer_oneclick.bat` appelle `build_windows_oneclick.ps1` (le build complet), pas `build_windows_installer_only.ps1`. Le nom du `.bat` suggere qu'il ne fait que l'installateur, mais il rebuild tout. Ce n'est pas bloquant, mais preteur a confusion.

## Conclusion

**Go avec reserves** — Le build est structurellement sain. Aucun chemin absolu, aucun secret, aucune reference `app.aivanov.fr` dans les artefacts de build.

**Reserve principale** : le modele ONNX (`models/camembert-bio-deid/onnx/model.onnx`) est un prerequis non automatise. Le build echouera sur un clone frais sans etape manuelle prealable. Pour une beta a un seul utilisateur qui connait la procedure, c'est acceptable. Pour une reproductibilite future, envisager un script `scripts/download_models.ps1` ou une verification avec message d'erreur explicite ("Modele ONNX manquant — telecharger depuis HuggingFace ou restaurer depuis backup").
