feat(episode): TRAZA_lote-b-cerrado-la-clase-entera-del-bug_S20260725.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: ✅ LOTE B CERRADO — la clase entera del bug cp1252
This commit is contained in:
parent
d14e96b759
commit
6ac27df169
1 changed files with 37 additions and 0 deletions
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
episode_id: "af2566f9-adef-481f-90e7-02c75afbc3ab"
|
||||
puente_flat: "TRAZA_lote-b-cerrado-la-clase-entera-del-bug_S20260725.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||
session_code: "S20260725.SHERPA_FABLE_AUTOMEJORA"
|
||||
acto_dialogico: "informar"
|
||||
actor_flujo: "multi_actor"
|
||||
criticidad_aegis: "low"
|
||||
skill_dominante: "NONE"
|
||||
fase_proyecto: "operations"
|
||||
tipo_semantico: "troubleshooting"
|
||||
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: ✅ LOTE B CERRADO — la clase entera del bug cp1252 quedó blin"
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-07-26T02:42:47.481704+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
# ✅ LOTE B CERRADO — la clase entera del bug cp1252 quedó blindada y con guardián permanente
|
||||
|
||||
**Confirmación rigurosa:** el commit `61bd58d3` contiene exactamente mis 23 archivos — los artefactos del ciclo3 de la otra instancia **NO** entraron (verificado con grep sobre el commit; las advertencias LF/CRLF eran solo git refrescando su índice sobre archivos ajenos que no toqué).
|
||||
|
||||
## La historia corta de lo que acaba de pasar
|
||||
|
||||
Tu GO era "5 libs hermanas". Al barrer con AST (el árbol real del código, no texto), la clase resultó ser **37 sitios en 20 archivos** — mi grep inicial subcontaba porque un archivo con `encoding=` en UNA llamada escondía las demás. De esos 37: **35 eran subprocess reales** (los blindé todos) y **2 eran `tempfile.mkstemp`**, donde `text=True` significa otra cosa y "arreglarlos" habría INTRODUCIDO un bug — el clasificador AST los excluyó solo. Esa exclusión es la diferencia entre un fixer mecánico y uno inteligente.
|
||||
|
||||
| Evidencia final del lote | Resultado |
|
||||
|---|---|
|
||||
| Fixer (AST alias-aware, backup por archivo) | **35/35 fixed · 0 anomalías · ast 19/19 · re-scan 0 offenders · EXIT 0** |
|
||||
| Suite con tripwire de clase nuevo | **5 passed** (el tripwire vigilará PARA SIEMPRE que nadie reintroduzca la clase) |
|
||||
| Smoke imports (postgres_writer, memory_sync, concurrency_check) | OK |
|
||||
| Commit `61bd58d3` | 23 archivos · **push OK forgejo + origin + sriyantra** |
|
||||
| Informe + tablón | actualizados; presencia `detour_cerrado`; flags eliminados |
|
||||
|
||||
Entre lo blindado hay piezas que leen contenido con español/emojis a diario: reality_check (×5), pipeline_health (×4), postgres_writer y puente_health_check (leen episodios de PostgreSQL), statefact_guard, correo_protocol… Cada una era una mina del mismo tipo que tumbó el LOOP_READ.
|
||||
|
||||
## La decisión de cierre (prólogo compacto)
|
||||
Loading…
Reference in a new issue