Skip to content

feat(15-11b): une seule fonction lit l'environnement — vide = absent, espaces ignorés, et un test qui lit le code (refs #550) - #570

Merged
guycorbaz merged 10 commits into
mainfrom
story/15-11b-lecture-unique-des-variables
Oct 9, 2026
Merged

guycorbaz merged 10 commits into
mainfrom
story/15-11b-lecture-unique-des-variables

Conversation

@guycorbaz

@guycorbaz guycorbaz commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Story 15-11b (Epic 15), suite de la 15-11a. refs #550 : l'issue a déjà été fermée par la 15-11a.

Ce qui change

Une seule lecture de l'environnement. config::env_nonempty devient la seule fonction qui lit l'environnement :

  • une valeur vide vaut une valeur absente ;
  • les espaces de tête et de fin sont ignorés.

Tous les sites de lecture de config.rs, main.rs, logging.rs et routes/onboarding.rs passent par elle.

Un test qui lit le code. Le test lexical (L) relève les lectures d'environnement dans crates/*/src et les compare à une liste fermée. Il remplace la liste LUES de la 15-11a. Ses angles morts sont écrits : build.rs, examples/, benches/ et les lectures faites par les dépendances.

Changements visibles pour l'exploitant :

  • DATABASE_URL ou KESH_JWT_SECRET vides font refuser le démarrage.
  • RUST_LOG="" vaut info.
  • Un secret JWT dont un bord est un espace est désormais compté sans cet espace. S'il passe ainsi sous 32 octets, le démarrage est refusé.

Une exception, sous Docker. KESH_LOG_FILE_PATH vide coupe le journal fichier, alors qu'absente elle laisse le défaut du compose.

Documentation mise à jour : .env.example, le manuel d'administration (texte et PDF), et le CHANGELOG [0.13.0], sous Modifié.

Gate

Exécuté localement, sur l'état rebasé sur ec745d0c :

  • Backend (scripts/test-fast.sh) : 2912 tests sur 2912 passés, 4 ignorés.
  • Frontend : check, lint-i18n-ownership, test:unit (1091 tests) et build verts.
  • E2E complet : 245 passés et 9 échecs, tous de la liste des échecs attendus : 7 de la KF-029 et 2 de la KF-045, qui échoue toujours avant midi UTC.
  • Mutations : M1 à M17 jouées au développement, toutes conformes à la fiche (16 rouges, M6 verte comme prévu). MR1 à MR4, jouées à la revue, sont toutes rouges.

Revues

Validation de la spec : P1 et P2 complètes, puis P3 ciblée (détail au Change Log de la fiche).

Revue Passe Résultat
Revue de code P1, Sonnet ×3 1 MEDIUM et 14 LOW, tous remédiés
Revue de code P2, ciblée (Haiku) 0

La remédiation de la revue de code ne touche aucune ligne de production exécutable : elle ajoute des tests et corrige des doc-comments et de la documentation. La boucle de revue est close.

🤖 Generated with Claude Code

guycorbaz and others added 10 commits October 9, 2026 02:01
…tée sur main (fiches, prompts, registre par union)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ecompté, tests « valeur vide » remplacés) (refs #550)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…vide = absent, trim) et le test lit le code (refs #550)

- config::env_nonempty : seule lecture de l'environnement de production ;
  opt_trimmed_env absorbée ; 33 sites basculés (config.rs, main.rs par
  chemin qualifié, logging.rs, routes/onboarding.rs).
- configuration_transmise.rs : famille (L) lexicale (jetons surveillés,
  emplacement par visiteur syn, liste fermée EMPLACEMENTS_AUTORISES de 22
  entrées à nombre exact), (F) étendu aux littéraux du code, liste LUES
  retirée (ensemble lu calculé, égal à LUES au T1), (S) étendu.
- Tests « valeur vide » (constatés rouges avant la bascule), tests
  d'env_nonempty ; dev-dépendances proc-macro2 (span-locations) et quote.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xample, le manuel et le CHANGELOG ; mutations M1-M17 (refs #550)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… sprint-status (refs #550)

Gates : backend 2877/2877 (4 ignorés), E2E 247 passés / 7 échecs attendus
(KF-029), frontend non touché. 17 mutations : 16 rouges, 1 verte.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…550)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…RUST_LOG vide testé sur le binaire, r#env relevé, promesse du test lexical ramenée à l'établi, manuel et gabarit précisés (refs #550)

Aucune ligne de code de production exécutable modifiée : tests, doc-comment
de LogConfig::from_raw, .env.example, manuel admin (PDF régénéré), CHANGELOG.
Mutations MR1-MR4 rouges. Registre C-15-11b-3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ur l'état rebasé, revue close (P1 1 MEDIUM → P2 ciblée 0), statut done ; PDF admin régénéré ; choix C-15-11b-4 (refs #550)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gates complets sur l'état rebasé (backend 2912/2912, Vitest 1091/1091, E2E 245 / 7 KF-029 + 2 KF-045) (refs #550)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@guycorbaz
guycorbaz force-pushed the story/15-11b-lecture-unique-des-variables branch from 44eee42 to c9c8897 Compare October 9, 2026 01:09
@guycorbaz
guycorbaz merged commit de285ea into main Oct 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant