DIX VOTES, PLUSIEURS SANTÉS PUBLIQUES Étude exploratoire du Parlement français — 16 octobre 2026 OUVRIR Ouvrir rapport.html dans un navigateur. Tout le contenu interactif est embarqué ; aucune connexion ni API distante n'est nécessaire. Les liens de documents officiels requièrent une connexion. Décompresser tout le ZIP pour que les liens vers sources et fichiers locaux fonctionnent. Le rapport présente les dix mesures ensemble, puis permet de comparer deux familles politiques à sujet égal. Toutes les vues principales lisent le soutien à la mesure nommée. * Haltes soins addictions : contre la suppression = soutien au maintien ; le scrutin brut est réservé au détail de vérification. Les anciens liens vote=raw sont ramenés à cette lecture harmonisée. L'impression contient les dix fiches de votes, pas seulement le dossier sélectionné. ÉTAT FINAL 82 documents, 8 768 tours et interruptions uniques, 3 600 entrées de codage (3 599 tours uniques), 2 293 entrées classées pertinentes, 1 998 dans les comparaisons politiques. Contrôles mécaniques détaillés dans data/integrite.json. Les quarante contrelectures automatiques donnent κ=0,511 sur la pertinence ; les registres ont des accords variables, parfois faibles. Les valeurs et désaccords restent visibles. LES DIX CAS 1. PFAS — scrutin 848, XVIIe, 20 février 2025, article premier en deuxième lecture. 2. Boissons sucrées — scrutin 241, XVIIe, 4 novembre 2024, amendement 1 en seconde délibération. Le rejet antérieur au scrutin 223 est conservé séparément. 3. Vaccination grippe en cabinet de ville — scrutin 4604, XVIIe, 5 décembre 2025, amendement 929. Il précise/élargit un périmètre d'obligation, notamment aux personnes employées dans le même lieu exposées à la contamination, avec décret après avis HAS ; ce n'est pas un vote sur les seuls résidents d'Ehpad. 4. Haltes soins addictions * — scrutin 4610, XVIIe, 5 décembre 2025, amendements 317/812 de suppression. Le vote CONTRE préserve la prolongation de l'expérimentation à cette étape. 5. Installation des médecins — scrutin 1214, XVIIe, 2 avril 2025, amendements identiques 55/67 rétablissant l'article premier. Les sous-amendements mis aux voix sont rejetés ; l'amendement concurrent 78 tombe. 6. Néonicotinoïdes/betteraves — scrutin 2940, XVe, 6 octobre 2020, ensemble en première lecture. POUR soutient la dérogation. Le « danger sanitaire » du titre concerne aussi une maladie végétale. 7. IVG et Constitution — scrutin 3289, XVIe, 30 janvier 2024, ensemble en première lecture à l'Assemblée. Le Congrès est exclu. 8. Puffs — scrutin 692, XVIIe, 4 février 2025, texte de CMP. 9. Sucres ajoutés aux aliments bébé — scrutin 5847, XVIIe, 26 mars 2026, article unique ; 49 votants. 10. Chlordécone — scrutin 7261, XVIIe, 2 juin 2026, ensemble en deuxième lecture. CE QUE MESURE L'ÉTUDE Dix votes repères dans neuf dossiers distincts, choisis à dessein après examen des résultats. Aucun sondage représentatif, aucun préenregistrement, aucune mesure globale « pro/anti-santé ». Les objets, époques et effectifs diffèrent. Une absence n'est pas un contre. L'unanimité des votants n'est pas celle de toute l'Assemblée. Les groupes sont datés. Les délégations de vote enregistrées sont conservées ; les votants ne sont pas un décompte de présence physique. Les familles descriptives suivent le pilote ; Horizons est classé à droite, LIOT/LT/NI dans Autres. Le détail par groupe prime sur ces rapprochements. En 2020, les non-inscrits restent non-inscrits ; aucune étiquette actuelle n'est projetée sur eux. CORPUS ET UNITÉS Les actes bornent les étapes des dossiers. XML des séances XVIe/XVIIe ; HTML officiel de quatre séances de 2020 pour les néonicotinoïdes. Rapports reproduisant les débats de commission/CMP ; pas d'assimilation des commentaires d'articles à des discours. Les dates de réunions sont distinguées des dépôts. Couverture documentée dans data/couverture_*.json. Les réunions de nomination et étapes sans texte de discours ne sont pas des transcriptions collectées. Le corpus n'inclut pas toutes les mentions historiques des sujets. Tours continus d'un locuteur dans un article/chapitre, interruptions séparées. Tours d'au moins 30 mots codés. Dans les longs tours omnibus (>350 mots), fenêtres de ±100 mots autour des mentions, fusionnées ; une seule annotation par tour. Un tour présent dans deux cas compte une fois dans chacun des cas, mais n’est pas deux voix indépendantes ; ces tours communs sont exclus du regroupement sémantique global. Les prises de parole politiques comparent uniquement les députés/rapporteurs dont le groupe est identifié à la date du discours. Les autres rôles restent conservés et séparés. CODAGE AUTOMATIQUE Qwen3.6-35B-A3B-UD-MLX-4bit local, température 0, graine 20261016 ; un tour par prompt, sans métadonnées de vote/groupe/date/orateur. Masquage des noms et groupes repérés dans le texte, qui peut néanmoins contenir des indices d'appartenance et des noms cités. Codebook dans data/codebook.json et consigne exacte dans travail/consigne.txt. Pertinence R/X/D, quatorze registres non exclusifs et sources explicitement invoquées. Les citations ne sont pas vérifiées scientifiquement : une accusation reste un argument de l'orateur. Aucun code de lobbying ne démontre une influence. Les rares sorties hors alphabet font l’objet d’un nouveau codage avec rappel explicite des mêmes codes ; consigne différente, sortie initiale et recodage sont conservés dans travail/reparations_format et data/reparations_format.json. Cinq réponses restées hors alphabet sont reprises pour les seules sources sous forme de quatre booléens nommés, avec pertinence et registres de la réponse primaire conservés ; voir data/reparations_sources.json. Aucune lettre de source n’est convertie arbitrairement en une autre. Les positions politiques automatiques ont été écartées après des confusions entre modalité et mesure générale, même avec des extraits exacts. Les positions présentées proviennent des scrutins officiels. Essais exclus conservés dans travail/essais et fichiers explicitement nommés essais/pilote. Quarante tours contre-lus par Codex : 2 de séance et 2 de commission par cas, tirage graine 20261016 parmi les entrées ≤350 mots. Longs tours et CMP non couverts. Accord et matrices dans data/validation.json, désaccords conservés. Il s'agit d'un accord de modèles, sans étalon humain. STATISTIQUES Chaque tableau indique ses dénominateurs. Moyenne par tour et moyenne des taux par orateur. Bootstrap percentile 1 000 tirages par document et par orateur, à partir de cinq grappes : stabilité conditionnelle au corpus, pas précision d'un sondage représentatif. Retrait du plus présent, restriction aux séances et commissions séparées. Pas de tests iid sur les paragraphes. Lexique G² au sein de chaque dossier, minimum 8 occurrences globales, 3 orateurs et 2 documents dans la famille concernée ; pas de p-value. Fréquences sans lemmatisation. Jensen–Shannon sur les occurrences de registres non exclusifs. V de Cramér descriptif des scrutins, groupes avec au moins cinq votants, colonnes non vides. Les trois scrutins unanimes ont un V nul par construction. Croisement discours/votes limité aux personnes présentes dans les deux sources, à poids égal par personne ; aucune position inférée pour les silencieux. Les concordances entre votes de dossiers différents ne sont pas des distances idéologiques. COMPARATEUR INSPIRÉ DE LA RESTITUTION HAS Le parcours reprend les pages « contributions » et « comparaisons » d’une restitution antérieure : dix fiches de mesures, comparaison de deux ensembles, univers et mots réellement rencontrés, moteurs de rapprochement, statistiques descriptives, retour aux sources. La palette papier/bleu du carnet est conservée. Les archives de la première version sont dans archives/, hors du nouveau ZIP. La comparaison lexicale utilise les tours de députés/rapporteurs avec groupe daté. Chaque orateur pèse autant. Les expressions contiguës de deux à cinq mots doivent être répétées (≥4 occurrences, ≥3 orateurs, ≥2 documents dans le dossier) et dispersées dans le côté montré (≥2 orateurs, ≥2 documents). Une vue privilégie les expressions d’enjeux selon une liste explicite ; une autre affiche toutes les expressions répétées. Les contextes et offsets proviennent du texte analysé, sans réécriture du modèle. Les lexiques d’univers sont explicites, non exclusifs ; leurs taux ne s’additionnent pas en pourcentage du texte. Les distances J–S comparent les distributions des mots de contenu moyennées par orateur. Les cosinus comparent BGE-M3, MiniLM natif 128 et TF-IDF. Les scores ne sont pas calibrés entre moteurs et ne sont pas des pourcentages d’accord. Deux orateurs et deux documents sont nécessaires de chaque côté ; les petits effectifs restent fragiles. Sensibilités : retrait d’un orateur, genre de débat, inclusion de tous les tours sans filtre Qwen, MiniLM à 512. Corrélation vote/lexique descriptive sur au plus dix mesures, avec retrait d’une mesure ; aucune inférence individuelle ni p-value. Les haltes soins addictions ne comportent aucun tour RN/UDR éligible dans le corpus retenu : à l’étape vérifiée, les amendements sont annoncés comme défendus par la présidence, sans défense argumentée retranscrite. data/controle_hsa_discours.json précise la source et les limites. Les motifs écrits ne sont pas assimilés à des prises de parole. Les votes restent conservés et interprétés avec le sens harmonisé. SÉMANTIQUE BGE-M3 et MiniLM multilingue locaux ; les mêmes passages que ceux soumis au codage sont divisés en blocs de 200 mots, puis moyennés et normalisés au tour. Limite 512 jetons et contrôle à la longueur native 128 pour MiniLM. Troncatures dénombrées, cache par texte. K-moyennes, k=3 à 12, 15 initialisations, graines et sensibilités au modèle/centrage. Projection PCA à deux axes avec variance conservée. Une proximité ou un cluster ne prouve ni accord, ni influence, ni camp politique. REPRODUIRE LES RÉSULTATS GELÉS (SANS RÉSEAU NI MODÈLE) Depuis ce dossier, avec Python 3.11 et numpy/scipy/scikit-learn/matplotlib/lxml/requests (versions dans data/versions.json) : python scripts/reproduire.py Cela recalcule les statistiques et regroupements depuis corpus, annotations et vecteurs gelés, puis les figures, le HTML et les contrôles mécaniques. Les versions utilisées figurent dans data/versions.json. RECODER AVEC LE MODÈLE LOCAL (OPTIONNEL, LONG) Avec mlx/mlx-lm sur Mac Apple Silicon et le modèle déjà présent dans le cache Hugging Face : HF_HUB_OFFLINE=1 python scripts/annoter.py --reuse-inputs --large Le cache d'annotations évite les recalculs. Les entrées gelées sont la référence exacte. Conserver une copie des sorties avant un nouveau codage ; à matériel/version différents, de légères variations sont possibles. Les scripts de collecte initiale utilisent les archives du pilote voisin NutriScore-Parlement ; ces gros ZIP d'origine ne sont pas tous redondés ici. Les URL, empreintes et références des archives sont dans data/archives_origine.json ; les sources nécessaires à la lecture sont incluses. CONTENU rapport.html : carnet autonome, lecture écran et impression. RESULTATS.txt : synthèse des constats fondés sur les votes et des limites. figures/ : figures PNG et SVG, champs et dénominateurs inclus. data/ : cas, corpus, votes bruts et harmonisés, comparaisons_discours.json (univers, expressions, vecteurs agrégés, contrôles), résultats, validation, couverture, versions et intégrité. sources/ : extraits officiels et registre SHA-256. travail/ : entrées masquées, sorties brutes, annotations, vecteurs et essais exclus. scripts/ et web/ : calculs et générateur du rapport. CONDUITE.txt : protocole de conduite et décisions de méthode. selection/ : sélection initiale et décomptes. Les contrôles d'intégrité ne certifient ni la qualité des interprétations du modèle, ni la validité d'une inférence causale. Le carnet reste une étude exploratoire locale. EXPLORATION DE PLUSIEURS GROUPES ET MESURES — V3 La section Comparer les discours commence maintenant par les dix mesures et tous les groupes historiques. Les cases permettent de retenir plusieurs mesures et plusieurs groupes simultanément ; le vote choisi dans la fiche ne modifie pas cette sélection. Regrouper par permet de passer des groupes parlementaires aux familles descriptives. Les expressions, les univers et les matrices de proximités sont trois vues de cette même sélection ; les effectifs, expressions et cases de matrice ouvrent les passages qui les composent. Les paramètres sont conservés dans l’adresse et la sélection peut être exportée en JSON. Les groupes sont identifiés par le groupe officiel et la législature de la prise de parole, même si la mesure a été votée dans une autre législature. Les appellations de 2020 ne sont pas remplacées par les appartenances actuelles. Pour les univers : moyenne par orateur à l’intérieur de chaque mesure, puis moyenne à poids égal des mesures exploitables de chaque groupe. La couverture est affichée ; deux groupes peuvent avoir des couvertures différentes. Les cellules permettent de retrouver les mesures et leurs passages. Pour les distances : calcul à l’intérieur de chaque mesure, puis moyenne à poids égal sur les seules mesures communes aux deux groupes. Une case sans mesure commune exploitable reste manquante. Le nombre et les noms des mesures sont accessibles ; aucune matrice ne constitue un classement global de proximité politique. Les expressions restent des contrastes par mesure contre l’ensemble des autres groupes du corpus de cette mesure. Masquer des lignes ne redéfinit pas cette référence. Le nom de la mesure est affiché auprès de chaque expression ; aucun vocabulaire général indépendant des sujets n’est prétendu. Les seuils de répétition, de locuteurs et de documents V2 sont conservés. Le face-à-face V2 reste disponible dans un panneau secondaire. Références de parcours : les pages « perspectives », « analyses croisées » et « comparaisons » d’une restitution antérieure, inspectées sans modification. Couleur papier/bleu du carnet conservée. Contrôle des moyennes de l’interface : node scripts/verifier_exploration.js. Les contrôles de données restent dans data/integrite.json. FOCUS NUTRI-SCORE — 19 OCTOBRE 2026 Le nouveau complément est accessible par le menu et dans focus-nutriscore/rapport.html. Dix scrutins publics directs retrouvés, décisions non nominatives, catalogue des 240 amendements de la collecte XVIIe, séquences du Sénat, comparateurs de groupes et fiches de personnes. Les 351 passages politiques pertinents de 124 personnes sont distingués des décisions plus récentes. Presse, HATVP et six cas parole/vote sont sourcés. Voir focus-nutriscore/LISEZMOI.txt pour les limites de couverture et la reproduction indépendante. REPRISE DE LA MISE EN PAGE — 19 OCTOBRE 2026 (CLAUDE) rapport.html reprend le gabarit des rapports ExpectPatient, comme le focus Nutri-Score : sommaire latéral repliable (menu sous 900 px), couverture, résumé structuré (contexte, objectif, méthode, résultats, conclusion), encadré « En bref », 1. Introduction (les dix mesures en regard), 2. Méthode (tableau « qui lit quoi », sections techniques repliées), 3. Résultats (coalitions, comparateur des discours, face-à-face, contrôles antérieurs repliés), 4. Discussion, annexes. Mêmes couleurs, polices, mode sombre et mobile ; le focus et le rapport général se renvoient l'un à l'autre. Les calculs et les composants interactifs de Codex sont inchangés : app.js, comparaisons.js et exploration.js gardent leurs identifiants et l'état des filtres reste dans l'adresse. Seules leurs couleurs codées en dur ont été alignées sur la palette (marine, saumon pour les oppositions) ; la matrice des proximités est teintée sur l'étendue des valeurs affichées. node scripts/verifier_exploration.js passe toujours. Fabrication : scripts/rapport.py (inchangé dans sa logique) ajoute web/mise_en_page.css et web/mise_en_page.js après les fichiers de Codex, et appelle scripts/mise_en_page.py, qui calcule depuis data/ le résumé, l'« En bref », les textes chiffrés des chapitres et le sommaire. Chaque phrase chiffrée y est vérifiée par une assertion : si les données changent au point de la rendre fausse, la construction s'arrête. Gabarit : web/rapport.html ; bloc du comparateur : web/exploration.html. Version de Codex conservée dans archives/codex-2026-10-19/. Le livrables.zip a été reconstruit le 21 octobre 2026 (voir plus bas). Ajout du même jour (demande de Nicolas : « encore trop technique », une représentation de l'Assemblée, la lecture des votes discordants par la ligne du groupe) : les résultats viennent juste après l'introduction et la méthode est renvoyée en fin de rapport (chapitre 4) ; résumé et « En bref » en langage courant. Deux sections nouvelles : 2.1 un hémicycle par vote (chaque siège, le vote du député, les écarts à la ligne du groupe cerclés) et 2.2 « Voter avec son groupe » (part des votants qui suivent la majorité de leur groupe, liste des écarts député par député). Calculs dans scripts/mise_en_page.py (groupes()), à partir de data/votes_individuels.json, recoupés avec les totaux officiels de chaque groupe ; ligne d'un groupe = position de la majorité de ses votants (au moins trois), non-inscrits exclus ; cohésion = part de tous les suffrages du groupe qui suivent la ligne, cumulée sur les votes (même définition que la page grand public du Nutri-Score). Le cas Neuder du focus Nutri-Score (16 des 19 votants DR contre au 4515) est cité en lecture seule depuis focus-nutriscore/data/votes.json. Ajout du même jour (demande de Nicolas : les univers sémantiques, savoir rapidement « qui est le méchant ») : 2.1 « Qui soutient la santé publique ? », un indice par camp (part des votes allant dans le sens de la santé publique, moyenne des votes à poids égal), avec l'orientation de chaque vote fixée et justifiée dans la méthode (4.9, ORIENTATION dans scripts/mise_en_page.py) et trois variantes : sept votes qui divisent (gauche 97,1 %, centre 69,9 %, droite 58,9 %, RN et alliés 11,5 %), dix votes, quatre votes sans débat sur l'orientation (RN et alliés 0,4 %). Le classement est le même dans les trois variantes (vérifié par assertion). Codex s'interdisait tout score pour/contre la santé : cette orientation est un choix de lecture, validé par Nicolas le 20 octobre 2026. 2.5 « Les mots de chaque camp » : univers employés au moins 1,2 fois plus que par les autres camps, à sujet égal (calcul de Codex dans data/comparaisons_discours.json ; accents rétablis à l'affichage seulement). VEILLE SANTÉ PUBLIQUE — 20 OCTOBRE 2026 (CLAUDE) index.html, à la racine du dossier, est la page d'accueil de la veille : chaque dossier (un panorama, des focus) et ses sous-articles, avec un résumé et des chiffres-clés. Le sommaire et les textes se modifient dans veille.json (ajouter un dossier ou un sous-article là), puis python3 scripts/construire_veille.py, avec l'environnement de reproduire.py. Le script recalcule les chiffres-clés depuis les données, refuse un lien mort et refuse un texte qui ne respecte pas la voix du site (pas de tiret cadratin, pas de deux-points au milieu d'une phrase). Le rapport des dix votes renvoie à cette page en tête de couverture. Intégration au site ExpectPatient (Firebase, site expectpatient-site, source ~/Documents/Présentations/output/maquettes-site) : pas encore faite. Ce dépôt a ses propres règles (AGENTS.md, site/verifier.py, recette) et ne se déploie que sur demande de Nicolas. Préparation à la mise en ligne (20 octobre 2026) : le rapport des dix votes respecte les contrastes exigés par le site (lien d'évitement, contour des champs à 3:1 au moins) et n'embarque plus de chemin local (source.archive ramené à un chemin relatif dans la page ; data/cas.json inchangé). Les défauts restants sont dans les pages focus-nutriscore/ (voir site/NOTE-VEILLE-2026-10-20.md du dépôt du site). Décision de Nicolas du 20 octobre 2026 : plus de « Version de travail » en couverture, titres sans deux-points (H1 reformulé, 4.1 « Qui lit quoi », deux intitulés de mesures reformulés à l'affichage par rapport.py, data/cas.json inchangé). Participation (20 octobre 2026, remarque de Nicolas sur le Nutri-Score : la cohésion ne compte pas les absents) : la figure du vote de groupe montre, à côté de la cohésion des votants, la part des sièges de chaque groupe qui ont voté (pour, contre ou abstention), cumulée sur les votes de la législature ; même définition que la page Nutri-Score. Sur les huit votes de 2024–2026 : SOC 44,9 %, DEM 42,9, LFI-NFP 41,5, ECOS 40,5, RN 38,6, EPR 26,5, DR 21,4 %. La veille pointe vers la page Nutri-Score unique (#essentiel, #etude-complete) ; construire_veille.py vérifie aussi les ancres. Rubrique « Exploiter l'open data » (20 octobre 2026, demande de Nicolas : une rubrique plus large et moins politique que « Veille santé publique », qui accueillera plus tard d'autres données publiques). index.html et veille.json sont repris : veille.json a pour clés titre, sur, intro, offre (phrase et liens vers verbatims.html et etudes.html du site), sections[] ; chaque section (une source de données, d'abord « Les votes à l'Assemblée nationale ») a ses dossiers. Le Nutri-Score n'a plus qu'une entrée (focus-nutriscore/rapport.html). Les tuiles d'accueil décrivent les données de chaque analyse ; les scores par camp restent dans les analyses. Lien de retour du rapport : « ← Exploiter l'open data ». Audit de Codex du 21 octobre 2026 (qa/AUDIT-CODEX-OPEN-DATA-2026-10-21.md), corrections choisies par Nicolas pour cette page. Constat 8 : le graphique « Écart de votes, écart de mots » du comparateur gardait un fond blanc en sombre (textes à 1,18:1) ; ses fonds, traits, points et sigles, comme ceux de la carte des groupes, du nuage sémantique, des pistes de cadre et des surlignages de contexte, sont tirés des jetons de chaque thème (web/mise_en_page.css ; classes fam-a, fam-b, fam-autre et num dans web/comparaisons.js). Contrôle : panneaux ouverts, aucun texte sous 4,5:1 en clair ni en sombre. Constat 11 : quand deux positions arrivent à égalité en tête, le groupe n'a pas de ligne à ce scrutin, qui sort de sa cohésion (même règle que la page Nutri-Score, écrite en 4.8). Un seul cas sur les dix votes, UDR sur la régulation de l'installation des médecins (2 pour, 2 contre) : la cohésion UDR passe de 79,2 % (24 suffrages) à 85 % (20 suffrages), les autres groupes sont inchangés. La participation est dite « au scrutin » : un suffrage peut être exprimé par délégation (constat 7). Solidité du classement et fichiers (21 octobre 2026, demande de Nicolas). L'indice de santé publique et la cohésion sont recalculés en retirant un vote à la fois (indice() et groupes() de scripts/mise_en_page.py). Sur les dix votes, l'ordre gauche, centre, droite, RN et alliés ne change jamais. Sur les sept votes qui divisent, il change une fois : sans les haltes soins addictions, la droite passe devant le centre (67,8 % contre 65,3 %). Sur les quatre votes sans débat d'orientation, il change deux fois (sans la taxe sur les boissons sucrées, le centre passe devant la gauche ; sans les haltes soins addictions, la droite devant le centre). Dans tous les cas, le RN et ses alliés restent derniers et la droite reste derrière la gauche ; le résumé, l'« En bref » et le verdict de 2.1 le disent ainsi (l'ordre centre/droite n'est plus présenté comme acquis). Cohésion : gauche à 98,4 % au moins, RN à 99,4 % au moins, la Droite républicaine reste le plus divisé des grands groupes (75,8 à 85,5 %) ; seuls les démocrates rejoignent les extrêmes sans le vote sur les médecins (99,1 %). Chaque affirmation est tenue par une assertion. Figure 1 : trait d'étendue sous chaque barre ; 4.9 : tableau de l'indice sans chaque vote. Nouveaux exports, réécrits par rapport.py : data/indice_sante_publique.json (orientation, familles et groupes, trois variantes, détail par vote, recalculs sans un vote) et data/vote_de_groupe.json (définitions, cohésion, participation, recalculs sans un vote, ligne et écarts de chaque groupe à chaque vote). livrables.zip reconstruit par scripts/empaqueter.py (tout le dossier sauf archives/), empreinte dans livrables.zip.sha256 ; la reproduction a été rejouée depuis l'archive décompressée (python3 scripts/reproduire.py, Python 3.11, 52 contrôles sur 52) : données identiques aux arrondis de calcul près (écarts de l'ordre de 1e-16), figures identiques hors identifiants SVG tirés au hasard. Les fichiers publiés ne contiennent plus de références internes (commentaires de web/mise_en_page.css et .js, références de parcours retirées de data/comparaisons_discours.json et de scripts/comparer_discours.py, ce guide) ; rapport.py et construire_veille.py le vérifient avant d'écrire. Des scripts et notes de travail en contiennent encore : l'archive n'est pas à publier telle quelle.