<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://avuruobs.io/fr/changelog</id>
    <title>Avuru Obs Blog</title>
    <updated>2026-08-16T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://avuruobs.io/fr/changelog"/>
    <subtitle>Avuru Obs Blog</subtitle>
    <icon>https://avuruobs.io/fr/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Distribuez les accès depuis l'application — et donnez à vos scripts une clé à eux]]></title>
        <id>https://avuruobs.io/fr/changelog/oidc-mapping-api-tokens</id>
        <link href="https://avuruobs.io/fr/changelog/oidc-mapping-api-tokens"/>
        <updated>2026-08-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Paramètres → Accès édite désormais le mapping SSO groupe→rôle, les règles du chart restant la référence, et émet des jetons d'API personnels qui suivent les permissions vivantes de leur propriétaire.]]></summary>
        <content type="html"><![CDATA[<p>Deux manques comblés dans Paramètres → Accès : le mapping des groupes du
fournisseur d'identité n'est plus une valeur que seul un <code>helm upgrade</code> pouvait
changer, et les scripts reçoivent une clé à eux au lieu d'un cookie de session
emprunté.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="associer-les-groupes-sso-aux-rôles-depuis-lapplication">Associer les groupes SSO aux rôles, depuis l'application<a href="https://avuruobs.io/fr/changelog/oidc-mapping-api-tokens#associer-les-groupes-sso-aux-r%C3%B4les-depuis-lapplication" class="hash-link" aria-label="Lien direct vers Associer les groupes SSO aux rôles, depuis l'application" title="Lien direct vers Associer les groupes SSO aux rôles, depuis l'application" translate="no">​</a></h2>
<p>Quel groupe SSO accorde quel rôle sur quels projets était une valeur du chart —
<code>auth.oidc.mapping</code> dans <code>values.yaml</code>, un <code>helm upgrade</code> par changement — si
bien qu'ouvrir l'accès à une équipe exigeait un déploiement. Paramètres → Accès
affiche désormais ces règles et permet à un administrateur d'en ajouter, d'en
modifier et d'en supprimer d'autres à côté.</p>
<ul>
<li class=""><strong>Le chart reste la base déclarée.</strong> Ses règles s'affichent en lecture seule
et, en cas de collision de nom, le chart l'emporte : une règle créée dans
l'application pour un groupe que le chart déclare aussi est conservée et
marquée comme éclipsée, avec la raison sur sa ligne, au lieu d'être ignorée
en silence ou refusée d'emblée.</li>
<li class=""><strong>Un changement s'applique à la prochaine connexion du groupe</strong> ou au
prochain rafraîchissement de jeton, et atteint chaque réplique du hub en une
quinzaine de secondes. Cette borne est affichée dans le panneau, pour qu'une
lecture encore ancienne sur une autre réplique juste après un enregistrement
ne soit pas prise pour un échec.</li>
<li class=""><strong>Réinitialiser</strong> supprime toutes les règles créées dans l'application et
ramène l'installation exactement à ce que le chart déclare. Une installation
sans fournisseur d'identité configuré ne voit jamais le panneau — il n'y a
rien à associer.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="jetons-dapi-personnels">Jetons d'API personnels<a href="https://avuruobs.io/fr/changelog/oidc-mapping-api-tokens#jetons-dapi-personnels" class="hash-link" aria-label="Lien direct vers Jetons d'API personnels" title="Lien direct vers Jetons d'API personnels" translate="no">​</a></h2>
<p>L'API du hub a vocation à dépasser le navigateur — une source de données
Grafana et une CLI sont sur la <a class="" href="https://avuruobs.io/fr/docs/roadmap">feuille de route</a> — mais la
seule accréditation était un cookie de session. Paramètres → Accès émet
désormais des <strong>jetons d'API personnels</strong> : créez-en un, avec une expiration
optionnelle, copiez-le une seule fois, et envoyez-le en
<code>Authorization: Bearer avurut_…</code>.</p>
<ul>
<li class=""><strong>Montré une fois, haché pour toujours.</strong> Seul le SHA-256 d'un jeton est
stocké ; la valeur brute n'apparaît qu'une seule fois, à la création. Le
préfixe <code>avurut_</code> dit quel <em>type</em> d'accréditation a fui si l'une d'elles
apparaît un jour dans un log.</li>
<li class=""><strong>Un jeton, c'est son propriétaire, en direct.</strong> Il ne porte aucune
permission propre — chaque requête est résolue vers les rôles et droits par
projet actuels du propriétaire : désactiver un utilisateur désactive tous
ses jetons, par construction et non par nettoyage.</li>
<li class=""><strong>Aucune rétrogradation silencieuse.</strong> Un jeton invalide ou expiré est un
<code>401</code> net, jamais un repli vers le lecteur anonyme qu'une installation peut
avoir activé.</li>
<li class=""><strong>La révocation est immédiate</strong> et en libre-service ; un administrateur
global peut lister et révoquer ceux de n'importe qui. La liste montre la
dernière utilisation de chaque jeton : une accréditation dormante se voit
avant de devenir un problème.</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
        <category label="Sécurité" term="Sécurité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[v0.5.0 : piloter depuis l'interface]]></title>
        <id>https://avuruobs.io/fr/changelog/v0-5-0</id>
        <link href="https://avuruobs.io/fr/changelog/v0-5-0"/>
        <updated>2026-08-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La collecte, les groupes de services, le mapping des rôles SSO et les accréditations d'API s'administrent désormais depuis l'application ; le Tableau de bord répond en un écran à « comment se porte le parc ? » ; et la carte des services dit ce qui ne va pas, pas seulement que quelque chose ne va pas.]]></summary>
        <content type="html"><![CDATA[<p><strong>v0.5.0</strong> referme l'écart entre <em>exploiter</em> avuru obs et <em>le modifier</em>.
Presque tout ce qu'un opérateur atteignait par <code>values.yaml</code> puis un
redéploiement — la collecte, les groupes de services, le mapping des rôles SSO,
les accréditations d'API — vit désormais dans l'application, et celle-ci
s'ouvre sur un écran qui répond à <em>comment se porte le parc ?</em></p>
<!-- -->
<ul>
<li class="">
<p><strong>Activer et couper les signaux depuis l'interface.</strong>
<a class="" href="https://avuruobs.io/fr/changelog/collection-runtime-control">Paramètres → Collecte est devenu éditable</a> :
activez ou coupez les traces OBI, les logs, les métriques d'infrastructure,
le profilage ou la collecte d'énergie, modifiez les espaces de noms exclus,
et le capteur suit en quelques secondes — sans <code>helm upgrade</code>. Désactivé par
défaut ; l'activer n'accorde au hub qu'un rôle étroit sur ses propres
ConfigMaps de capteur et son DaemonSet, rien d'autre, et le chemin d'écriture
est prouvé de bout en bout contre un vrai cluster en CI.</p>
</li>
<li class="">
<p><strong>Dire quels services comptent, depuis l'application.</strong>
<a class="" href="https://avuruobs.io/fr/changelog/service-groups-ui">Les groupes de santé s'écrivent dans Paramètres → Groupes</a>
— nom, niveau de criticité, espaces de noms ou services couverts — et
s'appliquent dès la lecture de santé suivante. Les groupes déclarés dans le
chart restent en lecture seule et l'emportent en cas de collision de nom ;
le regroupement automatique par espace de noms est inchangé, rien ne
disparaît pendant que vous organisez.</p>
</li>
<li class="">
<p><strong>Un seul écran pour l'état du parc.</strong> Le
<a class="" href="https://avuruobs.io/fr/changelog/dashboard-overview">Tableau de bord</a> est la page d'accueil :
santé des groupes de services, topologie vivante à côté des alertes actives,
et capacité Kubernetes, en trois bandes. Chaque bande suit son module — une
bande dont le module est coupé ne se monte simplement pas — et sans santé
des services, la synthèse se rabat sur les services les plus actifs plutôt
que d'inventer un second modèle de statut.</p>
</li>
<li class="">
<p><strong>La carte des services dit ce qui ne va pas, pas seulement que quelque
chose ne va pas.</strong> Les anneaux des nœuds affichent désormais le statut réel
du service,
<a class="" href="https://avuruobs.io/fr/changelog/service-map-restyle">lu depuis la même consolidation que le tableau Santé des services</a> ;
les arêtes portent le p50/p95 côté appelant réellement coûté par ce chemin
d'appel ; survoler un nœud focalise son voisinage ; et la recherche, le
filtre « problèmes seulement » et le filtre de groupe vivent dans l'URL —
une carte réduite est un lien. La loupe carbone est devenue un halo : santé
et gCO2e sont visibles en même temps.</p>
</li>
<li class="">
<p><strong>Accorder les accès depuis l'application.</strong> Le
<a class="" href="https://avuruobs.io/fr/changelog/oidc-mapping-api-tokens">mapping OIDC groupe→rôle s'édite désormais dans Paramètres → Accès</a>
— les règles du chart restent la référence et une règle éclipsée dit
pourquoi — et le même onglet émet des <strong>jetons d'API personnels</strong> : hachés
au repos, montrés une seule fois, résolus à chaque requête vers les
permissions vivantes de leur propriétaire, si bien que désactiver un
utilisateur désactive tous ses jetons.</p>
</li>
<li class="">
<p><strong>Où vivent les données, et qui peut y toucher.</strong>
<a class="" href="https://avuruobs.io/fr/changelog/settings-storage-access">Paramètres → Stockage et Paramètres → Accès</a> :
la connexion ClickHouse en lecture seule avec l'occupation par signal et la
rétention confrontée au TTL que les tables appliquent vraiment, et une
matrice de permissions que le hub déduit de ses propres gardes de routes —
elle ne peut pas diverger de ce qui est appliqué.</p>
</li>
<li class="">
<p><strong>Trouver un pod sur l'écran Nœuds.</strong> Les deux tables
<a class="" href="https://avuruobs.io/fr/changelog/nodes-sort-filter">se trient sur chaque colonne et se filtrent</a>
par nom, espace de noms ou charge de travail ; les filtres vivent dans l'URL
et les compteurs affichent « N sur M » — une table réduite ne peut pas être
prise pour un cluster qui rétrécit.</p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sécurité">Sécurité<a href="https://avuruobs.io/fr/changelog/v0-5-0#s%C3%A9curit%C3%A9" class="hash-link" aria-label="Lien direct vers Sécurité" title="Lien direct vers Sécurité" translate="no">​</a></h3>
<ul>
<li class=""><strong>Trois points d'API green répondaient sans authentification.</strong>
<code>GET /api/v1/green/summary</code>, <code>/green/budgets</code> et <code>/green/report</code> étaient
enregistrés sans le middleware de session : une installation avec
l'authentification <em>activée</em> servait l'énergie et le carbone de n'importe
quel projet à un appelant non authentifié. Les trois exigent désormais le
rôle lecteur et respectent les droits par projet, et un test couvre
l'ensemble des routes de données de projet. Détails dans la
<a class="" href="https://avuruobs.io/fr/changelog/green-endpoints-auth">note de sécurité</a>.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="corrigé">Corrigé<a href="https://avuruobs.io/fr/changelog/v0-5-0#corrig%C3%A9" class="hash-link" aria-label="Lien direct vers Corrigé" title="Lien direct vers Corrigé" translate="no">​</a></h3>
<ul>
<li class=""><strong>Le compte de démo partagé se voyait proposer un formulaire de mot de passe
qu'il ne pouvait jamais soumettre.</strong> Le hub avait raison de refuser le
changement — l'identifiant de démo est partagé et régénéré à chaque
démarrage — mais l'interface n'en savait rien. <code>/api/v1/auth/me</code> indique
désormais si la rotation en libre-service s'applique et sinon pourquoi, et
l'onglet Compte affiche l'explication au lieu du formulaire.</li>
</ul>
<p><strong>La mise à niveau depuis v0.4.x</strong> est un <code>helm upgrade</code> normal. Les
migrations de schéma <code>0016</code> à <code>0018</code> s'appliquent automatiquement
(<code>hub.autoMigrate</code>). Voir la page <a class="" href="https://avuruobs.io/fr/docs/releases">Versions</a> et la
<a href="https://github.com/avuruvision/avuru-obs/releases/tag/v0.5.0" target="_blank" rel="noopener noreferrer" class="">release GitHub</a>.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
        <category label="Sécurité" term="Sécurité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Voir d'un coup d'œil ce qui va vraiment mal sur la carte des services]]></title>
        <id>https://avuruobs.io/fr/changelog/service-map-restyle</id>
        <link href="https://avuruobs.io/fr/changelog/service-map-restyle"/>
        <updated>2026-08-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[L'anneau d'un nœud lit désormais la même consolidation de santé que l'écran Santé des services, les arêtes portent la latence vue par l'appelant, le survol recentre le graphe, et chaque filtre devient un lien à partager.]]></summary>
        <content type="html"><![CDATA[<p>Un nœud passait au rouge dès qu'<strong>une</strong> erreur survenait dans la fenêtre — sans
jamais dire si le service était réellement en difficulté. La carte des
services répond maintenant à cette question, et à quelques autres.</p>
<!-- -->
<ul>
<li class="">
<p><strong>Un anneau de santé, pas un point d'erreur.</strong> L'anneau d'un nœud reflète sa
vraie santé — healthy, degraded, down ou idle — lue directement dans la même
<a class="" href="https://avuruobs.io/fr/docs/signals/service-health">consolidation sensible aux dépendances</a> que
l'écran Santé des services. La carte ne recalcule plus ses propres seuils :
les deux écrans ne peuvent donc plus se contredire. Un service que la
consolidation ne couvre pas s'affiche <em>unknown</em>, jamais healthy.</p>
</li>
<li class="">
<p><strong>Une vraie latence par arête.</strong> Chaque arête porte désormais un p50 et un
p95 mesurés du côté de l'<strong>appelant</strong> — ce que cet appel a réellement coûté,
réseau et attente compris. C'est volontairement différent du p95 que le nœud
affiche pour son propre travail côté serveur, et l'écart entre les deux est
souvent l'information utile : dans les données de démonstration, le nœud
affiche <code>p95 200ms</code> tandis que l'arête qui y entre affiche <code>p95 220ms</code> —
20ms que l'appelant a payés et que l'appelé n'a jamais vus. Les arêtes issues
des flux réseau, et non de spans, omettent simplement le champ plutôt que
d'afficher un faux zéro.</p>
</li>
<li class="">
<p><strong>Le survol recentre le regard.</strong> Survoler un nœud estompe tout ce qui est
hors de son voisinage, épaissit ses arêtes, et étiquette chacune avec son
rpm, son p95, son taux d'erreur et son <a class="" href="https://avuruobs.io/fr/docs/signals/network-health">RTT TCP</a>
quand il est mesuré — une flèche à mi-arête indique le sens sans avoir à
suivre le trait.</p>
</li>
<li class="">
<p><strong>Filtres et contrôles, tout dans l'URL.</strong> Une recherche par nom, une case
« problèmes seulement » et un filtre par groupe de services — chacun
atterrit dans la chaîne de requête, si bien qu'une carte restreinte devient
un lien à coller à un collègue plutôt qu'un écran à décrire. Zoom, ajustement
à la vue, nouvelle disposition et une légende complètent l'ensemble. Les
filtres de statut et de groupe n'apparaissent que si la santé des services
tourne, puisque tous deux lisent sa consolidation.</p>
</li>
<li class="">
<p><strong>Le carbone est passé sur un halo.</strong> L'anneau était jusqu'ici la seule
bordure d'un nœud ; la <a class="" href="https://avuruobs.io/fr/docs/signals/green">vision carbone</a> dessine
désormais son gCO2e en un halo doux autour du nœud — qui peut ainsi montrer
à la fois son anneau de santé et son halo carbone.</p>
</li>
<li class="">
<p><strong>La carte compacte du Tableau de bord en profite aussi.</strong> La topologie
compacte du Tableau de bord affiche le même composant : elle hérite des
anneaux et du survol focalisé sans effort, avec les données de santé que le
Tableau de bord récupérait déjà.</p>
</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Carte des services" term="Carte des services"/>
        <category label="UI" term="UI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ouvrez l'application et sachez comment se porte votre parc]]></title>
        <id>https://avuruobs.io/fr/changelog/dashboard-overview</id>
        <link href="https://avuruobs.io/fr/changelog/dashboard-overview"/>
        <updated>2026-08-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un Tableau de bord qui répond à la première question — santé des groupes de services, topologie, alertes actives et capacité Kubernetes sur un seul écran. C'est désormais là que le produit s'ouvre.]]></summary>
        <content type="html"><![CDATA[<p>Jusqu'ici, le produit s'ouvrait sur un écran qui supposait que vous aviez déjà
une hypothèse. Le nouveau <strong>Tableau de bord</strong> vous en donne une, et c'est
désormais là que l'application arrive.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="un-écran-trois-réponses">Un écran, trois réponses<a href="https://avuruobs.io/fr/changelog/dashboard-overview#un-%C3%A9cran-trois-r%C3%A9ponses" class="hash-link" aria-label="Lien direct vers Un écran, trois réponses" title="Lien direct vers Un écran, trois réponses" translate="no">​</a></h2>
<ul>
<li class="">
<p><strong>Mes services sont-ils en bonne santé ?</strong> Une carte par groupe de services —
les groupes que <em>vous</em> avez créés dans Paramètres → Groupes — avec son niveau
de criticité, son état, et le débit, la latence et le taux d'erreur qui
fondent cet état. Les pires états passent en tête : un groupe en difficulté
n'est jamais celui qui déborde en fin de rangée.</p>
</li>
<li class="">
<p><strong>Qui parle à qui, et quelque chose se déclenche-t-il ?</strong> La carte des
services à l'échelle d'une vue d'ensemble, à côté de tout ce qui alerte en ce
moment. Ce n'est pas une capture de la carte : c'est le même graphe, donc un
service rouge ici l'est aussi là-bas.</p>
</li>
<li class="">
<p><strong>Le cluster est-il sous tension ?</strong> Nœuds, pods, namespaces et charges de
travail en un coup d'œil, plus l'utilisation mémoire par nœud, les plus
chargés en premier.</p>
</li>
</ul>
<p>Chaque carte est un lien vers l'écran qui l'explique. Le Tableau de bord est là
où l'on remarque ; les écrans existants sont là où l'on enquête.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="il-fonctionne-sur-linstallation-que-vous-exploitez-vraiment">Il fonctionne sur l'installation que vous exploitez vraiment<a href="https://avuruobs.io/fr/changelog/dashboard-overview#il-fonctionne-sur-linstallation-que-vous-exploitez-vraiment" class="hash-link" aria-label="Lien direct vers Il fonctionne sur l'installation que vous exploitez vraiment" title="Lien direct vers Il fonctionne sur l'installation que vous exploitez vraiment" translate="no">​</a></h2>
<p>Chaque bande dépend d'un module, et une bande dont le module est désactivé n'est
tout simplement pas là — l'écran ne présente jamais un panneau qu'il ne peut pas
remplir, et n'appelle jamais une API que votre installation ne fait pas tourner.
Désactivez la santé des services et la première bande se rabat sur vos services
les plus actifs plutôt que de disparaître. N'exécutez que le cœur, et le Tableau
de bord s'ouvre quand même, avec la carte et vos services.</p>
<p>Ces cartes de repli ne portent délibérément <strong>aucun</strong> état de santé. Les seuils
et la propagation des dépendances critiques appartiennent au module de santé des
services ; en inventer un second jeu pour cet écran reviendrait à afficher deux
réponses différentes à la même question.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ce-que-la-capacité-affirme-et-ce-quelle-naffirme-pas">Ce que la capacité affirme, et ce qu'elle n'affirme pas<a href="https://avuruobs.io/fr/changelog/dashboard-overview#ce-que-la-capacit%C3%A9-affirme-et-ce-quelle-naffirme-pas" class="hash-link" aria-label="Lien direct vers Ce que la capacité affirme, et ce qu'elle n'affirme pas" title="Lien direct vers Ce que la capacité affirme, et ce qu'elle n'affirme pas" translate="no">​</a></h2>
<p>La bande de capacité rapporte ce que le sensor mesure. La mémoire affiche une
vraie barre d'utilisation, parce que ses deux moitiés — utilisée et disponible —
sont collectées.</p>
<p>Le CPU est indiqué en <strong>cœurs utilisés</strong>, pas en pourcentage, faute d'une
capacité de nœud par laquelle diviser : les métriques de nœud viennent du
kubelet, qui ne publie pas le CPU allouable. Un pourcentage aurait dû inventer
son propre dénominateur, et une lecture de capacité à laquelle on ne peut pas se
fier vaut moins qu'une valeur absolue honnête. Chaque barre porte son chiffre
autant que sa couleur : rien sur cet écran ne se lit à la teinte seule.</p>
<p>Voir l'<a class="" href="https://avuruobs.io/fr/docs/status">état des fonctionnalités</a> pour situer le Tableau de bord
parmi les autres écrans.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Activez et coupez les signaux depuis l'interface — sans redéploiement ni accès au cluster]]></title>
        <id>https://avuruobs.io/fr/changelog/collection-runtime-control</id>
        <link href="https://avuruobs.io/fr/changelog/collection-runtime-control"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Réglages → Collecte devient modifiable : activez ou coupez les traces, les logs, les métriques, le profilage ou l'énergie, et le capteur suit en quelques secondes — derrière une option explicite et un rôle volontairement étroit.]]></summary>
        <content type="html"><![CDATA[<p>Décider de ce qu'Avuru Obs collecte imposait jusqu'ici de modifier
<code>values.yaml</code>, de lancer <code>helm upgrade</code> et de disposer des droits nécessaires
sur le cluster — en pratique, la collecte restait donc celle du jour de
l'installation. Désormais un administrateur la change depuis l'application, et
le capteur suit en quelques secondes.</p>
<!-- -->
<ul>
<li class="">
<p><strong>La collecte devient un réglage, plus un déploiement.</strong> Réglages → Collecte
active ou coupe les traces eBPF, les logs, les métriques d'infrastructure, le
profilage et la mesure d'énergie, et modifie la liste des espaces de noms
exclus. Coupez le profilage à 2 h du matin parce qu'il vous coûte plus qu'il
ne vous apprend, et rallumez-le au matin — sans toucher au chart.</p>
</li>
<li class="">
<p><strong>Ce que l'écran affiche est ce que le capteur fait vraiment.</strong> Il présente la
configuration <em>effective</em> : les valeurs de votre chart avec votre surcharge
appliquée, et non l'une ou l'autre. « Réinitialiser » efface la surcharge et
ramène le cluster exactement à ce que déclare le chart — une réinitialisation
qui se contenterait d'oublier le réglage laisserait les deux en désaccord
silencieux.</p>
</li>
<li class="">
<p><strong>Désactivé par défaut, et étroit une fois activé.</strong> La fonctionnalité dépend
de <code>collection.runtimeControl.enabled</code>. L'activer autorise le hub à mettre à
jour <strong>ses quatre ConfigMaps de capteur nommées</strong> et à modifier <strong>son
DaemonSet de capteur nommé</strong>, dans son propre espace de noms — rien à
l'échelle du cluster, rien qui appartienne à autrui. Le hub redéploie le
capteur via sa propre annotation et laisse intacte celle du chart : un
<code>helm upgrade</code> ultérieur se comporte donc comme avant. Option désactivée,
rien ne change et aucun droit supplémentaire n'est accordé.</p>
</li>
<li class="">
<p><strong>Vérifié sur un vrai cluster, pas sur une simulation.</strong> Le test d'installation
Helm installe désormais la fonctionnalité activée, écrit un réglage via l'API
et vérifie qu'il atteint la configuration du capteur et redéploie le DaemonSet
— puis réinitialise et vérifie que le cluster revient en arrière. Un réglage
enregistré mais qui n'atteint jamais le capteur est précisément la panne qui
compte ici, et ce test est fait pour l'attraper.</p>
</li>
</ul>
<p>La configuration se trouve dans le chart sous <code>collection.runtimeControl</code>. Voir
l'<a class="" href="https://avuruobs.io/fr/docs/setup/kubernetes">installation Kubernetes</a> pour l'option, et les
<a class="" href="https://avuruobs.io/fr/docs/setup/modules">modules</a> pour la façon dont chaque signal est activé.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sécurité : les points d'API green n'exigeaient aucune session]]></title>
        <id>https://avuruobs.io/fr/changelog/green-endpoints-auth</id>
        <link href="https://avuruobs.io/fr/changelog/green-endpoints-auth"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Trois points d'API énergie et carbone étaient enregistrés sans l'intergiciel de session : un appelant non authentifié pouvait lire les chiffres de n'importe quel projet, sur une installation dont l'authentification est activée. Corrigé ; mettez à jour si vous utilisez le module green.]]></summary>
        <content type="html"><![CDATA[<p><code>GET /api/v1/green/summary</code>, <code>/green/budgets</code> et <code>/green/report</code> étaient
enregistrés sans l'intergiciel de session que toutes les autres routes de
signal utilisent. Sur une installation dont l'authentification est pourtant
<strong>activée</strong>, les trois répondaient <code>200</code> à un appelant sans aucune session.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ce-qui-était-exposé">Ce qui était exposé<a href="https://avuruobs.io/fr/changelog/green-endpoints-auth#ce-qui-%C3%A9tait-expos%C3%A9" class="hash-link" aria-label="Lien direct vers Ce qui était exposé" title="Lien direct vers Ce qui était exposé" translate="no">​</a></h2>
<p>Pour n'importe quel projet nommé dans l'en-tête de la requête, sans connexion :</p>
<ul>
<li class="">l'énergie par service en wattheures et le carbone en gCO2e,</li>
<li class="">l'utilisation des budgets carbone mensuels,</li>
<li class="">l'export de rapport prêt pour la CSRD.</li>
</ul>
<p>Ces routes sont en lecture seule : rien ne pouvait être modifié par ce biais.
Mais la donnée dessine assez fidèlement ce que fait tourner un parc et à quelle
intensité — noms de services, charge relative, et la forme d'une activité dans
le temps.</p>
<p>Rien d'autre n'était concerné : toutes les autres routes de signal — traces,
logs, métriques, carte des services, santé, alerting, suivi des erreurs,
infrastructure — passaient déjà par l'intergiciel de session et appliquaient
les droits par projet.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pourquoi">Pourquoi<a href="https://avuruobs.io/fr/changelog/green-endpoints-auth#pourquoi" class="hash-link" aria-label="Lien direct vers Pourquoi" title="Lien direct vers Pourquoi" translate="no">​</a></h2>
<p>Ces routes étaient câblées avec l'enveloppe de gestionnaire nue plutôt qu'avec
celle qui garde l'accès : aucune identité n'était donc jamais attachée à la
requête. Le contrôle de portée par projet interprète alors « pas d'identité »
comme « l'authentification est désactivée » — la branche qui existe pour qu'une
installation en <code>auth.enabled=false</code> continue de fonctionner — et laissait
passer la requête.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="suis-je-concerné-">Suis-je concerné ?<a href="https://avuruobs.io/fr/changelog/green-endpoints-auth#suis-je-concern%C3%A9-" class="hash-link" aria-label="Lien direct vers Suis-je concerné ?" title="Lien direct vers Suis-je concerné ?" translate="no">​</a></h2>
<p>Oui si <strong>toutes</strong> ces conditions sont réunies :</p>
<ul>
<li class="">le <a class="" href="https://avuruobs.io/fr/docs/signals/green">module green</a> est activé (il est <strong>désactivé par
défaut</strong> : une installation qui ne l'a jamais allumé n'a jamais été exposée),</li>
<li class="">l'authentification est activée, et</li>
<li class="">l'API du hub est joignable par quelqu'un à qui vous ne donneriez pas le rôle
lecteur.</li>
</ul>
<p>Une installation dont le hub n'est joignable qu'à l'intérieur du cluster
n'était pas exposée à quelqu'un qui n'atteignait pas déjà bien davantage.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="le-correctif">Le correctif<a href="https://avuruobs.io/fr/changelog/green-endpoints-auth#le-correctif" class="hash-link" aria-label="Lien direct vers Le correctif" title="Lien direct vers Le correctif" translate="no">​</a></h2>
<p>Les trois routes exigent désormais le rôle lecteur et respectent les droits par
projet, exactement comme tous les autres signaux. Mettez à jour vers une
version contenant ce changement.</p>
<p>Un test vérifie maintenant que <strong>toutes</strong> les routes de données de projet
répondent <code>401</code> sans session, au lieu de les contrôler une par une : la faille
avait survécu parce que rien n'avait jamais vérifié l'ensemble d'un seul tenant.
Elle a été trouvée en indexant la garde de chaque route pour construire une vue
des permissions dans les Paramètres — la même idée appliquée au produit :
déduire les règles de ce que le serveur applique, plutôt que de les écrire deux
fois.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Sécurité" term="Sécurité"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Retrouver le pod que vous cherchez : tri et filtres sur l'écran Nœuds]]></title>
        <id>https://avuruobs.io/fr/changelog/nodes-sort-filter</id>
        <link href="https://avuruobs.io/fr/changelog/nodes-sort-filter"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les tableaux Nœuds et Pods se trient sur n'importe quelle colonne et se filtrent par nom, espace de noms ou charge de travail — le filtre reste dans l'URL, si bien qu'une vue restreinte devient un lien à partager.]]></summary>
        <content type="html"><![CDATA[<p>Sur un vrai cluster, le tableau des pods compte plus d'une centaine de lignes
sans ordre particulier, et le seul moyen de s'y retrouver était la recherche du
navigateur. Les deux tableaux de l'écran Nœuds se trient et se filtrent
désormais.</p>
<!-- -->
<ul>
<li class="">
<p><strong>Un tri sur chaque colonne.</strong> Les nœuds par nom, processeur, mémoire, réseau
ou nombre de pods ; les pods par nom, espace de noms, charge de travail,
nœud, processeur ou mémoire. Les nœuds restent par défaut dans l'ordre
alphabétique, pour que la liste ne se réorganise pas d'un rafraîchissement à
l'autre, et le classement par charge n'est qu'à un clic. Le réseau se trie sur
l'émission et la réception cumulées — trier sur la seule réception ferait
passer pour calme un nœud qui émet beaucoup.</p>
</li>
<li class="">
<p><strong>Un filtre à la frappe.</strong> Les nœuds par nom ; les pods par nom, espace de
noms <em>ou</em> charge de travail, avec un sélecteur d'espace de noms qui apparaît
dès qu'il y a plus d'un choix possible. Rien n'attend une requête : les
lignes sont déjà dans le navigateur.</p>
</li>
<li class="">
<p><strong>Une vue filtrée est un lien.</strong> Le filtre vit dans l'URL, comme partout
ailleurs ici : vous envoyez à un collègue le tableau exact que vous avez sous
les yeux au lieu de le décrire.</p>
</li>
<li class="">
<p><strong>Des compteurs qui ne trompent pas.</strong> Filtre actif, l'en-tête indique « N sur
M » : un tableau restreint ne se confond jamais avec un cluster qui rétrécit.
Et un filtre sans résultat le dit — au lieu d'afficher le message « installez
le capteur pour collecter les métriques », qui vous enverrait diagnostiquer
une installation en parfaite santé.</p>
</li>
</ul>
<p>Voir les <a class="" href="https://avuruobs.io/fr/docs/signals/metrics">métriques d'infrastructure</a> pour ce que
l'écran Nœuds collecte, et comment.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dire quels services comptent, sans redéployer]]></title>
        <id>https://avuruobs.io/fr/changelog/service-groups-ui</id>
        <link href="https://avuruobs.io/fr/changelog/service-groups-ui"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les groupes de santé de services — nom, niveau de criticité et sélecteur — se créent, se modifient et se suppriment dans Paramètres → Groupes, et s'appliquent dès la lecture de santé suivante.]]></summary>
        <content type="html"><![CDATA[<p>Décider que <code>payments</code> est votre service le plus critique imposait jusqu'ici de
modifier <code>values.yaml</code>, de lancer un <code>helm upgrade</code> et d'avoir les droits
cluster pour le faire. Dans les faits, personne ne le faisait : l'écran Santé
des services affichait un groupe auto-découvert par espace de noms et les
couloirs de criticité restaient vides. Les groupes s'écrivent désormais depuis
l'application.</p>
<!-- -->
<ul>
<li class="">
<p><strong>Paramètres → Groupes.</strong> Créez un groupe à partir d'un nom, d'un niveau de
criticité (T0–T3) et des espaces de noms ou services qu'il couvre ; modifiez-le
ou supprimez-le ensuite. Le changement s'applique à la lecture de santé
suivante — sans redémarrage, sans redéploiement, sans pull request. L'écran
Santé des services renvoie directement vers l'éditeur au lieu de citer une clé
de configuration.</p>
</li>
<li class="">
<p><strong>Le regroupement automatique fonctionne toujours.</strong> Les services qu'aucun
groupe ne revendique continuent d'être rassemblés par espace de noms au niveau
par défaut, exactement comme avant : rien ne disparaît pendant que vous
organisez.</p>
</li>
<li class="">
<p><strong>Les groupes déclarés dans le chart continuent de fonctionner, et
l'emportent.</strong> Ils s'affichent en lecture seule, car une installation qui gère
ses groupes dans Git ne doit pas les voir écrasés discrètement depuis un
navigateur. Le conflit est refusé au moment de l'enregistrement plutôt que
découvert à la mise à jour suivante — et si le chart revendique plus tard un
nom que vous aviez déjà créé, ce groupe est signalé comme remplacé au lieu de
cesser silencieusement de regrouper quoi que ce soit.</p>
</li>
<li class="">
<p><strong>L'alerting et l'écran ne peuvent plus diverger.</strong> Les deux sources sont
fusionnées à un seul endroit, partagé par l'API de santé et l'évaluateur
d'alertes. C'est ce qui compte : l'évaluateur ne passe pas par l'API, donc
fusionner ailleurs aurait signifié qu'un groupe créé par vos soins s'affiche
comme critique à l'écran sans jamais déclencher la moindre alerte. Un test
parcourt les deux chemins puis déclenche une vraie règle sur un groupe qui
n'existe qu'en base.</p>
</li>
<li class="">
<p><strong>Sûr par construction.</strong> Les écritures sont réservées aux administrateurs et
validées avec les mêmes règles que la configuration du chart au démarrage :
rien de ce que vous enregistrez ici ne fera échouer le prochain démarrage du
hub. Tous les autres peuvent lire les définitions — voir comment le parc est
organisé n'est pas un privilège.</p>
</li>
</ul>
<p>Les seuils, les arêtes critiques et le niveau par défaut restent pour l'instant
dans <a class="" href="https://avuruobs.io/fr/docs/signals/service-health"><code>serviceGroups</code></a> ; les groupes sont la
partie dont on a besoin au quotidien.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Voir où vivent vos données, et qui peut y toucher]]></title>
        <id>https://avuruobs.io/fr/changelog/settings-storage-access</id>
        <link href="https://avuruobs.io/fr/changelog/settings-storage-access"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Deux nouveaux onglets de Paramètres : Stockage (connexion, occupation par signal et rétention fiable) et Accès (ce que chaque rôle a le droit de faire, dérivé des gardes du hub).]]></summary>
        <content type="html"><![CDATA[<p>Deux questions que l'on se pose dès la première semaine d'exploitation — <em>où
mes données sont-elles réellement stockées ?</em> et <em>que peut faire ce rôle ?</em> —
ont désormais chacune leur écran.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stockage">Stockage<a href="https://avuruobs.io/fr/changelog/settings-storage-access#stockage" class="hash-link" aria-label="Lien direct vers Stockage" title="Lien direct vers Stockage" translate="no">​</a></h2>
<ul>
<li class="">
<p><strong>La connexion, en lecture seule.</strong> Adresse, base et utilisateur du
ClickHouse auquel ce hub parle. La lecture seule est la réponse honnête, pas
une fonctionnalité manquante : ClickHouse <em>est</em> le magasin de données, il ne
peut donc pas contenir sa propre chaîne de connexion. La carte le dit et vous
donne la ligne <code>--set</code>, au lieu d'un formulaire qui échouerait en silence.
Elle s'affiche même quand ClickHouse est injoignable — le moment précis où
« quelle adresse n'a-t-on pas réussi à joindre ? » est la première question.</p>
</li>
<li class="">
<p><strong>L'occupation par signal</strong>, déplacée depuis l'onglet État : taille sur
disque, taux de compression, nombre de lignes, ancienneté des données. Chaque
onglet répond maintenant à une seule question — État, c'est <em>est-ce que ça va
bien en ce moment</em> ; Stockage, c'est <em>qu'y a-t-il dedans</em>.</p>
</li>
<li class="">
<p><strong>Une rétention à laquelle se fier.</strong> Le nombre de jours dans vos valeurs est
ce que l'installation est <em>configurée</em> pour conserver. Le TTL des tables est
ce que ClickHouse <em>applique</em> réellement — et modifier une valeur de rétention
ne change rien aux tables déjà créées tant que la migration ne réapplique pas
le TTL. D'ici là, le nombre configuré est un vœu. Quand les deux divergent, la
colonne affiche <code>30j → 7j</code> plutôt que de répéter le vœu, et une base dont la
rétention n'a pas encore été appliquée affiche <code>→ aucune</code>.</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="accès">Accès<a href="https://avuruobs.io/fr/changelog/settings-storage-access#acc%C3%A8s" class="hash-link" aria-label="Lien direct vers Accès" title="Lien direct vers Accès" translate="no">​</a></h2>
<p>Quel rôle peut lire, et lequel peut modifier, chaque domaine du produit — carte
des services, traces, suivi des erreurs, alerting, utilisateurs, et le reste.</p>
<p>Chaque case vient du hub, qui la déduit des autorisations avec lesquelles ses
routes sont réellement enregistrées. Rien n'est recopié dans le navigateur :
ajoutez un point d'API réservé aux administrateurs et il apparaît ici ; changez
ce qu'une route exige et ce tableau change avec elle. Un tableau de permissions
qui peut contredire ce que le serveur applique est pire que pas de tableau du
tout, parce qu'on le croit.</p>
<p>Une installation qui tourne sans authentification l'annonce en haut de
l'onglet, au lieu de présenter un modèle que rien n'applique.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ce-que-cela-a-permis-de-trouver">Ce que cela a permis de trouver<a href="https://avuruobs.io/fr/changelog/settings-storage-access#ce-que-cela-a-permis-de-trouver" class="hash-link" aria-label="Lien direct vers Ce que cela a permis de trouver" title="Lien direct vers Ce que cela a permis de trouver" translate="no">​</a></h2>
<p>Construire cette matrice a exigé d'indexer la garde de chaque route — c'est
ainsi que l'on a vu que trois d'entre elles n'en avaient aucune. Voir <a class="" href="https://avuruobs.io/fr/changelog/green-endpoints-auth">la note
de sécurité</a> : si vous utilisez le module
green avec l'authentification activée, elle vaut deux minutes de votre temps.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
        <category label="Plateforme" term="Plateforme"/>
        <category label="Sécurité" term="Sécurité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[v0.4.0 : gérer les utilisateurs de bout en bout — et trois portes d'entrée refermées]]></title>
        <id>https://avuruobs.io/fr/changelog/v0-4-0</id>
        <link href="https://avuruobs.io/fr/changelog/v0-4-0"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les Réglages accueillent la gestion complète des utilisateurs et le changement de mot de passe en libre-service, trois contournements d'authentification sont corrigés, et une installation dont la migration de schéma n'a jamais tourné se répare désormais d'elle-même.]]></summary>
        <content type="html"><![CDATA[<p>La <strong>v0.4.0</strong> termine le cycle de vie des comptes entamé en v0.2 : les
utilisateurs peuvent maintenant être modifiés, réinitialisés et supprimés depuis
l'interface, et chacun peut changer son propre mot de passe. En passant cette
surface en revue, trois manières d'entrer dans un compte qui n'auraient pas dû
fonctionner sont apparues — les trois sont refermées. À leurs côtés, une
installation qui avait silencieusement perdu sa migration de schéma se répare
désormais toute seule.</p>
<!-- -->
<ul>
<li class="">
<p><strong>Les utilisateurs, gérés de bout en bout.</strong> Réglages → Utilisateurs permet
désormais de modifier le nom et les rôles d'un utilisateur, de réinitialiser
son mot de passe et de le <strong>supprimer</strong> — une seconde étape explicite,
accessible seulement après désactivation, pour qu'une suppression ne tienne
jamais à un clic malheureux. Un nouvel onglet Réglages → Compte permet à tout
utilisateur local connecté de changer son propre mot de passe : le mot de
passe actuel est exigé, les autres sessions sont fermées, et celle que vous
utilisez reste ouverte. Ces opérations sont refusées aux utilisateurs SSO,
dont l'identifiant appartient au fournisseur d'identité.</p>
</li>
<li class="">
<p><strong>Un administrateur pouvait créer un mot de passe local fonctionnel sur un
compte SSO.</strong> <code>PUT /api/v1/users/{id}</code> acceptait un mot de passe pour
n'importe quel utilisateur, quelle que soit son origine, et le chemin de
connexion ne filtrait pas davantage sur cette origine — le nouvel identifiant
constituait donc une véritable connexion, contournant le fournisseur
d'identité ainsi que son MFA et sa politique d'accès conditionnel. La
modification de mot de passe est désormais réservée aux comptes locaux, aussi
bien sur la route d'administration que sur la nouvelle route en libre-service.</p>
</li>
<li class="">
<p><strong>Changer d'adresse IP suffisait à contourner le verrouillage des
connexions.</strong> Les deux axes de limitation portaient sur l'adresse du client :
des tentatives réparties sur N adresses offraient N × 5 essais par minute
contre un même compte sans déclencher ni l'un ni l'autre — un simple pool NAT
cloud rendait le verrouillage par compte décoratif. Un troisième axe compte
désormais les échecs sur le compte lui-même (20 par minute), aussi bien pour
la connexion que pour le changement de mot de passe en libre-service. C'est un
arbitrage assumé : des échecs répétés maintiendront la <em>connexion</em> à ce compte
bloquée sur une fenêtre d'une minute qui se réinitialise seule, sans jamais
toucher aux sessions déjà ouvertes ni aux connexions réussies.</p>
</li>
<li class="">
<p><strong>Une connexion SSO pouvait s'approprier l'adresse e-mail d'un compte
local.</strong> Un utilisateur du fournisseur d'identité dont l'e-mail correspondait
à un compte local ajoutait une seconde ligne partageant cette adresse, et la
recherche par mot de passe retenait ensuite indifféremment l'une ou l'autre —
quiconque pouvait fixer sa propre revendication d'e-mail pouvait donc viser
l'administrateur d'amorçage. La recherche donne maintenant la priorité au
compte local, et la connexion par mot de passe est réservée aux comptes
locaux, au lieu de compter sur le fait que les lignes SSO portent une
empreinte de mot de passe vide.</p>
</li>
<li class="">
<p><strong>Une installation dont la migration de schéma n'a jamais tourné se répare
d'elle-même.</strong> Le schéma est appliqué par un hook Helm
<code>post-install</code>/<code>post-upgrade</code> — que Helm n'exécute qu'<em>après</em> le succès de
<code>--wait</code>. Une release qui expirait sur un composant lent ne créait donc jamais
le job, alors que les déploiements déjà appliqués par Helm, eux, démarraient
normalement. Le résultat avait l'air en bonne santé et répondait <em>table
inconnue</em> à tout. Le hub vérifie désormais son schéma à la connexion et
applique lui-même ce qui manque (<code>hub.autoMigrate</code>, actif par défaut ; les
migrations sont idempotentes). Quand il ne le peut pas — pas de droits DDL, ou
auto-réparation désactivée — il émet <strong>une seule</strong> erreur nommant le remède au
lieu d'un flot d'avertissements, et Réglages → État gagne un composant
<strong>Schéma</strong> indiquant l'état appliqué face à l'état attendu.</p>
</li>
<li class="">
<p><strong>Un nom de base ClickHouse autre que celui par défaut ne casse plus
silencieusement l'installation.</strong> <code>clickhouse.external.database</code> est une
valeur documentée et validée, mais chaque migration codait en dur le préfixe
<code>otel</code> : les tables atterrissaient dans une base pendant que le hub
interrogeait l'autre et la trouvait vide. Les migrations nomment désormais
leur base via un paramètre substitué, et le nom configuré est validé comme
identifiant au démarrage. Les installations sur la base par défaut ne sont pas
concernées.</p>
</li>
<li class="">
<p><strong>Green ne fait plus tomber la sonde sur les nœuds sans RAPL.</strong> La source de
mesure s'arrête au démarrage lorsqu'elle ne trouve aucune zone powercap, et un
conteneur qui s'interrompt lui-même empêche tout le pod de passer Ready :
activer la collecte green sur une flotte de VM emportait donc les logs, les
traces et les métriques avec un signal énergétique pourtant optionnel. La
source mesurée peut maintenant être retirée seule via
<code>sensor.green.kepler.enabled=false</code>, l'estimation TDP continuant d'alimenter
la page Green. Le matériel doté de RAPL n'est pas concerné.</p>
</li>
<li class="">
<p><strong>Se connecter derrière un reverse proxy qui réécrit <code>Host</code> ne renvoie plus
403.</strong> La vérification CSRF comparait l'<code>Origin</code> du navigateur au <code>Host</code> reçu
par le hub : un proxy transmettant au cluster son adresse d'ingress
transformait toute écriture — à commencer par le POST de connexion — en requête
inter-origine rejetée. <code>auth.trustedOrigins</code> déclare les origines légitimes
malgré un <code>Host</code> différent, et <code>auth.originCheck</code> (<code>enforce</code> | <code>log</code> | <code>off</code>)
abaisse le contrôle lorsqu'on ne peut pas les énumérer ; <code>log</code> autorise
l'écriture et enregistre le couple <code>Origin</code>/<code>Host</code>, ce qui permet justement de
découvrir ce que votre proxy envoie réellement. Le comportement par défaut
reste strict, et une <code>publicUrl</code> OIDC est approuvée automatiquement.</p>
</li>
</ul>
<p><strong>La montée depuis une v0.3.x</strong> est un <code>helm upgrade</code> ordinaire. La migration de
schéma <code>0015</code> s'applique automatiquement. Si vous utilisez un compte ClickHouse
durci sans droits DDL, conservez le job de migration tel quel et laissez
<code>hub.autoMigrate</code> actif : il signalera proprement au lieu d'échouer. Voir la
page <a class="" href="https://avuruobs.io/fr/docs/releases">Versions</a> et la
<a href="https://github.com/avuruvision/avuru-obs/releases/tag/v0.4.0" target="_blank" rel="noopener noreferrer" class="">release GitHub</a>.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
        <category label="Sécurité" term="Sécurité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[La v0.3.0 est là : une multi-tenance digne de confiance — des projets que vous administrez, une télémétrie qui prouve son origine]]></title>
        <id>https://avuruobs.io/fr/changelog/v0-3-0</id>
        <link href="https://avuruobs.io/fr/changelog/v0-3-0"/>
        <updated>2026-07-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La troisième version verrouille l'écriture : créez, renommez et supprimez vos projets depuis l'interface, puis émettez des clés d'ingestion par projet pour que ce soit la clé — et non l'émetteur — qui décide où atterrit la télémétrie. Plus une démo en lecture seule en un clic, le module green sur les VM cloud sans RAPL, et la couche de déploiement renommée avuruobs.]]></summary>
        <content type="html"><![CDATA[<p>avuru obs <strong>v0.3.0</strong> est publiée. La v0.2 avait sécurisé la lecture —
connexion, rôles, droits par projet, SSO. La v0.3 verrouille l'écriture et
fait du projet quelque chose que vous administrez vraiment.</p>
<!-- -->
<ul>
<li class=""><strong>Des projets que vous administrez.</strong> Créez, renommez et supprimez vos
projets dans <strong>Paramètres → Général</strong> ; le sélecteur et l'onglet Général
suivent immédiatement, tandis que le projet natif <code>default</code> et tout projet
déclaré dans le chart restent en lecture seule et clairement identifiés.
L'identifiant d'un projet est un slug de tenant immuable — seul son nom
d'affichage est modifiable : aucune télémétrie n'est jamais réécrite ni
perdue.</li>
<li class=""><strong>Une télémétrie qui prouve son origine.</strong> Émettez des <strong>clés d'API
d'ingestion par projet</strong> ; le secret en clair n'est affiché qu'une seule fois
et seule son empreinte est stockée. Les clés sont validées dans la passerelle
— le hub n'entre jamais dans le chemin des octets de télémétrie — et en mode
<code>enforce</code>, le projet de la clé devient le <strong>tenant qui fait autorité</strong> : un
émetteur qui ment sur son tenant atterrit là où sa clé l'indique. Le mode
<code>log</code> par défaut laisse le pipeline strictement identique : la promesse OTLP
« prise en charge directe » survit à la mise à jour.</li>
<li class=""><strong>Une démo que vous pouvez donner à n'importe qui.</strong> Un clic sur la page de
connexion ouvre une session de lecteur en lecture seule, restreinte à un seul
projet ; le mot de passe partagé reste côté serveur et n'atteint jamais le
navigateur. À combiner avec la surcouche astronomy-shop pour des données
réelles dans tous les modules.</li>
<li class=""><strong>Le module green sur les VM cloud.</strong> Les instances de cloud public
n'exposent aucun compteur de puissance : un modèle optionnel comble
désormais ce trou — chaque chiffre modélisé étant étiqueté <em>estimé</em> de bout
en bout, jamais mélangé à l'énergie mesurée, avec un panneau de couverture
qui rend visible la part de flotte sans RAPL
(<a class="" href="https://avuruobs.io/fr/changelog/green-tdp-estimation">détails</a>).</li>
<li class=""><strong>Contrôle de la collecte à chaud — les fondations.</strong> Le hub sait désormais
stocker et servir une surcouche de collecte bornée et validée par schéma,
derrière un réglage désactivé par défaut et des droits minimaux.
L'applicateur et l'interface éditable arrivent ensuite ; aujourd'hui, la
collecte se configure toujours par les valeurs Helm.</li>
<li class=""><strong>Rupture : <code>avuruops</code> devient <code>avuruobs</code>.</strong> Le chart Helm, les variables
d'environnement <code>AVURUOBS_*</code>, les chemins de montage et les noms de
ressources générés correspondent enfin au nom du projet. Une mise à jour
depuis une 0.2.x n'est <strong>pas</strong> un simple <code>helm upgrade</code> — suivez le
<a class="" href="https://avuruobs.io/fr/docs/operations/upgrade">guide de mise à jour</a>, qui propose une voie sans
renommage (<code>--set nameOverride=avuruops</code>) et une voie d'installation propre.</li>
</ul>
<p>Également corrigé : une installation neuve avec la démo activée pouvait se
retrouver <strong>sans compte administrateur</strong> (le lecteur de démo satisfaisait la
condition d'amorçage : <code>admin</code> n'était jamais créé et chaque connexion échouait
comme si le mot de passe était faux) — les installations concernées se
réparent d'elles-mêmes au redémarrage suivant. Plus : un échec de rendu Helm à
la première installation, le visiteur de démo qui atterrissait sur le mauvais
projet, et la connexion derrière un reverse proxy sur un port non standard.</p>
<p>Les notes complètes sont sur la page <a class="" href="https://avuruobs.io/fr/docs/releases">Versions</a> et dans la
<a href="https://github.com/avuruvision/avuru-obs/releases/tag/v0.3.0" target="_blank" rel="noopener noreferrer" class="">version GitHub</a>.
Le tronc est désormais en <code>0.4.0-SNAPSHOT</code> — la suite sur la
<a class="" href="https://avuruobs.io/fr/docs/roadmap">feuille de route</a> : les projets membres multi-clusters, le plan
de contrôle de la collecte terminé de bout en bout, et une compatibilité
d'ingestion élargie.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
        <category label="Durabilité" term="Durabilité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[v0.3.1 : une installation par défaut retrouve ses images]]></title>
        <id>https://avuruobs.io/fr/changelog/v0-3-1</id>
        <link href="https://avuruobs.io/fr/changelog/v0-3-1"/>
        <updated>2026-07-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une version corrective. Les coordonnées d'images du chart n'ont jamais correspondu à ce que publie le workflow de release : un helm install sans --set ne pouvait résoudre ni le hub, ni l'UI, ni la passerelle, ni l'estimateur TDP. Corrigé des deux côtés.]]></summary>
        <content type="html"><![CDATA[<p>La <strong>v0.3.1</strong> est une version corrective : elle répare les valeurs d'images par
défaut du chart, qui ne désignaient pas les images réellement publiées par le
workflow de release. Rien d'autre ne change — ni migration de schéma, ni
surface d'API ou de configuration.</p>
<!-- -->
<ul>
<li class=""><strong>Les deux moitiés de la référence étaient fausses.</strong> Les dépôts nommaient
des coordonnées Docker Hub que personne ne publie, alors que les versions
sont poussées vers <code>ghcr.io/avuruvision/avuru-obs-&lt;composant&gt;</code> ; et le tag
reprenait par défaut l'<code>appVersion</code> du chart — du SemVer nu, sans <code>v</code>
initial — alors que seuls <code>vX.Y.Z</code> et <code>vX.Y</code> étaient poussés. Corriger l'un
sans l'autre n'aurait fait que remplacer une référence introuvable par une
autre : les deux sont donc corrigées. Les quatre dépôts internes pointent
vers le registre, et le workflow publie désormais aussi le tag <code>X.Y.Z</code> nu.</li>
<li class=""><strong>L'estimation TDP du module green n'avait aucune image.</strong> Son dépôt était
vide : activer l'estimateur produisait une référence sans nom ni tag. Elle
reprend maintenant le même comportement par défaut que les trois autres
images internes.</li>
</ul>
<p><strong>Si vous êtes en v0.3.0</strong>, faites un <code>helm upgrade</code> vers <code>0.3.1</code> : vous pouvez
alors retirer les <code>--set hub.repository=…</code> / <code>--set …tag=…</code> ajoutés pour
contourner le problème. Les installations qui épinglent leurs images
volontairement — registre privé via <code>image.registry</code>, miroirs hors ligne — ne
sont concernées dans aucun des deux cas.</p>
<p>Voir la page <a class="" href="https://avuruobs.io/fr/docs/releases">Versions</a> et la
<a href="https://github.com/avuruvision/avuru-obs/releases/tag/v0.3.1" target="_blank" rel="noopener noreferrer" class="">version GitHub</a>.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Des chiffres d'énergie sur les VM cloud : l'estimation TDP pour les nœuds sans RAPL]]></title>
        <id>https://avuruobs.io/fr/changelog/green-tdp-estimation</id>
        <link href="https://avuruobs.io/fr/changelog/green-tdp-estimation"/>
        <updated>2026-07-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les instances de cloud public n'exposent aucun compteur de puissance : le module green les laissait vides. Un modèle de puissance optionnel comble ce trou — et chaque chiffre modélisé est étiqueté estimé de bout en bout, jamais mélangé à l'énergie mesurée.]]></summary>
        <content type="html"><![CDATA[<p>Le module green ne remontait de l'énergie que là où le matériel expose RAPL —
ce qui exclut l'écrasante majorité des VM de cloud public. Un <strong>estimateur TDP
optionnel</strong> modélise désormais la puissance CPU à partir de l'utilisation sur
ces nœuds : une flotte entièrement composée d'instances cloud ne voit plus un
<code>/green</code> vide.</p>
<!-- -->
<ul>
<li class=""><strong>Honnête par construction.</strong> Chaque chiffre produit par l'estimateur est
marqué <strong>estimé</strong> sur toute la chaîne — SQL, API, interface et bloc
méthodologie de l'export CSRD — et n'est jamais mélangé à l'énergie mesurée
par RAPL. Pour un même service, énergie estimée et mesurée apparaissent en
lignes distinctes : un total ne peut donc pas confondre les deux
silencieusement. Les estimations valent pour la tendance et la détection de
régression (erreur typique de ±30 à 50 %), pas pour un audit.</li>
<li class=""><strong>La part sans RAPL devient visible.</strong> <code>/green</code> gagne un panneau de
couverture qui répartit la flotte entre nœuds connus, mesurés, estimés et
absents. Ce qui manquait en silence devient visible, donc actionnable.</li>
<li class=""><strong>Les budgets en tiennent compte.</strong> Les budgets carbone intègrent l'énergie
estimée — le budget d'une flotte 100 % VM peut donc réellement être
dépassé — et un dépassement précise la part modélisée face à la part
mesurée.</li>
<li class=""><strong>Des coefficients sourcés.</strong> La table de puissance CPU embarquée est citée
(Cloud Carbon Footprint, recoupée avec le notebook d'origine dérivé de
SPECpower), et les opérateurs peuvent surcharger <code>P_idle</code>/<code>P_max</code> par nœud ou
pour toute la flotte.</li>
</ul>
<p>Activez-la avec <code>sensor.green.estimation.enabled</code> (qui requiert
<code>sensor.green.enabled</code> : l'estimateur est un repli sur le même signal
d'énergie, pas une seconde source). Voir la
<a class="" href="https://avuruobs.io/fr/docs/signals/green">documentation du module green</a>.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Durabilité" term="Durabilité"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Authentifiez votre télémétrie : clés d'API d'ingestion par projet]]></title>
        <id>https://avuruobs.io/fr/changelog/ingest-api-keys</id>
        <link href="https://avuruobs.io/fr/changelog/ingest-api-keys"/>
        <updated>2026-07-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La télémétrie est désormais authentifiée à l'écriture. Une clé appartient à un projet et, en mode enforce, ce projet devient le tenant qui fait autorité — un émetteur ne décide plus lui-même du projet dans lequel il atterrit. Déploiement progressif en trois étapes, sans casser les émetteurs existants.]]></summary>
        <content type="html"><![CDATA[<p>Jusqu'ici, une gateway croyait sur parole le projet annoncé par l'émetteur.
Vous pouvez maintenant émettre des <strong>clés d'API d'ingestion par projet</strong> et
laisser la clé trancher — avec un réglage par défaut qui ne change rien tant
que vous n'êtes pas prêt.</p>
<!-- -->
<ul>
<li class=""><strong>C'est la clé qui détermine le projet.</strong> Créez vos clés dans <strong>Paramètres →
Général → Clés d'API d'ingestion</strong> (ou via <code>POST /api/v1/projects/{project}/keys</code>). En mode <code>enforce</code>, le projet de la clé
validée devient le <strong>tenant qui fait autorité</strong> et écrase toute valeur
fournie par l'émetteur. Un émetteur mal configuré — ou malveillant — ne peut
plus écrire dans un projet qui ne lui a jamais été accordé.</li>
<li class=""><strong>Le secret n'est affiché qu'une seule fois.</strong> Seule son empreinte SHA-256
est conservée : la clé brute est donc irrécupérable, aussi bien depuis la base
que depuis l'API. La liste n'affiche qu'un préfixe court et des métadonnées
pour l'identification ; la révocation est immédiate.</li>
<li class=""><strong>Votre chemin d'ingestion reste rapide.</strong> Les clés sont validées <strong>dans la
gateway</strong>, par une extension de collecteur dédiée. Le hub ne répond qu'à une
question de plan de contrôle : il n'est jamais sur le chemin des octets de
télémétrie. Les verdicts sont mis en cache et un verdict en cache continue de
servir pendant un redémarrage du hub — une coupure du plan de contrôle ne peut
pas faire perdre de trafic.</li>
<li class=""><strong>Un déploiement en trois étapes, pas un interrupteur.</strong> <code>auth.ingest.mode</code>
passe de <code>off</code> à <code>log</code> puis <code>enforce</code>. <strong><code>log</code> est la valeur par défaut</strong> :
les clés sont validées et les refus potentiels comptabilisés, mais rien n'est
rejeté et le pipeline reste identique à l'octet près. Vous obtenez ainsi la
liste exacte des émetteurs qui casseraient <em>avant</em> qu'ils ne cassent. Basculez
en <code>enforce</code> une fois ce compteur à zéro.</li>
<li class=""><strong>Les émetteurs existants continuent de fonctionner.</strong> La mise à jour ne
change rien par elle-même : la promesse « remplacement direct » est tenue. Le
chart provisionne et enregistre également une clé pour le capteur de nœud, si
bien qu'activer <code>enforce</code> ne coupe jamais votre propre agent.</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Gérez vos projets depuis l'UI : créer, renommer et supprimer]]></title>
        <id>https://avuruobs.io/fr/changelog/project-management</id>
        <link href="https://avuruobs.io/fr/changelog/project-management"/>
        <updated>2026-07-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les projets ont désormais une vraie identité que vous contrôlez dans l'application — les administrateurs les créent, renomment et suppriment dans Paramètres → Général, tandis que les projets intégrés et définis par configuration restent en lecture seule. Aucune donnée de télémétrie n'est jamais réécrite.]]></summary>
        <content type="html"><![CDATA[<p>Les projets ne sont plus seulement un réglage de déploiement : les
administrateurs peuvent les <strong>créer, renommer et supprimer</strong> directement dans
<strong>Paramètres → Général</strong>, et le sélecteur se met à jour en conséquence — tandis
que le projet intégré <code>default</code> et les projets définis par configuration
restent en lecture seule.</p>
<!-- -->
<ul>
<li class=""><strong>Créer, renommer, supprimer — depuis l'application.</strong> Une carte de projet
réservée aux administrateurs, dans Paramètres → Général, ajoute de nouveaux
projets, modifie le nom d'affichage d'un projet et supprime ceux gérés par
l'UI. Le sélecteur de la barre latérale et l'onglet Général reflètent les
changements immédiatement. Les non-administrateurs conservent une visibilité
en lecture seule sur les projets qui leur sont accordés.</li>
<li class=""><strong>Les projets définis par le déploiement restent protégés.</strong> Le projet
intégré <code>default</code> et tout projet déclaré dans le chart (valeur <code>projects</code> /
<code>AVURUOBS_PROJECTS</code>) sont clairement identifiés et <strong>ne peuvent être ni
modifiés ni supprimés depuis l'UI</strong> — l'application refuse avec un <code>409</code>, de
sorte que votre configuration de référence l'emporte toujours.</li>
<li class=""><strong>Un identifiant stable, un nom modifiable.</strong> L'identifiant d'un projet est un
<strong>slug de tenant immuable</strong> — la clé de partition de chaque trace, log et
métrique ; seul son <strong>libellé</strong> d'affichage est modifiable. Renommer ou
supprimer <strong>ne réécrit jamais la télémétrie</strong> : une suppression retire
l'entrée et ses données expirent selon la rétention existante, et un tenant
encore actif réapparaît simplement en tant que découvert automatiquement.</li>
<li class=""><strong>Contrôlé côté serveur, réservé aux administrateurs.</strong> Les nouveaux points
d'accès <code>POST</code> / <code>PUT</code> / <code>DELETE /api/v1/projects</code> exigent un administrateur
global (<code>403</code> sinon), et <code>GET /api/v1/projects</code> renvoie désormais le <code>source</code>,
le <code>label</code> et l'indicateur <code>editable</code> de chaque projet. Voir la
<a class="" href="https://avuruobs.io/fr/reference/api">référence API</a>.</li>
<li class=""><strong>Les fondations de la suite.</strong> Il s'agit de la première tranche du travail
sur les projets ; les clés d'ingestion par projet et les vues d'agrégation
multi-clusters s'appuient sur le même modèle.</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Voyez-le avant de l'installer : une démo en lecture seule, en un clic]]></title>
        <id>https://avuruobs.io/fr/changelog/read-only-demo</id>
        <link href="https://avuruobs.io/fr/changelog/read-only-demo"/>
        <updated>2026-07-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un seul bouton « Essayer la démo » ouvre à quiconque un avuru obs vivant, en lecture seule — traces, logs, métriques, erreurs, carte des services et énergie réels sur une application multi-services en fonctionnement, sans inscription ni installation.]]></summary>
        <content type="html"><![CDATA[<p>Vous pouvez désormais explorer un <strong>avuru obs vivant</strong> sans rien installer : un
clic sur <strong>« Essayer la démo »</strong> vous connecte en lecteur en lecture seule sur
une application multi-services en fonctionnement, avec des données réelles dans
chaque module.</p>
<!-- -->
<ul>
<li class=""><strong>Un clic, aucune configuration.</strong> Un bouton <strong>« Essayer la démo »</strong> sur la
page de connexion vous connecte directement en <strong>lecteur</strong> en lecture seule,
limité à un projet <code>demo</code> — aucun compte à créer, rien à installer. Le reste
de l'application se comporte exactement comme pour un vrai utilisateur ; les
actions d'écriture (triage, paramètres, administration des utilisateurs) ne
sont simplement pas proposées.</li>
<li class=""><strong>Des données réelles, dans chaque module.</strong> La démo est alimentée par la
boutique <strong>OpenTelemetry Astronomy Shop</strong> en direct — une véritable
application multi-services — de sorte que la carte des services, les traces,
les logs, les métriques RED, le suivi des erreurs, la santé des services et
les vues énergie affichent des données réelles et vivantes plutôt que des
captures d'écran figées.</li>
<li class=""><strong>Sûre par conception.</strong> La démo est une unique identité à faibles privilèges :
le mot de passe partagé reste <strong>côté serveur</strong> (un point de connexion à débit
limité) et n'atteint jamais le navigateur, et l'ensemble de la fonctionnalité
est <strong>opt-in</strong> — une installation normale n'expédie ni utilisateur ni projet de
démo. Activez-la avec <code>auth.demo.enabled</code>.</li>
<li class=""><strong>Aussi dans cette version.</strong> L'onglet <strong>Utilisateurs</strong> des Paramètres s'ouvre
désormais sur place au lieu de changer de page, si bien que la barre d'onglets
ne disparaît plus ; le logo de connexion affiche <strong>Avuru Obs</strong>. Voir la
<a class="" href="https://avuruobs.io/fr/reference/api">référence API</a> pour le nouveau point de connexion de la démo.</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="UI" term="UI"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Connectez-vous avec l'IdP de votre entreprise : authentification, rôles et SSO OIDC]]></title>
        <id>https://avuruobs.io/fr/changelog/authentication-sso</id>
        <link href="https://avuruobs.io/fr/changelog/authentication-sso"/>
        <updated>2026-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[avuru obs est désormais sécurisé par défaut : utilisateurs locaux avec rôles Admin/Éditeur/Lecteur accordés par projet, sessions côté serveur, et SSO d'entreprise avec n'importe quel fournisseur d'identité OpenID Connect — en open source, sans proxy supplémentaire à opérer.]]></summary>
        <content type="html"><![CDATA[<p>avuru obs est désormais <strong>sécurisé par défaut</strong> : le hub exige une connexion,
les utilisateurs portent des rôles fixes — <strong>Admin, Éditeur, Lecteur</strong> —
accordés <strong>par projet</strong>, et le <strong>SSO d'entreprise</strong> fonctionne avec n'importe
quel fournisseur d'identité OpenID Connect (Keycloak, Microsoft Entra ID, Okta,
Google, Dex) — en open source, pas derrière une offre entreprise, et sans proxy
d'authentification à déployer.</p>
<!-- -->
<ul>
<li class=""><strong>Sécurisé par défaut.</strong> Les nouvelles installations exigent une connexion
(<code>auth.enabled=true</code>) ; Helm amorce un utilisateur <code>admin</code> dont le mot de
passe vit dans le Secret de la release. Chaque route de l'API est contrôlée
<strong>côté serveur</strong>, et l'en-tête de projet est validé contre les droits de
l'appelant — les projets deviennent une vraie frontière de sécurité : un
utilisateur limité à <code>staging</code> reçoit <code>403</code> partout ailleurs et un sélecteur
de projet qui ne liste que <code>staging</code>. <code>auth.enabled=false</code> rétablit l'ancien
comportement ouvert. Voir <a class="" href="https://avuruobs.io/fr/docs/operations/security">Sécurité</a>.</li>
<li class=""><strong>Des rôles × des projets, pas un labyrinthe d'ACL.</strong> Trois rôles fixes —
Admin, Éditeur, Lecteur — accordés par projet (ou <code>*</code> pour tous). Une page de
connexion et un écran d'administration <strong>Paramètres → Utilisateurs</strong> les
accompagnent ; la surface d'API est décrite dans la
<a class="" href="https://avuruobs.io/fr/reference/api">référence API</a>.</li>
<li class=""><strong>Connectez-vous avec l'IdP de votre entreprise.</strong> Le hub exécute lui-même le
flux OIDC <strong>authorization-code + PKCE</strong> (<code>/api/v1/auth/oidc/start</code> → IdP →
<code>/api/v1/auth/oidc/callback</code>) — pas de pod supplémentaire, pas de proxy en
frontal. La découverte du fournisseur échoue <strong>bruyamment</strong> au démarrage : un
issuer erroné arrête le déploiement au lieu de livrer une page de connexion
cassée, et une connexion SSO aboutit à la même session côté serveur qu'une
connexion locale.</li>
<li class=""><strong>Accès par groupes, zéro administration par utilisateur.</strong>
<code>auth.oidc.mapping</code> associe déclarativement les groupes de l'IdP à un rôle
sur des projets (avec un repli <code>defaultRole</code>). Les groupes sont rafraîchis à
chaque connexion SSO et le mapping est appliqué à chaque requête depuis le
fichier de configuration <strong>rechargé à chaud</strong> (~15 s, sans redémarrage) — un
changement de politique d'accès prend effet sans toucher aux comptes
individuels.</li>
<li class=""><strong><code>forceSSO</code> pour une politique centralisée.</strong> Masque le formulaire de mot de
passe local afin que l'IdP soit la seule porte d'entrée pour les personnes —
la connexion admin locale par l'API reste disponible en secours. Tout se
configure depuis les values Helm (<code>auth.oidc.*</code>) ; le secret client provient
de votre propre Secret ou d'un Secret géré par le chart, jamais du fichier de
configuration.</li>
<li class=""><strong>Des sessions réellement révocables.</strong> Les sessions sont <strong>côté serveur</strong>
(la révocation est immédiate), les connexions sont limitées en débit, et
l'état vit dans la base de données existante — aucun composant nouveau.</li>
<li class=""><strong>Consultation anonyme opt-in.</strong> Accordez aux visiteurs un rôle sur une
<strong>liste explicite de projets</strong> uniquement : une démo publique peut partager
un projet pendant que tous les autres restent invisibles.</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ouvert pour de bon : la licence AGPL, dite en toutes lettres]]></title>
        <id>https://avuruobs.io/fr/changelog/licensing-model</id>
        <link href="https://avuruobs.io/fr/changelog/licensing-model"/>
        <updated>2026-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[avuru obs énonce désormais sa licence en termes clairs — AGPL-3.0 pour la plateforme, Apache-2.0 pour le capteur eBPF, un CLA qui garantit que chaque contribution reste ouverte pour toujours, et une attribution des tiers générée automatiquement. L'auto-hébergement reste sans obligation.]]></summary>
        <content type="html"><![CDATA[<p>avuru obs est en <strong>AGPL-3.0</strong>, et toute l'histoire de sa licence tient désormais
en un seul endroit — ce qu'elle vous demande (presque rien), pourquoi le projet
l'a choisie, et comment il assure sa pérennité <strong>sans verrouiller de
fonctionnalités derrière un palier payant</strong>.</p>
<!-- -->
<ul>
<li class=""><strong>Une page de licence réellement lisible.</strong> Une nouvelle page
<a class="" href="https://avuruobs.io/fr/docs/licensing">Licence et pérennité</a> (EN + FR) répond aux vraies questions
que les gens se posent : l'auto-hébergement est <strong>sans obligation</strong>, observer
vos services n'en fait jamais des œuvres dérivées, et l'AGPL ne vous demande
quelque chose que si vous <strong>modifiez avuru obs lui-même et le proposez à des
tiers via un réseau</strong>.</li>
<li class=""><strong>Rien n'est réservé à une offre payante.</strong> Authentification, rôles, contrôle
d'accès par projet et <strong>SSO OIDC</strong> — des capacités souvent verrouillées
derrière un palier payant ailleurs — sont dans l'édition open source.
AGPL-3.0, pour toujours.</li>
<li class=""><strong>Chaque contribution reste ouverte.</strong> Le §2.2 de l'
<a href="https://github.com/avuruvision/avuru-obs/blob/main/CLA.md" target="_blank" rel="noopener noreferrer" class="">accord de licence de contribution</a>
garantit juridiquement que chaque contribution reste disponible sous
AGPL-3.0 — l'édition open source ne peut jamais être fermée ni amputée
rétroactivement.</li>
<li class=""><strong>Le capteur reste en Apache-2.0.</strong> L'agent de nœud eBPF est l'
<a href="https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation" target="_blank" rel="noopener noreferrer" class="">OpenTelemetry eBPF Instrumentation</a>
(OBI) en amont, configuré — non forké — et conserve donc sa licence
permissive.</li>
<li class=""><strong>Attribution des tiers, générée et non tenue à la main.</strong> Une cible
<code>make notices</code> produit
<a href="https://github.com/avuruvision/avuru-obs/blob/main/THIRD-PARTY-NOTICES.md" target="_blank" rel="noopener noreferrer" class="">THIRD-PARTY-NOTICES.md</a>
à partir des arbres de dépendances Go et TypeScript réels, intégrée à la
checklist de release pour que l'attribution ne s'écarte jamais de ce qui est
livré.</li>
<li class=""><strong>Pourquoi l'AGPL, dit franchement.</strong> Une plateforme d'observabilité détient
la télémétrie la plus sensible qu'une organisation produise. avuru obs est
conçu comme une alternative <strong>souveraine</strong> à la facturation SaaS par hôte — et
l'AGPL est ce qui empêche l'édition open source d'être enfermée dans le service
fermé de quelqu'un d'autre.</li>
</ul>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="Docs" term="Docs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[v0.2.0 est là : profondeur et contrôle — sécurisé par défaut, signaux modulaires, quatre nouveaux modules]]></title>
        <id>https://avuruobs.io/fr/changelog/v0-2-0</id>
        <link href="https://avuruobs.io/fr/changelog/v0-2-0"/>
        <updated>2026-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La deuxième version rend l'installation en cinq minutes exploitable par de vraies équipes : connexion avec rôles et SSO, modules à la carte, un capteur qu'on peut laisser activé en toute confiance, et le suivi des erreurs, la santé des services, les alertes et l'énergie verte sur les données déjà collectées.]]></summary>
        <content type="html"><![CDATA[<p>avuru obs <strong>v0.2.0</strong> est taguée. La v0.1 a prouvé le pari : une carte des
services vivante en moins de cinq minutes, sans toucher aux applications. La
v0.2 en fait une installation qu'une vraie équipe peut exploiter au
quotidien : <strong>sécurisée par défaut</strong>, <strong>modulaire par conception</strong>, avec
quatre nouveaux modules qui transforment les données déjà collectées en
triage, en état de santé et en redevabilité.</p>
<!-- -->
<ul>
<li class=""><strong>Sécurisé par défaut.</strong> Le hub exige désormais une connexion : des
utilisateurs locaux avec les rôles Admin, Éditeur et Lecteur, accordés par
projet et appliqués côté serveur sur chaque route de l'API — les projets
deviennent une vraie frontière de sécurité, pas un simple filtre. Ajoutez le
<strong>SSO d'entreprise</strong> avec n'importe quel fournisseur OpenID Connect
(correspondance groupe→rôle, <code>forceSSO</code> pour les flottes 100 % IdP) — sans
proxy annexe, sans pod supplémentaire
(<a class="" href="https://avuruobs.io/fr/docs/operations/security">guide sécurité</a>).</li>
<li class=""><strong>Choisissez vos signaux.</strong> Un interrupteur par famille de signaux
(<code>modules.&lt;name&gt;.enabled</code>) contrôle d'un bloc son schéma, son API, son
pipeline, sa collecte et son interface — une installation « traces
uniquement » ne porte aucun poids de logs ni de profils, et la barre
latérale suit ce que l'installation annonce.</li>
<li class=""><strong>Suivi des erreurs.</strong> Les exceptions déjà présentes dans vos spans et vos
logs deviennent des problèmes dédupliqués et triables — pile d'appels,
chronologie des occurrences, lien vers la trace d'origine, cycle de vie
résolu/ignoré avec détection des régressions. Les applications navigateur
remontent aussi, en changeant un seul DSN — le signal que l'eBPF ne peut pas
atteindre.</li>
<li class=""><strong>Santé des services &amp; alertes.</strong> Regroupez les services avec des niveaux de
criticité (T0/T1/T2) et une propagation par dépendance — un service ne peut
pas s'afficher vert quand une dépendance critique est rouge — puis recevez
un webhook (protégé contre les SSRF, avec cycle déclenché/résolu) quand un
groupe bascule en mauvais état.</li>
<li class=""><strong>Santé réseau sur la carte.</strong> RTT par liaison et compteurs de connexions
échouées/réinitialisées issus des statistiques TCP eBPF — la santé au niveau
connexion, sans traces ni SDK.</li>
<li class=""><strong>Green : énergie &amp; carbone.</strong> Wh et gCO2e par service mesurés au niveau du
nœud (opt-in, matériel RAPL), budgets carbone mensuels avec alertes, et un
export prêt pour la CSRD qui explicite sa méthodologie. Rien ne sort du
cluster.</li>
<li class=""><strong>Un capteur qu'on peut laisser activé, preuve à l'appui.</strong> La CI maintient
un canari sensible aux sondes en bonne santé pendant un test d'endurance
avec le capteur attaché ; les flottes prudentes disposent d'un mode de
découverte opt-in et d'un guide de déploiement progressif.</li>
<li class=""><strong>AGPL-3.0.</strong> Le projet est désormais sous licence AGPL-3.0.</li>
</ul>
<p>Retrouvez les notes complètes sur la page <a class="" href="https://avuruobs.io/fr/docs/releases">Versions</a> et la
<a href="https://github.com/avuruvision/avuru-obs/releases/tag/v0.2.0" target="_blank" rel="noopener noreferrer" class="">version GitHub</a>.
Le tronc est désormais en <code>0.3.0-SNAPSHOT</code> — prochaines étapes sur la
<a class="" href="https://avuruobs.io/fr/docs/roadmap">feuille de route</a> : les clés d'ingestion par projet, le plan
de contrôle de la collecte à chaud, et une compatibilité d'ingestion élargie.</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Plateforme" term="Plateforme"/>
        <category label="UI" term="UI"/>
        <category label="Durabilité" term="Durabilité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Green : énergie et carbone par service, prêt pour la CSRD et hors ligne]]></title>
        <id>https://avuruobs.io/fr/changelog/green</id>
        <link href="https://avuruobs.io/fr/changelog/green"/>
        <updated>2026-07-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Énergie (Wh) et carbone (gCO2e) par service depuis CNCF Kepler, corrélés à la carte que vous avez déjà — budgets carbone, intensité par requête et un export CSRD auditable. Zéro changement de code, aucune donnée ne quitte le cluster.]]></summary>
        <content type="html"><![CDATA[<p>Le nouveau module <strong>green</strong> transforme la carte pod→service que vous exploitez
déjà en <strong>énergie (Wh) et carbone (gCO2e) par service</strong> — les chiffres que
réclament l'ESRS E1 / la CSRD et les objectifs internes de durabilité, sans
estimation sur tableur ni SaaS qui veut votre télémétrie. L'énergie est mesurée
par <strong>CNCF Kepler</strong> (depuis les compteurs RAPL du CPU) ; avuru obs sait déjà
quel pod est quel service, et attribue donc les joules aux services de votre
carte. Auto-hébergé, sans changement applicatif, sans API externe.</p>
<!-- -->
<ul>
<li class=""><strong>Des chiffres qu'un auditeur peut reproduire.</strong> Un export CSV/JSON prêt pour
la CSRD porte un <strong>bloc méthodologie</strong> — la formule, le facteur d'intensité
du réseau et sa provenance, le ratio de couverture de mesure et un seau
<em>non attribué</em> explicite — pour qu'un gCO2e reporté soit traçable jusqu'à sa
production.</li>
<li class=""><strong>Des budgets carbone par équipe.</strong> Des budgets mensuels de gCO2e par groupe
de services, avec <strong>alerte à 80 %</strong>, <strong>dépassement à 100 %</strong> et une
projection de fin de mois — livrés via les canaux d'<a class="" href="https://avuruobs.io/fr/docs/signals/alerting">alerting</a>
que vous avez déjà configurés. Alerting désactivé, les budgets affichent
quand même leur statut sur le tableau de bord.</li>
<li class=""><strong>Une efficacité démontrable.</strong> Intensité carbone par requête (Wh ÷ requêtes,
gCO2e dérivé) et tendance par service, pour qu'une optimisation ressorte même
quand le trafic augmente — plus une <strong>superposition gCO2e</strong> sur la carte des
services que vous surveillez déjà.</li>
<li class=""><strong>Hors ligne par conception.</strong> Les facteurs d'intensité du réseau sont des
<strong>moyennes annuelles par pays intégrées</strong>, avec surcharges opérateur en
configuration ; <code>gCO2e = Wh × intensité × PUE</code> s'exécute dans le hub au
moment de la requête. Aucune sortie réseau, compatible air-gap.</li>
<li class=""><strong>Aucun nouveau stockage, aucun changement de code.</strong> Tous les calculs
s'exécutent sur les tables de métriques déjà existantes — pas de migration.
Kepler rejoint le sensor comme conteneur <strong>opt-in et sans sonde</strong>
(<code>sensor.green.enabled</code>), il ne peut donc jamais déstabiliser le pod du
sensor ; et sur les nœuds sans RAPL, le module rapporte honnêtement (un ratio
de couverture et un état vide pédagogique) au lieu d'estimer.</li>
<li class=""><strong>Désactivé par défaut.</strong> Le signal dépend du matériel RAPL/powercap :
<code>modules.green.enabled</code> est donc livré <strong>désactivé</strong> — une installation
existante se met à jour sans changement. Il nécessite le
<a class="" href="https://avuruobs.io/fr/docs/setup/modules">module infra-metrics</a> pour la jointure pod→charge.</li>
</ul>
<p>:::caution À confirmer sur du matériel réel avant la production
Les noms de métriques, clés de configuration et port de Kepler sont validés en
CI avec le compteur de développement de l'image épinglée, mais <strong>doivent être
confirmés sur du matériel RAPL réel avant une utilisation en production</strong>. Les
noms de métriques du hub sont configurables précisément pour cette raison.
Voir la page <a class="" href="https://avuruobs.io/fr/docs/signals/green">Green</a>.
:::</p>]]></content>
        <author>
            <name>équipe avuru obs</name>
            <uri>https://github.com/avuruvision</uri>
        </author>
        <category label="Durabilité" term="Durabilité"/>
        <category label="Plateforme" term="Plateforme"/>
    </entry>
</feed>