Skip to content

[tooling] encoding=utf-8 sweep 2e génération : 304 sites / 143 fichiers hors liste #13140 (mesure parseur garde) #13176

Closed

Description

@jsboige

É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 sur origin/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.

⚠️ Mesure PROVISOIRE : les PRs des tranches 1re gen sont encore en queue de merge — quand #13167/#13168/#13169/#13172 mergeront, ~93 sites de ce compte disparaîtront (ils sont comptés ici car vivant sur main). Re-mesurer après drainage de la queue pour le compte définitif (~211 attendu).

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)

  1. Chaîne Lean (23 sites / 8 fichiers, nb/SymbolicAI/Lean) — exige boot-test kernel après fix (wrapper touché)
  2. notebook_tools résiduel (~110 sites / ~43 fichiers post-merge) — à re-découper après drainage
  3. scripts/tests + scripts/(root) résiduels
  4. nb/SymbolicAI hors Lean (SmartContracts setup_env 6, Tweety 3, ext_tools 3, Argument_Analysis 2, Z3 1)
  5. 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

  1. jsboige commented on Aug 26, 2026

    @jsboige
    OwnerAuthor

    [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).

    • Re-scan firsthand 23→0, py_compile 8/8, test_verify_lean 59/59 (invocations réelles à travers les sites fixés), leandojo 3 passed + 2 erreurs fixture préexistantes (stash-verified).
    • Boot-test kernel (règle F) : wrapper déployé WSL patché (backup) + notebook 3 cellules via nbclient kernel lean4-wsl → 3/3 exec, 0 erreur, payload "café" UTF-8 inclus.
    • Drift constaté hors scope : le wrapper déployé ~/.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).

  2. jsboige commented on Aug 26, 2026

    @jsboige
    OwnerAuthor

    [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 formalise vendor/ 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.

  3. jsboige commented on Aug 26, 2026

    @jsboige
    OwnerAuthor

    [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).

    ⚠️ Note merge-order pour ai-01 : #13177, #13181, #13183 sont des branches empilées sur le commit de #13172 (7f671e2, tranche 4 #13140) — leurs diffs GitHub montrent les fichiers cumulés des ancêtres. Merger dans l'ordre #13172 → #13177 → #13181 → #13183 (rebase/update branch des filles après chaque merge parent). #13184 est indépendante, mergeable dans n'importe quel ordre.

  4. jsboige commented on Aug 27, 2026

    @jsboige
    OwnerAuthor

    [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).

  5. jsboige commented on Aug 27, 2026

    @jsboige
    OwnerAuthor

    [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

  6. jsboige commented on Aug 27, 2026

    @jsboige
    OwnerAuthor

    [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.

  7. jsboige commented on Aug 27, 2026

    @jsboige
    OwnerAuthor

    [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).

  8. added a commit that references this issue on Aug 27, 2026
  9. jsboige commented on Aug 27, 2026

    @jsboige
    OwnerAuthor

    [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.

  10. added 5 commits that reference this issue on Aug 27, 2026
  11. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Aug 29, 2026
  12. jsboige commented on Aug 30, 2026

    @jsboige
    OwnerAuthor

    [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 garde check_subprocess_encoding.py) sur main courant, hors vendored (/.lake/, /_peters/, /reference_docs/, /foundry-lib/lib/, /.venv/, /site-packages/, /node_modules/) :

    • 0 site / 0 fichier en violation sur 6817 fichiers .py non-vendored scannés.
    • Détecteur validé avant mesure : il attrape subprocess.run(..., text=True) sans encoding=, ignore la forme corrigée encoding="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).

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions