Repository navigation
[tooling] encoding=utf-8 sweep 2e génération : 304 sites / 143 fichiers hors liste #13140 (mesure parseur garde) #13176
Description
État vérifié de la réfutation Vibe — 2026-08-30
L'audit Vibe du 2026-08-29 classe l'affirmation « chaîne d'exécution Lean :
23 sites / 8 fichiers »REFUTE (actuel), VERIFIE (historiquement)parce que
ces sites avaient déjà été corrigés au moment de l'audit.Verdict : RÉFUTATION REJETÉE / SUPERSEDÉE. Au snapshot exact qui a
motivé l'issue (main@72beb0cca, dernier commit antérieur à son ouverture),
le parseur canonique trouve bien 23 violations dans les 8 fichiers nommés :
7 + 3 + 5 + 3 + 1 + 2 + 1 + 1. La PR #13177 a porté le correctif initial
(5f05975ac) puis a été fermée comme sous-ensemble byte-identique de #13183.
La PR #13183 a ensuite été mergée le 2026-08-28 (0b529b8ef) en absorbant
cette tranche. Le même parseur rend maintenant 0/8 surorigin/main.La mesure actuelle établit donc que le défaut a été corrigé ; elle ne réfute
pas l'état historique décrit par l'issue. L'issue reste ouverte : cette
adjudication ne tranche que l'affirmation 6 et non le résiduel global du sweep.
Contexte
Le sweep #13140 (1re génération, 98 sites / 39 fichiers mesurés par GitHub code search) est terminé : 4 tranches livrées (#13167/#13168/#13169/#13172, ~93 sites) + garde anti-régression scripts/check_subprocess_encoding.py (hook pre-commit, même PR #13169).
Le commentaire de clôture de la tranche 4 a signalé l'écart : la mesure initiale (code search GitHub, 50 fichiers candidats) sous-estimait l'étendue réelle. Cette issue scope la 2e génération.
Mesure live (2026-08-26 ~22:30Z, origin/main @ 72beb0c, parseur de la garde)
304 sites / 143 fichiers hors vendored (/.lake/, /_peters/, /reference_docs/, /foundry-lib/lib/, /.venv/, site-packages, node_modules). Même méthode que #13140 : parsing par appel, parenthèses équilibrées, prose supprimée (tokenize), f-strings scannées.
Agrégats par famille (fichiers / sites)
| Famille | Fichiers | Sites |
|---|---|---|
| scripts/notebook_tools | 52 | 127 |
| nb/SymbolicAI | 16 | 39 |
| scripts/tests | 14 | 31 |
| scripts/(root) | 7 | 29 |
| scripts/genai-stack | 9 | 12 |
| nb/GenAI | 5 | 10 |
| docker-configurations | 7 | 10 |
| scripts/ci | 5 | 9 |
| nb/QuantConnect | 7 | 8 |
| scripts/audit | 5 | 8 |
| scripts/lean | 4 | 4 |
| autres (quantconnect, secrets, Probas, Sudoku, smartcontracts, cross-series, docs, security, translation, slides) | 11 | 17 |
Point d'entrée le plus exposé : la chaîne d'exécution Lean (23 sites / 8 fichiers)
lean_runner.py (7) — le runner qui exécute les notebooks Lean de la famille ; agent_tests/lean_server.py (3) ; scripts/verify_lean.py (5) ; scripts/validate_lean_setup.py (3) ; scripts/lean4-kernel-wrapper.py (1) — le wrapper kernel lui-même ; + 4 sites dans les tests (test_verify_lean 2, test_leandojo_basic 1, test_leandojo_repos 1). Exactement la classe qui a tué la garde #12811 : ces scripts décodent des sorties Lean/WSL contenant des caractères UTF-8 (identifiants Unicode, prose française des erreurs) sur hôtes cp1252.
Correctif
Même pattern #12813 : encoding="utf-8", errors="replace". La garde pre-commit (PR #13169) bloque déjà toute RÉINTRODUCTION sur fichiers touchés — ce sweep nettoie l'existant.
Découpage suggéré (tranche = famille ou sous-famille, < 15 fichiers chacune)
- Chaîne Lean (23 sites / 8 fichiers, nb/SymbolicAI/Lean) — exige boot-test kernel après fix (wrapper touché)
- notebook_tools résiduel (~110 sites / ~43 fichiers post-merge) — à re-découper après drainage
- scripts/tests + scripts/(root) résiduels
- nb/SymbolicAI hors Lean (SmartContracts setup_env 6, Tweety 3, ext_tools 3, Argument_Analysis 2, Z3 1)
- genai-stack + docker-configurations + divers
Convention : re-mesurer avant chaque tranche (la queue de merge fait bouger les comptes), ne jamais fixer un fichier claimé par une autre lane.
See #13140 (1re génération, terminée), #12813/#12811 (défaut fondateur)
Activity
jsboige commentedon Aug 26, 2026
[DELIVERED tranche 1/5] PR #13177 — chaîne d'exécution Lean : 23 sites sur 8 fichiers (lean_runner 7, verify_lean 5, lean_server 3, validate_lean_setup 3, kernel-wrapper 1, tests 4).
"café"UTF-8 inclus.~/.lean4-kernel-wrapper.py(v6 c.126) est EN AVANCE sur le fichier repo (168 lignes : fixes AppDataLocal + lake-cwd non rapatriés). À tracker comme grain séparé — le rapatriement nécessite une réconciliation avec le stub notebook_context.Reste : tranches 2-5 (notebook_tools résiduel ~110, scripts/tests + root, SymbolicAI hors Lean, genai-stack + docker) — re-mesurer après drainage de la queue de merge (~93 sites 1re gen encore comptés dans le 304).
jsboige commentedon Aug 26, 2026
[DELIVERED tranche 4/5] PR (cette émission) — SymbolicAI hors Lean : 15 sites / 7 fichiers (setup_env 6, verify_all_tweety 3, install_jdk_portable 2, ext_tools solveurs 3, download_meal_data 1). Re-scan 15→0, py_compile 7/7, tests solveurs 27/27 (invocations réelles), Tweety --help OK.
Note périmètre :
SymbolicLearning/vendor/difflogic/setup.py(1 site détecté) EXCLU — sémantique vendor (code tiers), cohérent avec les exclusions .lake/_peters. Les exclusions de la garde pourraient l'intégrer si le sweep 2e gen formalisevendor/comme marqueur.Reste : tranches 2 (notebook_tools ~110 post-merge) et 3 (scripts/tests + root) — après drainage de la queue ; tranche 5 (genai-stack + docker-configurations + divers) prenable.
jsboige commentedon Aug 26, 2026
[DELIVERED tranche 5/5 — docker + GenAI helpers] #13184 (commit dae006b, branche
fix/13176-encoding-docker-genai)19 sites / 11 fichiers : 6 services docker-configurations (orchestrator 2, planners-fast-downward/api 1, qwen-asr-api 2, service_idle_monitor 2, service_wake 1, tts-multi/qwen 1) + 5 helpers GenAI (fishaudio_client 1, prosody_lab ×2, lean_rlvr_verifier 1, claude_cli 6). funasr exclu (déjà #13172).
Validation : py_compile 11/11, scan garde 0 restant, diff 19/19 propre. Branche indépendante (base origin/main, fichiers disjoints des tranches 1-4).
Progression #13176 : tranche 1 (#13177) ✓, tranche 4 (#13183) ✓, tranche 5 (#13184) ✓ — 57/304 sites. Résiduel : tranches 2 (notebook_tools ~110) et 3 (scripts/tests + root ~60), à re-mesurer après drainage de la queue de merge (~93 sites 1re gen encore comptés).
update branchdes filles après chaque merge parent). #13184 est indépendante, mergeable dans n'importe quel ordre.jsboige commentedon Aug 27, 2026
[DELIVERED] Tranche 2a — PR #13191 : encoding=utf-8 sur 26 sites / 15 tool scripts notebook_tools (les 9 fichiers de #13169 exclus, pas de collision). Validation : re-scan 0 restant, py_compile 15/15, 820 tests verts sur les suites des outils touches. Progression #13176 : 83/304 sites (tranches 1/4/5/2a). Residuel : tranche 2b (3 scripts : scan_d1_d3_d4_d5, scan_md_hierarchy, validate_pr_notebooks) + tranches tests (~88 sites).
jsboige commentedon Aug 27, 2026
[CLAIMED] <#13176> — myia-po-2026:CoursIA 2026-08-27T09:1xZ — TRANCHE 2b (residuel 2a, 3 scripts) : scan_d1_d3_d4_d5, scan_md_hierarchy, validate_pr_notebooks. paths: scripts/notebook_tools/scan_d1_d3_d4_d5.py, scripts/notebook_tools/scan_md_hierarchy.py, scripts/notebook_tools/validate_pr_notebooks.py. Preflight 3 sources : ledger issue (dernier comment 01:31Z = residuel non-claime), 0 PR touchant ces 3 fichiers (#13169 x9 et #13191 x15 disjoints, verifies), dashboard sans claim concurrent. Sites verifies live sur origin/main @ 62d47eb (re-mesure convention). Grain: MED/tooling -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #12960
jsboige commentedon Aug 27, 2026
[DELIVERED tranche 2b] PR #13206 — residuel 2a : 3 sites / 2 scripts (scan_md_hierarchy 1, validate_pr_notebooks 2). Base frais origin/main @ 62d47eb.
Re-mesure firsthand : scan_d1_d3_d4_d5.py (cite au ledger) est DEJA propre sur main — non touche. Le residuel reel etait 3 sites / 2 fichiers.
Validation : AST scan 0 site restant, py_compile 2/2, invocations reelles (validate_pr_notebooks origin/main exit 0 via merge-base+diff fixes, _repo_root() resolu), pytest scan_d1 4/4. Disjonction #13169/#13191 verifiee.
Progression : 86/304 sites (tranches 1/4/5/2a/2b). Residuel : tranches tests (~88 sites) apres drainage de la queue.
jsboige commentedon Aug 27, 2026
[CLAIMED] <#13176> — myia-po-2026:CoursIA 2026-08-27T09:4xZ — TRANCHE 3a (scripts/tests + scripts/(root) residuels, 32 sites / 15 fichiers TOUS disjoints des 9 PRs encoding en queue, verifies un a un) : paths: scripts/tests/test_audit_workflow_path_filters.py, scripts/tests/test_audit_workflow_paths_filters.py, scripts/tests/test_bash_e_rc_capture.py, scripts/tests/test_check_null_exec.py, scripts/tests/test_check_pr_perimeter.py, scripts/tests/test_container_startup.py, scripts/tests/test_fast_lane.py, scripts/tests/test_gitignore_playwright_auth.py, scripts/tests/test_gitleaks_allowlist.py, scripts/tests/test_lane_claim_required.py, scripts/tests/test_setup_hooks_selftest.py, scripts/tests/test_sitecustomize_safe_ssl.py, scripts/tests/test_variation_light_cap.py, scripts/tests/test_variation_tag_required.py, scripts/audit_workflow_paths_filters.py. Preflight 3 sources : ledger issue a jour (2b livre #13206), fichiers exclus = union des files[] des PRs #13167/#13168/#13169/#13172/#13177/#13183/#13184/#13191/#13206, dashboard sans claim concurrent. Mesure AST live sur origin/main @ 62d47eb (32 sites libres, 33 sites restants sur fichiers queued-claimed). Grain: MED/tooling -- lane myia-po-2026:CoursIA -- prev: MED/tooling 2b #13206 (tranche continue de la meme issue, pas de rotation de genre).
fix(tooling,#13176): encoding=utf-8 on subprocess text=True — tranche…
jsboige commentedon Aug 27, 2026
[DELIVERED tranche 3a] PR #13207 — scripts/tests + racine residuel : 32 sites / 15 fichiers (14 suites + audit_workflow_paths_filters.py), TOUS disjoints des 9 PRs en queue (verifie via files[] de chacune). Validation : py_compile 15/15, AST 0 restant, pytest 380 passed / 5 skipped (suites executant git/gh/bash/gitleaks a travers les sites fixes), audit --json exit 0. EOL preserves (gitleaks i/crlf via edits byte-preserving).
Note hygiene : commit empile par erreur 2 min sur la branche #13206 puis scinde aussitot (force-with-lease propre sur ma branche non-reviewee) — #13206 = 2b seul, #13207 = 3a seul, fichiers disjoints, merge independant.
Progression : 118/304 sites (T1 #13177 23 + T4 #13183 15 + T5 #13184 19 + 2a #13191 26 + 2b #13206 3 + 3a #13207 32). Residuel : 33 sites sur fichiers queued-claimed (pr_gate, review_coverage, setup_hooks, scan_student_forks, check_hooks_parity, check_quantconnect_notebook_freshness, execute_sudoku_python, regen_quarto_render, audit_workflow_paths_filters-racine deja livre) — apres drainage de la queue.
fix(tooling,#13176): encoding=utf-8 on subprocess text=True — tranche…
fix(tooling,#13176): encoding=utf-8 — tranche 3a scripts/tests + root…
fix(tooling,#13176): encoding=utf-8 on subprocess text=True — tranche…
fix(tooling,#13176): encoding=utf-8 on subprocess text=True — tranche…
fix(tooling,#13176): encoding=utf-8 sur 26 sites subprocess des 15 to…
jsboige commentedon Aug 30, 2026
[VERIFIED-DELIVERED] — sweep 2e génération complet sur main (mesure 2026-08-30, lane myia-po-2024:CoursIA)
Mesure firsthand avec la même méthode que l'issue (
scan_source()du gardecheck_subprocess_encoding.py) surmaincourant, hors vendored (/.lake/,/_peters/,/reference_docs/,/foundry-lib/lib/,/.venv/,/site-packages/,/node_modules/) :subprocess.run(..., text=True)sansencoding=, ignore la forme corrigéeencoding="utf-8", errors="replace", et ignore la prose (commentaires).Les tranches qui ont porté le sweep à terme (et que la mesure démontre avoir convergé sur main) : #13183 (absorption tranche 1,
0b529b8ef), #13184 (tranche 5, docker + GenAI, 19 sites), #13191 (tranche 2a, 26 sites), #13206 (tranche 2b, 3 sites), #13207 (tranche 3a, 32 sites) — puis les tranches restantes. Le garde CI (check_subprocess_encoding.py, PR #13169) bloque toute réintroduction et passe aujourd'hui (0) : le ratchet est tenu.La mesure actuelle est de 0 — l'acceptation (« encoding=utf-8, errors=replace » partout, garde vert) est satisfaite. Fermeture comme livrée. Voir #13140 (1re génération, fermée de même).