01Contexte et problème
Les compteurs énergétiques matériels peuvent exiger des privilèges, tandis que développeurs, tests et benchmarks ont besoin d'un workflow sûr qui préserve le sens des sources sans transformer une preuve bruitée au niveau machine en fausse précision par processus.
02Responsabilité et contribution
Chakib a conçu et implémenté la frontière daemon/client, le protocole typé et le modèle de validation, les chemins RAPL Linux et synthétique, les artefacts CLI rejouables, le client pywattch et le workflow développeur Energy Tests.
Responsabilités
- Implémentation des crates Rust de domaine, protocole, daemon, powerd, daemon déterministe et CLI.
- Définition des descripteurs typés, classes de preuve, invariants de séquence et frames versionnées.
- Création des artefacts rejouables capture/inspect/validate et d'un client Python compatible pyJoules.
- Ajout de la découverte Energy Tests et d'une vue VS Code avec colonnes joules et budgets par domaine.
- Documentation des privilèges, permissions de socket, compteurs, échecs et non-objectifs explicites.
03Architecture et flux de données
Un daemon privilégié wattch-powerd lit les compteurs RAPL Linux ou une source synthétique et sert des frames strictes et versionnées sur une socket Unix locale. Les clients CLI et Python non privilégiés capturent des descripteurs et échantillons bruts dans des artefacts immuables ; inspection, tests et interprétation restent hors du chemin d'acquisition.
- RAPL powercap Linux ou source synthétique
- Daemon d'acquisition wattch-powerd
- Protocole versionné sur socket Unix
- CLI / pywattch / Energy Tests
- Manifeste + descripteurs + trace brute
- Inspection et validation hors ligne
04Décisions d’ingénierie
Séparer acquisition privilégiée et clients non privilégiés.
RAPL peut demander une élévation ; la socket Unix devient une frontière étroite et auditable.Alternative écartée: Laisser chaque processus Python ou CLI lire directement les compteurs protégés.
Garder le daemon sans interprétation.
Descripteurs et échantillons bruts restent rejouables tandis qu'agrégations, comparaisons et conclusions évoluent hors ligne.Alternative écartée: Calculer baselines, joules/token, scores ou conseils dans le chemin d'acquisition.
05Fiabilité, sécurité et évaluation
- Les invariants rejettent sources inconnues, unités invalides et séquences non monotones.
- Le daemon déterministe valide le même protocole sans présenter les valeurs synthétiques comme mesures matérielles.
- La CI exécute formatage Rust, Clippy avec warnings interdits, tests du workspace, du client Python et de l'extension.
06Résultats et état actuel
La base publique prend en charge acquisition RAPL Linux et synthétique, protocole local strict, scénarios de test déterministes, workflows CLI capture/inspect/validate, traces rejouables, API Python pywattch et Energy Tests VS Code. Elle ne revendique ni allocation par processus ni précision absolue du compteur.
Groupes technologiques
Systèmes
Rust, Linux, RAPL, Unix sockets
Clients
CLI, Python, API pyJoules, VS Code
Preuves
Descripteurs typés, Daemon déterministe, Traces rejouables