You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci(secrets): garde des valeurs réelles dans les fichiers .env.example #20919
gitleaks reconnaît les formats de clés connus (sk-..., ghp_..., AIza...). Il ne voit pas une phrase secrète faite d'un mot ordinaire écrite en valeur dans un .env.example. Ces fichiers sont publics par construction : une valeur réelle y est publiée dès le commit.
Mesure du 15/10 : 32 fichiers *.env.example suivis. Les valeurs des clés de type secret (*PASS*, *SECRET*, *TOKEN*, *KEY*, *PWD*) y sont vides ou de forme marqueur (change-me-..., sk-local, auto_generated_..., sk-proj-1234567890).
Organe proposé
Un check bloquant sur les lignes ajoutées des fichiers *.env.example / *.env.sample / *.env.template :
une clé de type secret doit porter une valeur vide ou une valeur marqueur, d'après une liste fermée de formes (change-me, your-, <...>, sk-local, xxx, etc.) ;
toute autre valeur rougit, avec un message qui demande soit un marqueur, soit une justification d'exemption en ligne.
Contrôles :
positif : une phrase secrète d'un mot ordinaire ajoutée en valeur doit rougir ;
négatif : les 32 fichiers actuels, avec leurs marqueurs, doivent passer.
[CLAIMED] lane myia-po-2027:CoursIA-2 — fix garde .env.example (alias guard du tag 'ci-organ' déclaré dans le body). Cycle court CPU-only, 0 collision L898.
[INFO] candidate-delivered — lane myia-po-2027:CoursIA-2
L'organe est sur main : scripts/ci/check_env_example_secrets.py (11,6 Ko) + 3 references dans .github/workflows/always-on-guards.yml.
Volet : ma PR #20993 (claim du 10/15) a ete ferme le 2026-10-19 comme doublon de #21039 (meme lane, meme base, meme organe) ; #21039 est MERGED avec la version durcie (exemption inline + borne stricte files_scanned). Les controles de l'issue (positif : phrase a mot ordinaire rougit ; negatif : 32 fichiers marqueurs passent) etaient couverts par ce cycle. Restant : cloture par le coordinateur.
Grain: MED/guard -- lane myia-po-2024:CoursIA -- prev: MED/readme #22229
[CLAIMED] lane myia-po-2024:CoursIA -- organe bloquant : garde des valeurs reelles dans les fichiers .env.example / .env.sample / .env.template
Corpus re-mesure ce cycle : git ls-files en rend 33 fichiers suivis, alors que le body en compte 32 (mesure du 2026-10-15). L organe sera mesure contre les 33, et l ecart sera dit.
Perimetre : scripts/ci/check_env_example_secrets.py, ses tests, et le cablage CI. Aucune valeur de secret ne sera ecrite ni citee : la liste fermee des formes de marqueur est derivee empiriquement des fichiers du depot, et les valeurs lues ne sortent pas du runner.
Commentaire c.6380704364, pose il y a moins d'une heure. check_lane_claim.py rendait le claim libre (le precedent etait perime), et je n'ai pas fait le preflight gh pr list --state all --search 20919 avant de claimer : c'est l'angle mort L1356, troisieme occurrence de mon cycle. Aucun fichier cree, aucun commit, aucune branche : rien a retracter d'autre que ce claim.
Les cinq criteres, verifies a la source
#
Critere
Etat
Preuve
1
Check sur les fichiers .env.example / .env.sample / .env.template, cle de type secret
atteint
scripts/ci/check_env_example_secrets.py, --root . ; portee des trois motifs de nom
2
Valeur vide ou marqueur d'une liste fermee, sinon rouge
atteint
DEFECT avec message qui demande un marqueur, une exemption inline, ou une ligne # OK: juste au-dessus
3
Controle positif : une phrase secrete d'un mot ordinaire rougit
atteint
mesure ci-dessous, rc=1
4
Controle negatif : le corpus courant passe
atteint
OK: 33 files scanned, no real secret values in env examples., rc=0
5
Bloquant
atteint
.github/workflows/always-on-guards.yml etape env_example_secrets l.1530, agregee l.1631 par l'etape « Agregat des verdicts bloquants »
Controle positif mesure (2026-10-24)
Fixture hors depot, quatre lignes : une phrase secrete d'un mot ordinaire, un marqueur de scheme, une valeur vide, un marqueur entre chevrons.
DEFECT: 1 real secret value(s) in env examples:
<fixture>:1 TEXT_CONFIG_PASSPHRASE='...'
Either replace the value with a marker (your_X_here, <your_X>, xxx, ...),
or exempt with a trailing comment # OK: <reason>,
or with a marker line just above the value: # OK: <reason>.
rc=1
Les trois autres lignes passent. L'organe discrimine donc la classe que gitleaks ne voit pas, et ne rougit pas sur les marqueurs.
Controle negatif mesure
OK: 33 files scanned, no real secret values in env examples.
EXEMPT MyIA.AI.Notebooks/IIT/ICT-Series/.env.example:9 ICT_S6B_PASSPHRASE -- passphrase publiee par design (decision user #7742)
rc=0
Suite de tests de l'organe : 29 passed in 1.14s.
Un ecart de decompte, date
Le body de l'issue mesure 32 fichiers au 2026-10-15 ; l'organe en scanne 33 aujourd'hui. Le 33e est MyIA.AI.Notebooks/IIT/ICT-Series/.env.example, ajoute le 2026-10-17, deux jours apres la mesure : c'est precisement le fichier qui a eu besoin de l'exemption inline (passphrase publiee par design, decision user #7742), et qui a motive l'amendement #21507. Le commentaire de l'etape CI dit encore « 32 fichiers » (l.1533 et suivantes) : figure datee, sans effet sur le comportement.
La cloture revient au coordinateur ou a l'adjoint : un worker ne ferme pas une issue.
Activity
jsboige commentedon Oct 15, 2026
[CLAIMED] lane myia-po-2027:CoursIA-2 — fix garde .env.example (alias guard du tag 'ci-organ' déclaré dans le body). Cycle court CPU-only, 0 collision L898.
ci(guards,#20919,#20993): agréger env_example_secrets dans l'agrégati…
ci(secrets,#20919): garde des valeurs reelles dans les .env.example
ci(guards,#20919,#20993): agréger env_example_secrets dans l'agrégati…
Merge origin/main: prend le revert #21068 (16 organes, pool self-host…
fix(ci,#20919): exemption `# OK:` avec raison obligatoire + marqueur …
ci(secrets,#21013): implementer exemption # OK: et borne stricte file…
jsboige commentedon Oct 20, 2026
[INFO] candidate-delivered — lane myia-po-2027:CoursIA-2
L'organe est sur main :
scripts/ci/check_env_example_secrets.py(11,6 Ko) + 3 references dans.github/workflows/always-on-guards.yml.Volet : ma PR #20993 (claim du 10/15) a ete ferme le 2026-10-19 comme doublon de #21039 (meme lane, meme base, meme organe) ; #21039 est MERGED avec la version durcie (exemption inline + borne stricte files_scanned). Les controles de l'issue (positif : phrase a mot ordinaire rougit ; negatif : 32 fichiers marqueurs passent) etaient couverts par ce cycle. Restant : cloture par le coordinateur.
jsboige commentedon Oct 24, 2026
Grain: MED/guard -- lane myia-po-2024:CoursIA -- prev: MED/readme #22229
[CLAIMED] lane myia-po-2024:CoursIA -- organe bloquant : garde des valeurs reelles dans les fichiers .env.example / .env.sample / .env.template
Corpus re-mesure ce cycle :
git ls-filesen rend 33 fichiers suivis, alors que le body en compte 32 (mesure du 2026-10-15). L organe sera mesure contre les 33, et l ecart sera dit.Perimetre :
scripts/ci/check_env_example_secrets.py, ses tests, et le cablage CI. Aucune valeur de secret ne sera ecrite ni citee : la liste fermee des formes de marqueur est derivee empiriquement des fichiers du depot, et les valeurs lues ne sortent pas du runner.jsboige commentedon Oct 24, 2026
[INFO] candidate-delivered — lane myia-po-2024:CoursIA
Le grain est deja livre et arme. Re-mesure ce cycle contre
origin/main67e14a40f0e, pas repris des bodies de PR.Livraison
ci(secrets,#21013): implementer exemption # OK: et borne stricte files_scanned, mergee le 2026-10-20T00:05:45Z.ci(secrets,#21492): exemption # OK: -- raison obligatoire, marqueur de ligne, exemptions listees, mergee le 2026-10-21T12:58:03Z.Mon
[CLAIMED]de ce cycle est retireCommentaire c.6380704364, pose il y a moins d'une heure.
check_lane_claim.pyrendait le claim libre (le precedent etait perime), et je n'ai pas fait le preflightgh pr list --state all --search 20919avant de claimer : c'est l'angle mort L1356, troisieme occurrence de mon cycle. Aucun fichier cree, aucun commit, aucune branche : rien a retracter d'autre que ce claim.Les cinq criteres, verifies a la source
.env.example/.env.sample/.env.template, cle de type secretscripts/ci/check_env_example_secrets.py,--root .; portee des trois motifs de nomDEFECTavec message qui demande un marqueur, une exemption inline, ou une ligne# OK:juste au-dessusrc=1OK: 33 files scanned, no real secret values in env examples.,rc=0.github/workflows/always-on-guards.ymletapeenv_example_secretsl.1530, agregee l.1631 par l'etape « Agregat des verdicts bloquants »Controle positif mesure (2026-10-24)
Fixture hors depot, quatre lignes : une phrase secrete d'un mot ordinaire, un marqueur de scheme, une valeur vide, un marqueur entre chevrons.
Les trois autres lignes passent. L'organe discrimine donc la classe que gitleaks ne voit pas, et ne rougit pas sur les marqueurs.
Controle negatif mesure
Suite de tests de l'organe :
29 passed in 1.14s.Un ecart de decompte, date
Le body de l'issue mesure 32 fichiers au 2026-10-15 ; l'organe en scanne 33 aujourd'hui. Le 33e est
MyIA.AI.Notebooks/IIT/ICT-Series/.env.example, ajoute le 2026-10-17, deux jours apres la mesure : c'est precisement le fichier qui a eu besoin de l'exemption inline (passphrase publiee par design, decision user #7742), et qui a motive l'amendement #21507. Le commentaire de l'etape CI dit encore « 32 fichiers » (l.1533 et suivantes) : figure datee, sans effet sur le comportement.La cloture revient au coordinateur ou a l'adjoint : un worker ne ferme pas une issue.