Dire dans la configuration OÙ servir, et rendre à la ligne de commande sa priorité - #49
Merged
Merged
Conversation
…e sa priorité Répéter --serve-host à chaque lancement, c'est finir par ne plus le répéter : l'interface qu'une machine expose est une propriété de cette machine, donc SERVE_HOST se lit dans le fichier de configuration. Ce qui n'y est pas, et ne doit pas y être, c'est la décision de servir. La clé dit où écouter quand --serve est donné, et ne met jamais rien en écoute d'elle-même : un fichier de configuration voyage — dans un dépôt, dans un ticket, sur une autre machine — et un fichier capable d'ouvrir un port en voyageant serait illisible en confiance. Un test tient la ligne : un seul « serve = true » dans le switch des options. Au-delà de la boucle locale, le rapport devient lisible et annotable par qui atteint le port, avec les valeurs capturées d'une vraie application dedans. Le défaut reste donc 127.0.0.1, la clé est livrée commentée avec son prix à côté, et la documentation porte le déploiement qui le fait proprement : le proxy termine le TLS et l'outil ne répond qu'à lui. En l'ajoutant, un défaut est apparu. merge() était une liste écrite à la main, et elle couvrait neuf réglages sur vingt-deux. Tout le reste donné sur la ligne était abandonné sans un mot dès qu'un --config l'accompagnait : --level coverage mesurait tout, et --jacoco-reports data écrivait ses cent quatre-vingts fichiers. Rien n'échouait — l'exécution faisait simplement autre chose que ce qu'on lui avait demandé, et le seul moyen de s'en apercevoir était de compter les fichiers après coup. Le fichier trouvé par son nom, sans --config, était pire encore : il remplaçait tout. La règle est maintenant appliquée plutôt qu'énumérée — un réglage qui diffère d'une Config neuve est un réglage posé par la ligne. Une liste doit être maintenue à chaque nouvelle option ; une comparaison non. Le test parcourt les champs par réflexion et casse la construction sur celui qui ne passerait pas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J956wjynbd7fkZx4HpjHzP
Beennnn
marked this pull request as ready for review
September 3, 2026 22:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
SERVE_HOST: l'interface est un réglage, la mise en écoute reste un gesteL'interface qu'une machine expose est une propriété de cette machine — elle se lit donc dans le fichier de configuration. La décision de servir, non :
--servereste la seule chose qui met l'outil en écoute. Un fichier de configuration voyage (dans un dépôt, un ticket, sur une autre machine) ; un fichier capable d'ouvrir un port en voyageant serait illisible en confiance. Un test tient la ligne : exactement unserve = truedans le switch des options.Le défaut reste
127.0.0.1. La clé est livrée commentée, avec son prix à côté : au-delà de la boucle locale, le rapport — et les valeurs de paramètres capturées d'une vraie application qu'il contient — devient lisible et annotable par qui atteint le port. L'outil avertit déjà au démarrage quand il écoute plus large sans secret.Une recette de déploiement, dans la documentation des annotations
Unité
systemd, secret parXRAY_SERVE_TOKENdans unEnvironmentFileplutôt que sur la ligne (oùpsle montre), et reverse-proxy TLS devant : l'unité proposée écoute sur127.0.0.1, le proxy est ce qui écoute dehors, et le HTTP en clair ne quitte jamais la machine. Avec les deux points que l'on saute d'ordinaire : le répertoire--outest le périmètre servi, et--serve-host 0.0.0.0sans proxy est une décision, pas un raccourci.Le défaut trouvé en l'ajoutant
merge()était une liste écrite à la main : neuf réglages sur vingt-deux. Tout le reste donné sur la ligne était abandonné sans un mot dès qu'un--configl'accompagnait.--config x.conf --level coverage --jacoco-reports dataRien n'échouait : l'exécution faisait autre chose que ce qu'on lui avait demandé, et le seul moyen de s'en apercevoir était de compter les fichiers après coup. Le fichier trouvé par son nom, sans
--config, était pire : il remplaçait la configuration entière, les neuf réglages compris.La règle est maintenant appliquée plutôt qu'énumérée — un réglage qui diffère d'une
Configneuve est un réglage posé par la ligne. Une liste doit être maintenue à chaque nouvelle option ; une comparaison non.SettingsPrecedenceTestparcourt les champs par réflexion et casse la construction sur celui qui ne passerait pas — c'est la garde qu'une liste plus longue n'aurait jamais été.Vérifications
SERVE_HOSTposé sans--servetermine au lieu d'écouter.🤖 Generated with Claude Code
https://claude.ai/code/session_01J956wjynbd7fkZx4HpjHzP
Generated by Claude Code