SPB Git forge

spb/qc-election

Public
20commits 1branches 0releases
4.9 MBsize
maindefault branch
20 days agolast push
Python 66.6% HTML 24.8% CSS 4.9% JavaScript 3.6%

History of frontend/circonscriptions.html · clear filter

  1. Mon, Aug 31, 2026 2

    1. v3.2.0 — Phase D population, soir d'élection, scénarios URL, fiches enrichies, favicon/og
      …
      - PHASE D : feature store démographique depuis le classeur OFFICIEL Élections
        Québec (Recensement 2021 × 127 circonscriptions 2026, codes stables, source
        parfaite — aucune interpolation) : population, 65+, langue à la maison,
        universitaire, locataires, immigrants, revenu 100k+, autochtones,
        appartements, minorités visibles + z-scores + SIMILARITÉ top-10 (validée :
        Gouin≈Mercier/SMSJ, Westmount≈NDG/MRO, Ungava profil nordique).
        API /api/demographics/{nom}; démographie + semblables intégrés aux fiches
      - MODÈLE DU SOIR D'ÉLECTION (modeling/election_night.py, dormant) : prior =
        forecast final; décomposition hiérarchique des résidus rapportés (national
        ~N(0,σ_ind²) → régional → local, pondérés par dépouillement propre — garde
        anti-biais des premiers bureaux); resimulation à variances réduites; calling
        conservateur (P≥99,5 % ET ≥40 % dépouillé). /api/election-night +
        POST /api/admin/election-night. Test synthétique : décalage national +3 pp
        retrouvé, zéro invention à décalage nul
      - LABO DE SCÉNARIOS partageables par URL (?s=base64) : encodage/décodage
        complet, bouton copier, presets appliqués aux contrôles, étiquetage strict
        « conditionnel — pas le forecast officiel »
      - FICHES ENRICHIES : sensibilité au swing (marge attendue, chemin de bascule
        minimal, stabilité vs IC) + démographie officielle
      - FAVICON (SVG+PNG 64/180/512, fleur QC Signal) + OG:IMAGE 1200×630 (hémicycle)
        + balises og/twitter sur les 11 pages
      - COMPAS-PROGRAMMES.md : mandat complet du compas électoral IA inscrit à la
        feuille de route (règles de neutralité/preuve, ordre d'exécution, actifs
        réutilisables) — prochaine grande phase
      - 37/37 tests (slug, bornes démographiques, soir d'élection)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 23 days ago · 1 file +61
    2. Directive maître — baselines de replay, Course à 64, connecteurs primaires
      …
      - Replay : baselines « dernier sondage » et « moyenne 14 j » scorées à chaque
        horizon et agrégées (modèle 3,71 bat dernier-sondage 3,84; moyenne-14j 3,49
        gagne l'EAM ponctuelle — consigné honnêtement dans STATISTICAL_DEBT comme
        recherche ouverte : la valeur du modèle est la DISTRIBUTION, les baselines
        n'ont ni intervalles ni probabilités)
      - Course à 64 (/api/battlegrounds.paths_to_64 + section /circonscriptions) :
        pour chaque parti, échelle des sièges du plus sûr au plus décisif, 64e siège
        de la majorité surligné (PQ : Maskinongé 43 %, marge 0,9 pp), marge attendue
        = swing minimal de bascule, onglets par parti
      - Connecteurs PRIMAIRES des 7 firmes (ingest/pollster_reports.py) : veille des
        pages de publications (Firecrawl), archivage des rapports (data/raw/reports),
        extraction PAR RÈGLES avec niveau de confiance, FILE DE RÉVISION (Poll
        excluded=True « révision requise » — jamais d'entrée silencieuse),
        réconciliation Wikipédia, statut de source consigné (Pallas/Synopsis murées
        = connecteurs désactivés de fait). Test live Léger : 5 rapports archivés,
        0 création sous le seuil de confiance — comportement voulu
      - Tests invariants (§qualité) : 127 sièges/simulation, P(victoire) somme à 1,
        probabilités [0,1], extraction primaire (35/35 verts)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 23 days ago · 1 file +58
  2. Sun, Aug 30, 2026 2

    1. QC Signal (refonte frontend complète) + distribution prédictive du prochain sondage
      …
      Frontend — design system « QC Signal » (sous-agent, 11 pages × 4 viewports,
      zéro erreur JS, zéro débordement, light+dark dédiés) :
      - Tokens complets (palettes, radius 8-24, spacing 4/8, ombres discrètes),
        échelle typo (metric-xl 64px, tabular-nums partout), navbar + fleur SVG,
        FORECAST STRIP sticky sur toutes les pages (P(1er) publiée + Δ veille)
      - Accueil recomposé : verdict éditorial → MAIN OUTCOME (métrique héroïque,
        intervalles VISUELS 24 ───●─── 86) → HÉMICYCLE SVG 127 sièges (marqueur
        majorité 64, hover IC) → OUTCOME BAR (majorité/minoritaire/autre) →
        cartes partis compactes data-first (sparklines, deltas neutres jamais
        vert/rouge) → mouvement + pivots
      - /aujourdhui briefing éditorial, /carte 75/25, tables sticky-header,
        composants deltaHTML/rangeHTML/emptyState/hemicycleSVG, skeletons
      - docs/DESIGN_SYSTEM.md + docs/UI_AUDIT.md (18 dettes retirées)
      
      Backend :
      - national/next_poll.py (§46-48) : P(prochain sondage | modèle) publiée à
        chaque run + SURPRISE de chaque nouveau sondage (z par parti, densité
        prédictive, verdict bruit/à surveiller/mouvement-ou-aberrant) mesurée
        contre la prédiction STOCKÉE du run précédent (jamais rétro-ajustée)
      - data/replay_report.json committé (LOEO 6 élections)
      - 33/33 tests
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +1 −1
    2. v3.0.0 « 127 » — Phases A+B : validation, Social Intelligence, forecast par comté
      …
      Phase A (fondations) :
      - modeling/validation/ : scoring commun (EAM/RMSE, couverture 50/90/95, Brier,
        log loss, sharpness, biais) + cadre d'ABLATION (backtest 2022 par variante,
        deltas vs FULL publiés, data/ablation_report.json, /api/ablation,
        POST /api/admin/ablation)
      - Feature flags conservateurs (enable_social_volatility, enable_tipping_points,
        enable_ablation, enable_social_directional=OFF)
      - Observabilité Apify (table apify_runs) + /api/admin/data-health (§33-34)
      
      Phase B (Social Intelligence Layer) :
      - modeling/signals/social.py : métriques inter-plateformes normalisées
        (attention_z, velocity_z, breadth, cross_platform, stance_balance) +
        filtrage de coordination (quasi-doublons, rafales) → attention organique
      - modeling/signals/volatility.py : multiplicateur de variance unifié
        wiki+social, borné [1, 1,5], variance seulement (§16)
      - modeling/signals/event_detection.py : événements à confirmation croisée
        (≥2 familles : presse, social, Wikipédia), sans effet directionnel présumé
      
      Forecast par comté :
      - simulate.tipping_points : circonscriptions pivots de la majorité (méthode
        des simulations, 64e siège le plus sûr), stocké par run (§24)
      - Page /circonscriptions : 127 fiches (recherche, filtres, tri, détail complet
        IC 95 %/candidatures/2022), pivots avec barres de course, KPIs
      - /api/battlegrounds + API v3 (/api/v3/forecast|ridings|social|battlegrounds|
        events|beyond|calibration|ablation), compatibilité v1 conservée
      
      29/29 tests verts. METHODOLOGY §9 bis. ModelVersion 3.0.0.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +201