docs/perimetre.md
Périmètre du projet
Document de cadrage. Version 1 — 11 septembre 2026. Il définit ce que l'outil fait, ce qu'il ne fait pas, et pourquoi. Toute fonctionnalité absente de ce document est hors périmètre jusqu'à révision explicite.
1. Objectif
Permettre de vérifier ce que les partis politiques font quand ils votent et quand ils dirigent une commune, à partir de sources primaires, dans le contexte d'usage suivant :
- un citoyen sort d'un débat télé ou radio et veut contrôler une affirmation ;
- un journaliste doit sourcer ou contredire une affirmation sous contrainte de temps ;
- un élu ou un attaché parlementaire doit contester une erreur ou une insinuation formulée par un adversaire ou par un commentateur.
Ce troisième usage est structurant : l'outil sera utilisé de façon contradictoire, par des parties qui s'opposent. Il doit donc être conçu pour résister à l'attaque, pas seulement pour informer.
Formulation opérationnelle
Partir d'une affirmation entendue en public, et remonter en moins d'une minute au scrutin, à l'amendement ou à l'indicateur officiel qui permet de la contrôler — ou à la raison explicite pour laquelle elle n'est pas contrôlable.
2. Principes de conception
2.1 Aucun verdict
L'outil ne produit jamais de « vrai / faux ». Il produit un objet factuel, sa source primaire, et ses limites explicites. La conclusion appartient au lecteur.
Raison : un verdict est attaquable, et une seule erreur de verdict détruit la crédibilité de l'ensemble. Un document sourcé n'est pas attaquable de la même façon.
2.2 Le « non vérifiable » est une réponse de plein droit
Chaque réponse négative est typée et affichée comme telle :
| Code | Signification |
|---|---|
NO_ROLL_CALL |
Aucun scrutin public sur cet objet — le vote a eu lieu à main levée, sans trace nominative |
GROUP_LEVEL_ONLY |
Position connue au niveau du groupe seulement, pas de l'individu |
NOT_PRODUCED |
Aucun producteur public ne mesure cette donnée à ce niveau |
EPCI_COMPETENCE |
La compétence relève de l'intercommunalité, la commune ne décide pas |
OUT_OF_CORPUS |
Déclaration hors corpus (plateau TV, meeting, réseaux sociaux) |
OUT_OF_PERIOD |
Hors de la profondeur historique couverte |
AMBIGUOUS_SUBJECT |
L'affirmation ne se rattache pas à un objet identifiable |
Afficher l'absence protège mieux que la taire.
2.3 Jamais de causalité
Un indicateur communal décrit une évolution pendant un mandat, pas l'effet d'une politique. Toute page portant un indicateur local affiche cette réserve de façon non dissimulable.
2.4 Jamais de groupe projeté sur l'individu
Quand la source ne donne que la position d'un groupe (cas du Sénat), l'outil ne dit
jamais comment un sénateur a voté. La granularité est une propriété stockée de chaque
scrutin (core.scrutin.granularite), pas une convention implicite.
2.5 Pré-enregistrement et symétrie
Toute comparaison entre étiquettes est régie par un protocole scellé avant le premier calcul : population, indicateurs, méthode, règles de publication (voir pre-enregistrement-001.md). Sans cela, tout écart observé est attribuable au choix des indicateurs, et l'objection est irréfutable même lorsqu'elle est fausse.
Corollaire : la même page, avec les mêmes indicateurs et les mêmes réserves, est produite
pour toutes les étiquettes éligibles. Une page qui n'existerait que pour une seule
organisation est un défaut, pas un choix éditorial — et la vue
selection.template_coverage la rend visible.
2.6 Un dossier est un filtre, pas un texte
Il n'y a aucune prose dans ce produit. Un dossier est une liste de faits réunie pour
être relue facilement dans un contexte donné, sans avoir à parcourir tout le corpus.
Il vit dans un schéma séparé (selection) qui ne référence que core et derived,
jamais l'inverse.
Conséquence : tout ce que produit un utilisateur est de la donnée structurée, donc aucun compte n'est nécessaire nulle part — ni pour consulter, ni pour créer, ni pour publier. Voir contributions-utilisateurs.md.
Mais le biais ne disparaît pas, il se déplace : sans prose, le filtre est l'argument. D'où la garantie qui remplace l'obligation de citation — toute sélection déclare sa sélectivité, calculée par le système et non par l'auteur. Un filtre ne peut être ni gelé ni listé tant qu'il n'affiche pas combien de faits il retient sur combien d'éligibles.
2.7 Toute page est scellée et citable
Permalien immuable, empreinte SHA-256 du document primaire, date de consultation, version datée de la page. Un screenshot doit être authentifiable.
2.8 Un même plan pour tous les dossiers (D-066)
Un dossier documentaire (docs/*-donnees.md et assimilés) ne part d'aucune thèse. Il
suit toujours le même ordre, pour que le lecteur retrouve la même chose au même endroit :
| section | ce qu'elle contient | d'où ça vient |
|---|---|---|
| Contexte | la place du sujet dans l'action publique : prises de parole à l'Assemblée qui emploient ses mots, déclarations de membres du Gouvernement, intitulés | derived.dossier_mentions_an, ref.fait_dossier |
| Enjeux | ce que les institutions disent de l'importance du sujet, jamais ce qu'en pense le dossier | ref.fait_dossier |
| Cadre | les textes (loi, doctrine, règles européennes) et les définitions officielles | ref.fait_dossier, textes relus dans le Journal officiel |
| Contrôles et évaluations | Parlement, Cour des comptes, juridictions, autorités et hauts conseils | ref.fait_dossier |
| Situation chiffrée | les données, chacune avec sa source, sa date et sa nature ; pour un dossier qui suit des missions de l'État, le tableau des crédits par programme (D-067) | tables core et derived, derived.dossier_budget_programme |
| Ce que les données ne disent pas | les absences, typées (§ 2.2) | — |
| Pièges de lecture, Glossaire, Sources | ||
| Annexe technique | tables, migrations, connecteurs, vérifications, chiffres de référence datés | hors du texte lu par le public |
| Versions | ce qui a changé, et quand |
Règles d'écriture qui en découlent :
- Aucun verdict ni formule de verdict : ni « la prémisse est fausse », ni « idées reçues vérifiées », ni pastilles « oui / non ». Un écart entre un chiffre cité et un chiffre mesuré s'écrit en nommant qui cite le chiffre (orateur et séance, rapport, texte), jamais « le chiffre souvent cité » ou « ce que le débat public confond ».
- Chaque fait porte sa qualité (
ref.qualite_fait) : officiel (établi par une institution), déclaratif (propos d'une partie : élu en séance, ministre, entreprise, association — il est établi qu'il a été tenu, pas qu'il est exact), presse. - Une personne publique citée est liée à sa fiche (
/depute/<slug>/) quand elle en a une ; les sections tirées deref.fait_dossiersont écrites parcmd/sections-dossiers, entre des marqueurs, pour que le lien et la preuve ne divergent jamais de la base. - Trois types de documents seulement : Dossier (constat), Méthode (comment le projet lit une source ou construit une page), Hypothèse chiffrée (hors constat, étiquetée comme telle). Un document n'en mélange pas deux.
- Le lecteur n'a pas à connaître le dépôt : pas de migration, de connecteur ni de référence à la personne qui a posé la question dans le corps du texte.
- Un document de méthode porte le même en-tête (
> **Méthode** · version · date) et une section « Versions ». Les pré-enregistrements scellés gardent le leur : les modifier changerait leur empreinte publiée. - Une source non officielle peut ouvrir une piste, jamais porter un chiffre : un article signé est cité comme analyse (déclaratif), et chaque chiffre repris dans le dossier vient d'une source publique relue au chargement (D-067).
3. Ce que l'outil peut réellement vérifier
Taxonomie des affirmations entendues en débat, confrontée aux données existantes. C'est le seul critère de cadrage qui compte.
| Affirmation type | Vérifiable | Source | Réserve |
|---|---|---|---|
| « Le groupe X a voté contre la loi Y » | ✅ si scrutin public | AN – Scrutins | La majorité des votes sont à main levée → NO_ROLL_CALL fréquent |
| « Le député X a voté contre » | ✅ AN et Sénat | Relevés nominatifs | Voir D-016 : contrairement à ce que ce document affirmait, le Sénat publie bien les votes individuels |
| « X a déposé / proposé Y » | ✅ | AN – Amendements, Dossiers | Dimension inexploitée par les outils existants |
| « X a dit Y à l'Assemblée » | ✅ | AN – Comptes rendus | Hémicycle + une partie des commissions |
| « X a dit Y à la télé » | ❌ | — | OUT_OF_CORPUS. Aucun corpus, aucune intention d'en créer un |
| « Le parti X a voté N % avec le parti Y » | ⚠️ | AN – Scrutins | Le chiffre dépend du jeu de scrutins. Ne jamais publier sans périmètre explicite et reproductible (§5.2) |
| « X a augmenté les impôts » | ✅ | DGFiP – REI, taux votés | Taux ≠ montant payé (bases, exonérations, part EPCI) |
| « X a explosé la dette / n'investit pas » | ✅ | OFGL | Inutilisable sans appariement strate/région/revenu |
| « X n'a pas construit de logement social » | ✅ | RPLS, inventaire SRU | Décalage important entre décision et livraison |
| « La délinquance a explosé sous X » | ✅ série / ❌ imputation | SSMSI, base communale | Faits enregistrés ≠ faits commis. Afficher, jamais imputer |
| « X a versé N € à l'entreprise / l'association Y » | ⚠️ partiel | DECP consolidées | Couverture inégale, SIRET parfois manquants |
| « X a supprimé la cantine gratuite » | ❌ | Délibérations | Hors périmètre définitif (§6.1) |
| « X était absent N fois » | ❌ par choix | AN – Présences | Techniquement possible, structurellement trompeur. Non produit |
| « X avait promis Y » | ❌ | Programmes | Corpus manuel non maintenable |
Taux de couverture attendu
25 à 35 % des affirmations d'un débat télé. Ce chiffre est une hypothèse de conception, pas un objectif à maximiser. Il doit être mesuré sur un corpus réel de débats dès la V1 et publié.
Un outil qui résout un tiers des affirmations de façon inattaquable est une référence. Un outil qui prétend en résoudre 90 % est disqualifié à la première contestation.
4. Matrice des sources
Statuts : P1 = socle V1, P2 = socle V2, P3 = ultérieur.
4.1 Parlement
| Source | Contenu | Granularité | Profondeur | Fréquence | Format | Licence | Priorité |
|---|---|---|---|---|---|---|---|
| data.assemblee-nationale.fr — Acteurs & Organes | Députés, mandats, groupes, commissions | Individu | 14e lég. → | Continue (non contractuelle) | XML, JSON | Licence Ouverte | P1 |
| AN — Scrutins | Scrutins publics, positions nominatives | Individu | 14e lég. → | Par séance | XML, JSON | Licence Ouverte | P1 |
| AN — Amendements | Amendements, auteurs, cosignataires, sort | Individu | 14e lég. → | Continue | XML, JSON | Licence Ouverte | P1 |
| AN — Dossiers législatifs | Dossiers, textes, lectures | Dossier | 14e lég. → | Continue | XML, JSON | Licence Ouverte | P1 |
| AN — Comptes rendus (Syceron) | Débats en séance, texte intégral, id_acteur sur chaque paragraphe |
Intervention | 17e lég. (601 séances, 260 778 interventions) | Par séance | XML | Licence Ouverte | Ingéré |
| DILA — Journal officiel, incréments | Actes nominatifs : nominations dans les corps d'État, entrées au Gouvernement, missions temporaires | Acte (personnes en prose libre) | Incréments quotidiens depuis 2025-07 | Deux livraisons par jour | XML dans tar.gz | Licence Ouverte | Ingéré |
| DILA — Journal officiel, base complète | Décrets de composition du Gouvernement — la seule source qui couvre 2014-2026, le jeu officiel des services du Premier ministre s'arrêtant en 2014 | Membre du Gouvernement | 1990 → 2026 pour le texte ; métadonnées seules avant | Ponctuelle (1,1 Go, 1 236 284 fichiers) | XML dans tar.gz | Licence Ouverte | Ingéré (filtré aux décrets de gouvernement) |
| data.senat.fr — Sénateurs, Dosleg, Ameli | Sénateurs, dossiers (depuis 1977), amendements | Individu / dossier | 1977 → | Périodique | Dump PostgreSQL, CSV, XML Akoma Ntoso | Licence Ouverte | P2 |
| Sénat — base Dosleg | Sénateurs, scrutins, votes nominatifs (1,65 M depuis 2006), dossiers, 30 thèmes officiels | Individu | 2006 → | Périodique | Dump PostgreSQL | Licence Ouverte | Ingéré |
| HowTheyVote.eu | Scrutins nominatifs Parlement européen | Individu | 2019 → | Hebdomadaire | CSV, API | ODbL (code GPLv3) | P3 |
Piège majeur — les dumps NosDéputés/NosSénateurs sont en CC BY-NC-SA. Ils interdiraient toute réutilisation commerciale et contamineraient les données dérivées. Ne pas les ingérer. Aller aux sources primaires AN et Sénat, en Licence Ouverte, qui autorisent explicitement l'usage commercial.
4.2 Budget de l'État et de la Sécurité sociale
| Source | Contenu | Granularité | Profondeur | Fréquence | Format | Licence | Priorité |
|---|---|---|---|---|---|---|---|
Eurostat gov_10a_main |
Dépenses, recettes et solde par sous-secteur (S13, S1311, S1313, S1314) | Sous-secteur × année | 1995 → 2025 | Annuelle, avec révisions | JSON-stat | Décision 2011/833/UE | Ingéré |
Eurostat ESSPROS spr_rec_sumt |
Structure de financement de la protection sociale : cotisations, impôts affectés, impôts généraux | Type de ressource × année | 1990 → 2023 | Annuelle | JSON-stat | Décision 2011/833/UE | Ingéré |
| DREES — comptes de la protection sociale | Prestations par risque, régime et secteur institutionnel financeur | Croisement risque × régime × financeur | 1959 → 2024 | Annuelle | JSON (Opendatasoft) | Licence Ouverte v2.0 | Ingéré |
| DGFiP — situations mensuelles budgétaires | Exécution budgétaire de l'État, cumulée depuis le 1er janvier | Poste × date d'arrêté | janvier 2024 → juillet 2026 (le titre annonce 2013) | Mensuelle | JSON pivoté | Licence Ouverte v2.0 | Ingéré |
| URSSAF — exonérations par mesure | Montant des allègements de cotisations, mesure par mesure | Mesure × année | 2004 → 2025 | Annuelle | JSON | ODbL — partage à l'identique | Ingéré |
| URSSAF — masse salariale du secteur privé | L'assiette des cotisations | Trimestre | 1997 → 2026 | Trimestrielle | JSON | ODbL — partage à l'identique | Ingéré |
| LEGI / JORF — lois de finances et de financement | Les tableaux d'équilibre votés | Loi | Intégrale | Quotidienne | XML en vrac | Licence Ouverte | Liste semée, chiffres non extraits |
Deux avertissements portés par le schéma, pas par une note. Les valeurs
budgétaires référencent obligatoirement une comptabilité (BUDGETAIRE, GENERALE,
NATIONALE), un périmètre et un stade (DEPOT, ADOPTION, REVISION, EXECUTION).
Un solde de loi de finances et un déficit public ne sont pas le même objet ; un solde
voté au dépôt et le même solde à l'adoption non plus. Voir docs/budget-donnees.md
et D-048.
L'ODbL impose le partage à l'identique. Les deux jeux URSSAF sont redistribuables, y compris commercialement, mais toute base dérivée qui les incorpore doit être publiée sous la même licence. L'obligation contamine les exports et se vérifie avant toute redistribution.
4.3 Élus locaux et territoires
| Source | Contenu | Granularité | Profondeur | Fréquence | Format | Licence | Priorité |
|---|---|---|---|---|---|---|---|
| RNE | Maires et conseillers municipaux : identité, commune, CSP, dates de mandat. Aucune nuance politique | Individu | Mandature courante | Trimestrielle | CSV | Licence Ouverte | P2 |
| Résultats des élections municipales (Intérieur) | Nuance de chaque liste, voix, sièges au conseil municipal | Commune × liste | Par scrutin, 2001 → 2026 | Par scrutin | CSV | Licence Ouverte | P2 |
| Dictionnaire des nuances | Nomenclature des nuances politiques | — | Par circulaire | Par circulaire | CSV | Licence Ouverte | P2 |
| INSEE — COG | Communes, fusions, scissions, millésimes | Commune | Historique | Annuelle | CSV | Licence Ouverte | P2 |
| INSEE — Population, revenus (Filosofi) | Population municipale, revenu médian | Commune | Annuelle | Annuelle | CSV | Licence Ouverte | P2 |
| BANATIC | Périmètres EPCI, 125 compétences transférées, président de chaque groupement | EPCI × commune | Annuelle | Continue | API JSON + export XLSX | Licence Ouverte | chargé |
| Résultats municipaux 2020 (Intérieur) | Nuance de chaque liste, voix, sièges — mandature 2020-2026 | Commune × liste | 2020 | Par scrutin | TXT (ISO-8859-1) | Non déclarée — usage autorisé par D-036, classée RESTRICTED | chargé |
La mandature municipale courante court depuis mars 2026 (renouvellement général des 15 et 22 mars 2026). Le RNE a été actualisé en août 2026. La profondeur historique du RNE est faible : reconstituer les mandatures antérieures demande les fichiers de résultats électoraux du ministère de l'Intérieur, à traiter séparément.
La nuance ne vient pas du RNE. Le fichier public des maires ne porte que l'identité, la commune, la catégorie socio-professionnelle et les dates de mandat : quatorze colonnes, aucune politique. La nuance est attribuée par les préfectures aux listes candidates, et n'est publiée que dans les fichiers de résultats du ministère de l'Intérieur. Relier un maire à une nuance suppose donc de passer par la liste qui a remporté la majorité des sièges au conseil municipal — une étape de plus, et une décision de plus (voir D-022).
Piège nuances politiques, mesuré sur le scrutin de mars 2026 :
| communes | part | |
|---|---|---|
| avec au moins une liste nuancée | 3 282 | 9,4 % |
| sans aucune nuance | 31 553 | 90,6 % |
Le seuil est de population : parmi les communes nuancées, le minimum observé est 1 064 inscrits ; parmi les non nuancées, le maximum est 4 343. Neuf communes sur dix n'ont aucune étiquette politique, et ce n'est pas un défaut de collecte : c'est la règle.
Et parmi les 9,4 % nuancées, les quatre nuances « divers » (LDVD, LDVG, LDVC, LDIV) représentent 85,9 % des majorités élues. La nomenclature change à chaque circulaire, d'où le millésime obligatoire. Toute comparaison par étiquette doit exclure ces communes explicitement et afficher le taux d'exclusion.
4.4 Indicateurs communaux
| Source | Contenu | Granularité | Profondeur | Fréquence | Format | Licence | Priorité |
|---|---|---|---|---|---|---|---|
| OFGL | Comptes des communes : dette, investissement, fonctionnement, charges de personnel, épargne, strates (population, rural, QPV, revenu) | Commune × année | 2018 → | Annuelle | API Opendatasoft, CSV | Licence Ouverte | chargé |
| DGFiP — REI / taux votés | Taux de fiscalité directe locale | Commune × année | Longue | Annuelle | CSV, XLSX | Licence Ouverte | P2 |
| SSMSI | Délinquance enregistrée, 15 indicateurs (46 % des lignes sous secret statistique) | Commune × année | 2016 → | Annuelle | CSV.gz (5,2 M lignes) | Licence Ouverte | chargé |
| RPLS | Parc locatif social | Commune × année | Longue | Annuelle | CSV | Licence Ouverte | P2 |
| Inventaire SRU | Taux de logement social, communes carencées | Commune × période | Longue | Annuelle | CSV | Licence Ouverte | P2 |
| DECP consolidées | Attributions de marchés, acheteur, titulaire, montant | Marché | 2018 → | Quotidienne | Parquet, CSV | Licence Ouverte | chargé (core.public_contract, 2 104 142 lignes, 15/09/2026) |
| Observatoire de la lecture publique | Bibliothèques : budget d'acquisition, effectifs, horaires, inscrits, prêts | Commune × année | Longue | Annuelle | CSV | Licence Ouverte | P2 |
| Rapports CRC | Observations définitives des chambres régionales des comptes + réponses | Collectivité | 2016 → | Au fil des contrôles | Texte intégral | Licence Ouverte | P2 |
Les DECP sont déjà consolidées, dédoublonnées et enrichies en amont (DECP-RAMA, DECP-augmented). Ne pas refaire ce nettoyage : consommer la version consolidée.
Piège général sur les indicateurs communaux : il n'existe aucune donnée nationale sur ce qu'une commune a décidé. Ces sources décrivent ce que les producteurs publics mesurent chaque année. Le glissement de l'un à l'autre est la principale erreur à ne jamais commettre (§2.3).
4.5 Comptes nationaux, entreprises et transparence
Ajoutées le 2026-09-12. Toutes chargées.
| Source | Contenu | Granularité | Profondeur | Format | Licence | État |
|---|---|---|---|---|---|---|
| Eurostat — comptes nationaux | Dette, solde, recettes fiscales, dépense par fonction COFOG, chômage, pauvreté | France × année | 1995 → | API JSON-stat | Réutilisation autorisée avec mention (2011/833/UE) | chargé |
Eurostat — compte des sociétés (nasa_10_nf_tr) |
Dividendes versés, impôts acquittés, rémunération des salariés, EBE, valeur ajoutée | Secteur institutionnel × année | 1971 → | API JSON-stat | idem | chargé |
| CNAF | Foyers allocataires du RSA | National × mois | 2016 → | API Opendatasoft | Licence Ouverte | chargé |
| HATVP | Déclarations d'intérêts et de patrimoine : activités professionnelles, mandats, rémunérations déclarées | Déclarant | continue | XML (87 Mo) | Licence Ouverte | chargé |
| INPI / BCE — ratios financiers | CA, marge, EBE, EBIT, résultat net par SIREN et exercice | Société × exercice | 2016 → | API Opendatasoft | Licence Ouverte v2.0 | chargé |
| GLEIF | LEI ↔ SIREN (registeredAs) |
Entité juridique | continue | API JSON | CC0 1.0 | chargé |
| Sénat — répertoire des sénateurs | Matricule, date de naissance, date de décès, groupe, circonscription, profession | Sénateur | historique | CSV (ISO-8859-1) | Licence Ouverte | chargé |
| ESMA FIRDS | Instruments admis à la négociation, LEI de l'émetteur, place de cotation | Instrument | 2017 → | Solr + ZIP/XML | Ouvert | identifié, non chargé |
Ce qui n'existe dans aucune source ouverte, après recherche documentée (D-034, D-035) : la composition du CAC 40 — indice propriétaire d'Euronext ; les dividendes versés par une société nommée — seulement dans les rapports annuels en PDF ; l'impôt sur les sociétés payé par une société nommée — secret fiscal ; la masse salariale par société — même raison. Les trois derniers existent en agrégat dans les comptes nationaux, et c'est à ce niveau que le projet les documente.
4.6 Partis et affiliations — ce qui est officiel et ce qui ne l'est pas
Il n'existe aucun registre national des adhérents d'un parti, et il serait illégal d'en constituer un : l'appartenance partisane est une opinion politique au sens de l'article 9 du RGPD. Ce qui existe :
| Objet | Disponible | Source | Qualité |
|---|---|---|---|
| Liste des partis | ✅ | CNCCFP — comptes des partis | Identifiant CNCCFP par parti, comptes annuels. C'est le registre de fait |
| Groupe parlementaire d'un député | ✅ daté | AN — Acteurs & Organes | Excellent |
| Groupe d'un sénateur | ✅ daté | data.senat.fr | Excellent |
| Parti d'un parlementaire | ✅ annuel | Rattachement au titre de la seconde fraction de l'aide publique, déclaré en novembre et publié au JO en décembre par les bureaux des deux assemblées | Officiel mais à granularité annuelle : un changement en cours d'année n'apparaît qu'au décembre suivant |
| Groupe + parti national d'un eurodéputé | ✅ | Parlement européen | Excellent |
| Étiquette d'un maire | ⚠️ | Résultats électoraux (Intérieur) — nuance de la liste majoritaire ; jamais le RNE, qui n'en publie aucune | La nuance qualifie une LISTE, pas une personne, et c'est une qualification préfectorale, pas une adhésion. Absente dans 90,6 % des communes, « divers » dans 85,9 % du reste |
| Parti d'un ministre | ❌ | — | Les décrets de nomination ne portent pas d'appartenance. Déclaratif uniquement |
Le rattachement publié au JO est la seule affiliation partisane individuelle officielle en France, et elle est très peu exploitée.
Conséquence directe sur les dossiers par organisation : il n'existe pas un objet « parti » unique permettant un dossier homogène du national au local. Il en existe trois, qui ne doivent jamais être fusionnés :
- le groupe parlementaire — le mieux fondé, daté au jour près ;
- le parti au sens du rattachement JO — fiable, granularité annuelle ;
- la nuance attribuée par la préfecture à une liste candidate — administrative, seuillée en population, sans équivalence avec le parti.
Écrire « les communes RN » est donc un raccourci. La formulation défendable est
« les communes où la liste arrivée en tête en sièges portait la nuance LRN à
l'élection de mars 2026, circulaire de millésime Y ».
Le schéma impose déjà cette distinction : core.affiliation (adhésion déclarée) et
core.nuance_assignment (qualification administrative) sont deux tables séparées.
4.7 Hors matrice
Délibérations municipales. Le schéma SCDL Délibérations existe et est référencé, mais son adoption reste marginale — quelques centaines de collectivités sur 34 800, essentiellement de grandes villes et des intercommunalités. Aucun agrégateur national, aucune obligation de format. Ingérer ce qui est publié au format SCDL est possible à coût faible, mais aucune comparaison ne peut en être tirée : la couverture est biaisée vers les collectivités les mieux dotées, ce qui invaliderait mécaniquement toute comparaison inter-partis.
5. Les quatre briques produit
5.1 La fiche vérifiable
Unité atomique, un permalien immuable par objet : un scrutin, un amendement, une commune × indicateur × année.
Contient obligatoirement :
- l'objet, décrit factuellement ;
- le lien vers la source officielle et le snapshot horodaté et haché ;
- la date de consultation ;
- une section « ce que cette fiche ne dit pas ».
Cette dernière section est ce qui rend l'outil utilisable de façon contradictoire : elle permet de contester une insinuation sans servir à en produire une autre.
5.2 La statistique reproductible
« X a voté N % avec Y » est l'affirmation la plus fréquente et la plus manipulable, parce que le chiffre dépend entièrement du jeu de scrutins retenu.
Le périmètre est encodé dans l'URL : législature, bornes de dates, thèmes, type d'objet,
seuil de participation, traitement des absents. Chaque calcul est persisté avec ses
paramètres, sa method_version et une empreinte de ses entrées
(derived.stat_query). Les deux camps contestent alors le périmètre, pas le chiffre, et
chacun peut publier sa propre version avec un permalien.
Règles non négociables :
- les absents ne sont jamais une position — ce sont des données manquantes ;
- tout score s'affiche avec son
nexploitable et un intervalle de confiance ; - la redondance entre scrutins d'un même dossier est corrigée, sinon un dossier à huit scrutins écrase le reste.
5.3 Le résolveur d'affirmation
Le point d'entrée est une phrase entendue, pas une arborescence. Il faut mapper « la loi immigration », « la loi Duplomb », « le budget 2025 » vers le bon dossier législatif.
Cœur du dispositif : une table d'alias maintenue à la main (ref.alias), quelques
centaines d'entrées, indexée en trigrammes. C'est le composant au meilleur rapport
valeur/effort du projet, et personne ne le maintient aujourd'hui.
Une aide par modèle de langage est acceptable en amont du résolveur, pour proposer des
candidats. Elle est marquée AI_* et n'est jamais la source d'un fait publié.
5.4 Le contradictoire
- Registre public des corrections, lisible par machine, avec version précédente conservée.
- Canal de contestation tracé : un élu ou un journaliste conteste une fiche, la contestation et la réponse sont publiques.
C'est le seul mécanisme de neutralité qui tienne devant une accusation de parti pris, et il coûte beaucoup moins cher qu'un comité éditorial.
6. Hors périmètre
6.1 Définitivement exclu
| Exclu | Raison |
|---|---|
| Décisions municipales / délibérations comme objet comparable | Pas d’agrégateur national, couverture biaisée (§4.7) |
| Suivi annonce → réalisation | Suppose les délibérations |
| Verdict vrai/faux | §2.1 |
| Déclarations hors Parlement | Aucun corpus |
| Statistiques de présence des parlementaires | Techniquement faisable, structurellement trompeur |
| Comparaison inter-communes en médiane brute par étiquette | Confondants massifs : taille, strate, revenu, région, compétences EPCI |
6.2 Reporté
| Reporté | Condition de réouverture |
|---|---|
| Quiz de proximité | Sous-produit gratuit du corpus, jamais un axe. Déjà occupé par au moins cinq acteurs |
| Parlement européen | Consommer l'API HowTheyVote.eu, ne pas réingérer |
| Ingestion de presse | Seulement comme signal de détection, jamais comme source d'un fait |
| Programmes et promesses | Nécessite un corpus manuel maintenu |
7. Architecture des données
Trois couches, plus un schéma de référentiels.
raw Copie exacte de ce qui a été récupéré. Jamais écrasée, jamais corrigée.
Octets dans l'object storage, métadonnées et empreintes en base.
ref Nomenclatures externes stables et millésimées (COG, nuances, indicateurs).
core Données normalisées, historisées, rattachées à une preuve.
derived Indicateurs, statistiques, appariements. Reconstructibles, versionnés par méthode.
Invariants :
coreest intégralement reconstructible à partir derawpar une fonction idempotente. Rejouer l'ingestion deux fois doit produire un état identique — c'est testé en intégration continue, et c'est le meilleur test de non-régression du projet.- Toute ligne de
coreporte une preuve (core.evidence) remontant à un documentraw. - Toute ligne de
derivedporte unemethod_versionet une empreinte de ses entrées. - Les données brutes ne sont jamais modifiées ni supprimées.
Convention de stockage objet : raw/{source}/{yyyy}/{mm}/{dd}/{sha256}.{ext}, bucket
versionné.
8. Jalons
Socle — préalable à tout
Ingestion AN (acteurs, organes, dossiers, textes, lectures, amendements, scrutins
nominatifs) dans raw → core. Archive scellée opérationnelle dès le premier document.
Référentiel d'identités (core.person_identifier) publié.
V1 — le vérificateur parlementaire
Résolveur d'affirmation et table d'alias · fiche scrutin avec « ce que ça ne dit pas » · votes individuels et mises au point · statistique reproductible par URL · « non vérifiable » typé · mesure et publication du taux de couverture sur un corpus réel de débats.
V2 — le panneau communal
RNE + COG + BANATIC + OFGL + DGFiP + SSMSI + RPLS/SRU + DECP, assemblés par commune et alignés sur les mandatures. Périmètre de compétences EPCI affiché. Comparaison uniquement par appariement (strate, région, revenu médian), jamais en médiane brute.
V3 — le contradictoire
Contestations publiques · registre de corrections · API de citation.
9. Contraintes juridiques
- RGPD. Les données des élus relèvent de l'action publique et ne posent pas de difficulté particulière. En revanche, toute réponse d'un visiteur exprimant une opinion politique est une donnée sensible au sens de l'article 9 : pas de compte, pas d'identifiant persistant, pas d'IP associée, pas d'analytics tiers sur ces pages. Si un quiz revient un jour, le calcul se fait côté client.
- Licences. Licence Ouverte sur l'ensemble du socle retenu, usage commercial permis,
attribution et date de mise à jour obligatoires. Le bandeau d'attribution est généré
automatiquement depuis
raw.source. Aucune source NC n'entre dans le pipeline. - HATVP. Conditions de réutilisation spécifiques, à vérifier avant toute ingestion.
- Période électorale. Un outil de ce type attire une attention particulière à l'approche d'un scrutin. Page de méthodologie exhaustive et point de contact identifiable obligatoires avant toute mise en ligne publique.
10. Décisions ouvertes
- Qui rédige et qui répond aux contestations ? Un outil destiné à être opposé à des journalistes et à des élus ne tient pas sans une personne identifiable et un mécanisme de réponse. C'est le goulot réel du projet, et il n'est pas technique.
- Financement et indépendance — à rendre publics dès la mise en ligne.
- Profondeur historique du volet parlementaire : 14e législature (2012) ou 16e (2022) ? Détermine le volume de normalisation à écrire.
- Reconstitution des mandatures municipales antérieures à 2026 : nécessaire pour comparer des mandats complets, coûteuse (résultats électoraux Intérieur + RNE historisé).
Rendu intégralement depuis
docs/perimetre.md à la construction du site. Le texte n'est ni résumé ni
réécrit : c'est celui que relit un contributeur, et toute modification y est une diff.