Aller au contenu

Wattch Core

Une base de mesure protocol-first en Rust qui sépare acquisition privilégiée et workflows CLI, Python et VS Code non privilégiés tout en préservant les preuves brutes rejouables.

Rôle
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.
É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.
01

Contexte 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.

02

Responsabilité 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.
03

Architecture 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.

  1. RAPL powercap Linux ou source synthétique
  2. Daemon d'acquisition wattch-powerd
  3. Protocole versionné sur socket Unix
  4. CLI / pywattch / Energy Tests
  5. Manifeste + descripteurs + trace brute
  6. Inspection et validation hors ligne
04

Dé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.

05

Fiabilité, 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.
06

Ré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

07

Preuves et sources

Vue Energy Tests de Wattch Core avec trois tests déterministes, leur durée, les domaines énergétiques et les budgets
La vue Energy Tests livrée, rendue depuis une exécution déterministe réelle ; les valeurs synthétiques valident le workflow, pas le matériel.