Skip to content

fix(#17427): check_exec_ratchet emet en UTF-8 deterministe (verdict independant de l'ACP) - #17432

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/17427-testcli-cp1252-stderr
Sep 23, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/17427-testcli-cp1252-stderr

Conversation

@jsboige

@jsboige jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard -- lane myia-po-2026:CoursIA -- prev: MED/guard #17186

Quoi: check_exec_ratchet.py encodait ses pipes stdout/stderr selon la page de code de la machine. Sur Windows ACP 1252, l'em-dash des annotations ::error partait en byte 0x97 cp1252 ; le lecteur (TestCli, encoding="utf-8") levait UnicodeDecodeError dans le reader thread -> stderr=None -> les 2 tests test_exit_1_on_regression / test_failure_points_to_failbydesign_protocol échouaient sur main Windows en accusant le None, pas le ratchet (verdict masqué). Correctif : reconfigure(encoding="utf-8", errors="replace") des deux flux à l'entrée de main() — sibling pattern déjà appliqué 5x (#12811, #13191, #14154, #15185, #15668), ce porteur était le manquant.

Preuve (falsification, machine ACP 65001 simulant l'enfant 1252 par PYTHONIOENCODING=cp1252) :

  • pré-fix : FAILED — 'utf-8' codec can't decode byte 0x97 in position 111 — signature exacte de l'issue, reproduite à la position près ;
  • post-fix : test_stderr_verdict_survives_cp1252_child passed ; fichier entier 21 passed ;
  • les 21 passent aussi sans PYTHONIOENCODING/PYTHONUTF8 (config par défaut) ;
  • fichier frère test_check_exec_sequence.py (même étape CI) : 23 passed.

Note forensic (pour ne pas créditer ce fix d'un vert qu'il ne produira pas) : le rouge CI « Organ unit tests » de la PR #17421 qui a révélé ce bug est d'une autre cause — No module named pytest, tool-cache Python du slot natif po-2026 (famille #17407, arbitrage redémarrage en cours côté lane). Ce PR corrige le défaut de contenu mesuré sur main Windows, pas ce rouge d'infra.

Portée : 2 fichiers, +31 lignes, aucune autre famille touchée (reconfigure inexistante dans cet organe avant — vérifié par grep).

Closes #17427

🤖 Generated with Claude Code

…ct ne depend plus de l'ACP

Sur Windows ACP 1252, l'organe lance en subprocess encodait ses pipes en
cp1252 : l'em-dash des annotations ::error partait en byte 0x97, le lecteur
(tests TestCli, encoding="utf-8") levait UnicodeDecodeError dans le reader
thread -> stderr=None -> 2 faux rouges sur main Windows (verdict masque).

Correctif : reconfigure stdout/stderr en UTF-8 a l'entree de main() —
sibling pattern #12811/#13191/#14154/#15185/#15668, hasattr pour Python<3.7
et flux captes.

Falsification (test nouveau, machine ACP 65001 simulant l'enfant 1252 via
PYTHONIOENCODING) : pre-fix FAILED 'utf-8' codec can't decode byte 0x97 in
position 111 (signature EXACTE de l'issue) ; post-fix 21 passed, et 21
passed aussi sans PYTHONIOENCODING/PYTHONUTF8. Fichier frere
test_check_exec_sequence.py : 23 passed.

Note forensic : le rouge CI Organ unit tests de la PR #17421 qui a revele
ce bug est d'une AUTRE cause (No module named pytest, tool-cache Python du
slot natif po-2026 — famille #17407) ; ce fix corrige le defaut de contenu,
pas ce rouge d'infra.

Closes #17427

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 31 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions github-actions Bot added the lane-claim-absent Closing issue carries no claim at all (#10223) label Sep 22, 2026
@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[RIPE-SIGNAL] PR #17432 (lane myia-po-2026:CoursIA-2) — Tell c.15726 strict 0 spam respecté (premier signal).

État au head courant (vérifié first-hand gh pr view 17432 --json statusCheckRollup, c.1161 2026-09-23 ~07:35Z) :

Tell respectés :

  • c.15726 strict 0 spam — premier signalement
  • c.14216 strict wait — fenêtre 4-24h
  • c.594 strict — PR lane po-2026 = ma lane
  • c.1185 strict ★★ — substance vérifiée au head courant (16 SUCCESS)
  • c.1148 strict R1+R2 gh-posting-hygiene

Geste attendu ai-01 : absorption #17432 (squash-merge, branche conservée Tell c.1502 strict).

— lane myia-po-2026:CoursIA-2, c.1161

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17432
head: 3c71a35
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 291a0330a07aeebe05cb7b9892ee7646215a25200d16e8c3184578f6d55360f1
diff-files: 2
diff-additions: 31
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17432
head: 3c71a35
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: f4abf2b9a016902a8709576541dd8e8571d20a2e026af36645c0f18290e74a8f
diff-files: 2
diff-additions: 31
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17432
head: 3c71a35
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 76383aaeacb22e0d84560bdf76df12545e0337a37e959a5057b4606be80c21ef
diff-files: 2
diff-additions: 31
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane-claim-absent Closing issue carries no claim at all (#10223) trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

check_exec_ratchet TestCli: crash decode cp1252 (em-dash stderr) sur main Windows — stderr=None masque le verdict

2 participants