Skip to content

Promover staging → master: Sprint B (validación ETL + anti-patterns)#70

Merged
pablotis merged 4 commits intomasterfrom
staging
May 9, 2026
Merged

Promover staging → master: Sprint B (validación ETL + anti-patterns)#70
pablotis merged 4 commits intomasterfrom
staging

Conversation

@pablotis
Copy link
Copy Markdown
Collaborator

@pablotis pablotis commented May 9, 2026

Summary

Promoción de Sprint B a producción. Sin cambios visibles para el usuario; hardening interno.

Cambios:

GA4 ID: ya presente en ambas branches, no se requiere fix esta vez.

Test plan

🤖 Generated with Claude Code

pablotis and others added 4 commits May 8, 2026 13:32
Sprint B · Calidad técnica. Nuevo script ETL/12-validate_paneles_runtime.R
con 29 validaciones testthat que se ejecutan sobre los parquets de
runtime tras regenerarlos. Si alguna falla, el script aborta con exit
status != 0 y el workflow update_eph_data.yml no crea el PR de datos
nuevos: prod queda intacta hasta que se diagnostique.

Cubre 4 dimensiones:

1. Schema y tipos. Las 31 columnas esperadas existen en ambos parquets
   (intertrim + anual), con los tipos correctos (string/double/int32/bool).
   Detecta drift de eph::organize_panels o de la versión del paquete arrow.

2. Cobertura temporal. Mínimo 75 dúos trim / 65 anual, ambos arrancando
   en 2003-T3 (primer dúo histórico tras el cambio de operativo INDEC).
   Si un rebuild deja menos dúos, alerta.

3. Tamaño y atrición. Ningún dúo con n < 5000 (threshold conservador,
   los dúos chicos típicamente tienen ~10k filas). Ratio anual/trim
   promedio ∈ [40%, 120%] basado en el rango histórico observado al
   2026-05-08 (ratio real: 44.5% a 102.9%, mean 88.7%).

4. Cross-validation. Las tasas (Persistencia/Salida/Entrada) calculadas
   on-demand desde el parquet coinciden con las pre-calculadas en
   tasas_*_historico.csv hasta 0.5 pp. Detecta desincronización entre
   los dos pipelines (CSV histórico via 03-update_data, parquet via
   09/09b).

Integración al workflow:
- testthat agregado al install_packages step de update_eph_data.yml.
- Step "Validar parquets de runtime" insertado entre la regeneración
  de 09b y la creación del PR. Solo corre si has_new=='true'.

Implementación notable:
- MultiReporter (ProgressReporter + FailReporter) da feedback visual
  por test pero hace raise al final si alguno falló (FailReporter es
  silencioso por sí solo).
- Constantes de threshold están al inicio del script con comentario
  sobre cuándo recalibrarlas.
- Validado happy path (29 PASS) y degradado (1 FAIL → script exit != 0).

Diferido a iteración futura (issue queda abierto):
- Distribución de variables clave contra corte transversal de INDEC.
- Regresión bit-a-bit (re-correr el ETL produce output idéntico).
  Necesitan datos de referencia que hoy no tenemos versionados.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
feat: validación de parquets de runtime como gate (#45)
Sprint B · Calidad técnica. Pasada mecánica para alinear el código a
las convenciones modernas tidyverse documentadas en
.claude/rules/r-conventions.md. Refactor sin cambio funcional: los
185 tests automatizados pasan igual antes y después.

Cambios:

- pmap_dfr / map_dfr → pmap()/map() |> list_rbind() (deprecados desde
  purrr 1.0). 10 ocurrencias:
    * ETL/04b-add_pp05_vars.R (descargas pp05)
    * ETL/05-build_panel_cat_ocup.R
    * ETL/06-build_panel_formalidad.R
    * ETL/07-build_panel_formalidad_ampliada.R
    * ETL/99-functions.R (regenerar_panel_historico, build_tasas_historico)

- group_by(X) |> mutate(...) |> ungroup() → mutate(..., .by = X)
  (idiom moderno desde dplyr 1.1, evita state implícito de
  agrupación). 2 ocurrencias en preparo_base() · ETL/99-functions.R.

- %>% magrittr → |> pipe nativo (R 4.1+). 3 líneas en
  df_to_annotations_labels() · ETL/99-functions.R.

Diferidos a otro sprint (no abarca este PR):
- CSS muerto, perf con profvis, accesibilidad WCAG, dependencias
  no usadas, refactor mod_analisis() genérico (#12).

Verificado: grep en R/ y ETL/ devuelve cero ocurrencias de los
patterns deprecated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
refactor: barrer anti-patterns dplyr/purrr (#39, scope acotado)
@pablotis pablotis merged commit 5c353b6 into master May 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant