Puissance, latence et comportement thermique sous charge soutenue
Un banc indépendant de l'instrument et de l'appareil mesuré. Il intègre l'énergie sur les horodatages réellement obtenus, publie sa marge d'incertitude, et refuse de livrer un chiffre qui n'a jamais été mesuré.
Chiffres relevés le 21 août 2026 en exécutant les suites de tests, et non recopiés des fichiers README.
Le chiffre publié n'est pas celui du déploiement
Les chiffres publiés en IA embarquée sont des chiffres de démarrage. Un modèle est chargé, une inférence est chronométrée, une puissance est citée, et tout cela se passe dans les trente premières secondes, pendant que la carte est encore froide. Les déploiements, eux, ne sont pas froids.
Sous inférence continue, un processeur à refroidissement passif atteint sa limite thermique, le gouverneur rabat la fréquence, et le débit qui compte, celui de la quatrième minute, est un chiffre que personne n'a publié. C'est celui que ce banc mesure.
Un chiffre non mesuré ne sort jamais sans le dire
« La provenance est dérivée de l'instrument, jamais déclarée par l'appelant. »
L'export refuse un rapport synthétique, sauf demande explicite, et la mention « synthétique, non mesuré » accompagne alors le chiffre aussi longtemps qu'il existe. L'énergie est intégrée sur les horodatages réellement obtenus plutôt que sur une moyenne multipliée par une durée, parce qu'une moyenne multipliée par une durée est fausse dès que l'échantillonnage bégaie. Le repos est retranché, faute de quoi deux appareils ne sont pas comparables.
$ mh run --device uno-q --instrument synthetic --out ./run
device : uno-q
instrument : synthetic (synthetic)
operations : 18001
idle : 0.601 W
load : 2.400 W mean, 2.425 W peak
energy/op : 35.979 mJ above idle (± 0.000 mJ)
latency : p50 20.0 ms, p95 20.0 ms, p99 20.0 ms
sustained : held, 50.0 -> 50.0 ops/s (+0.0% throughput)
report_id : sha256:22cf9ff073aad8aa30796ce326ab499a9ec076a083aec37e46aee88777300b2a
$ mh energy-model ./run
synthetic-result-refused: report sha256:22cf9ff0… has provenance 'synthetic';
pass allow_synthetic=True to export a rehearsal figure, which will be labelled as one
La première commande produit un rapport complet. La seconde refuse de l'exporter comme modèle énergétique, parce que sa provenance est synthétique. Le refus n'est pas un garde-fou ajouté après coup : la provenance vient de l'instrument, et l'appelant ne peut pas la déclarer lui-même.
Cinq paliers, cent onze tests
Exécutés le 21 août 2026 sur le dépôt public. Chaque palier répond à une question distincte, et les deux derniers sont écrits pour casser la revendication plutôt que pour la confirmer.
| Palier | Tests | Question à laquelle il répond |
|---|---|---|
smoke | 5 | Est-ce que cela démarre |
unit | 54 | Chaque partie se comporte-t-elle correctement à ses bornes |
functional | 22 | Le banc respecte-t-il sa spécification |
security | 14 | Que fait-il d'une entrée qu'il n'a pas produite |
pentest | 16 | La revendication peut-elle être cassée |
| Total | 111 | 96 % |
La barrière d'intégration enchaîne l'analyse statique, le typage strict, la revue de sécurité du code, les avis de sécurité sur les dépendances et un plancher de couverture à 90 pour cent. Tout ce qui s'y trouve fait échouer le build.
Les lacunes connues, telles que le dépôt les énonce
Le modèle de menace du dépôt énumère cinq risques résiduels. Le premier est aussi le plus important, et aucun code ne le corrigera.
- Le banc ne peut pas auditer son propre instrument. Un pilote qui diviserait par deux chaque relevé produirait un rapport qui se vérifie et qui est faux. L'atténuation est une procédure de paillasse, pas un chemin de code.
- L'empreinte détecte l'édition, pas l'auteur. Rien ne signe les rapports, donc une contrefaçon recalculée se vérifie.
- Les conditions d'essai sont déclarées, pas observées. La température ambiante annoncée est celle que l'opérateur a saisie.
- L'échantillonnage en fil séparé dépend de l'ordonnanceur du système, ce qui est précisément la raison pour laquelle l'énergie est intégrée sur les horodatages obtenus et non sur ceux demandés.
- Aucun chiffre n'a encore été mesuré sur du matériel. Le pilote INA219 est écrit d'après la fiche technique et refuse de renvoyer des relevés tant qu'il n'a pas piloté le composant.
Quatre documents, dans l'ordre où ils se lisent
- docs/GETTING_STARTED.mdNe suppose aucune expérience du terminal, et mène à la première mesure.
- docs/METHOD.mdLa méthode : ce qui est intégré, ce qui est retranché, et pourquoi.
- docs/BARE_METAL.mdDe la carte sortie du carton jusqu'à un relevé enregistré, câblage compris.
- docs/THREAT_MODEL.mdLes cinq risques résiduels, énoncés sans atténuation.
Une revendication de gouvernance se vérifie ou ne vaut rien
Si l'un de ces maillons correspond à une question ouverte chez vous, la conversation commence par le code.