Files
takana/scripts/pgo-corpus
SergioandClaude Opus 5 b221f06c01 arneses: los CINCO sandboxes de Gecko apagados, no un subconjunto a ojo
Cada arnés headless tenía su propio subconjunto de MOZ_DISABLE_*_SANDBOX, elegido en su
momento sin medir: banco 1 de 5, perfilar 4, codecs 3, ruteo 3, nativo 2, inicio 2. Con
cualquier subconjunto incompleto el sandbox de Firefox sigue intentando montar su
user-namespace dentro del de bwrap, falla con 'uid_map: EPERM' y deja un ayudante
'Sandbox Forked' muerto de SIGSEGV por cada intento — en el 100% de las corridas, después
de escribir el PNG y por eso invisible.

Medido: 2 cadáveres por corrida con sólo CONTENT apagado, 0 con los cinco. Verificado sobre
el arnés ya editado: segv=0 EPERM=0 screenshot=sí.

Acá no se pierde seguridad: bwrap ya es la jaula, el sandbox de Gecko es redundante y lo
único que hace dentro es fallar.

⚠ Cambia las condiciones de medición del banco de PGO: las cifras de docs/26 se tomaron con
el arnés viejo. Los cocientes del PGO comparan dos firefox bajo el mismo arnés y deberían
aguantar; la línea base absoluta de arranque no tiene por qué. Anotado en la cabecera.

No se tocan scripts/wlr/dunst-headless.sh (otro agente trabajando en él) ni los cazadores,
que conservan el entorno viejo a propósito para poder reproducir la condición original.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
2026-09-08 16:11:28 +00:00
..

Corpus de maquetación para el PGO de Gecko

Páginas de entrenamiento nuestras que complementan el corpus de Mozilla (build/pgo).

Por qué existe

Medida la ganancia del PGO el 2026-09-07 (SDD 26 §3.a): 9,4 % en una página de DOM/maquetación y 1,0 % en 3d-raytrace de SunSpider. El corpus de Mozilla está dominado en número de páginas por SunSpider, que es aritmética pura en bucles calientes — y ese bucle no lo ejecuta el C++ de SpiderMonkey sino el código máquina que el JIT emite en runtime, que el PGO no toca. O sea que el corpus entrenaba mucho justo donde el PGO menos rinde.

Estas páginas ejercitan el camino que sí es C++ de punta a punta: resolución de estilo, layout, pintado y composición.

Reglas que cumplen todas, y por qué

  • Deterministas. Ni Math.random ni Date ni red. Dos corridas hacen LO MISMO, así que dos perfiles difieren por el timing de los contadores y no por haber visitado caminos distintos.
  • Autocontenidas. CSS y JS en línea, sin recursos externos. El perfilado corre sin red.
  • Nuestras. Escritas para esto: nada de páginas ajenas capturadas, que traerían licencia y fragilidad.
  • Acotadas. Cada una termina en segundos. El perfilado arranca un navegador POR PÁGINA.

Qué ejercita cada una

página subsistema
flex.html flexbox anidado, wrap, alineaciones, min/max-content
rejilla.html CSS Grid: muchas pistas, áreas nombradas, auto-fit, subgrid
tablas.html tablas grandes, colspan/rowspan, table-layout fijo y automático
texto.html texto largo, columnas, text-shadow, tamaños y pesos variados, reflujo
selectores.html resolución de estilo: DOM profundo contra cientos de reglas
pintado.html degradados, border-radius, box-shadow, opacity, mix-blend-mode
transformar.html transform, contextos de apilamiento, will-change
svg.html SVG en línea: paths, degradados, use, clip
desbordes.html overflow anidado, position: sticky, scroll programático
reflujo.html layout thrashing: leer y escribir geometría alternadamente