Commit Graph
1234 Commits
Author SHA1 Message Date
Sergio cb06a37ffa estado: cosecha granja 2026-09-08T18:48:37Z — avance del árbol KDE 2026-09-08 18:48:37 +00:00
Sergio c1d80ff8af estado: cosecha granja 2026-09-08T18:32:27Z — avance del árbol KDE 2026-09-08 18:32:27 +00:00
Sergio 813a59db89 estado: cosecha granja 2026-09-08T18:09:03Z — avance del árbol KDE 2026-09-08 18:09:03 +00:00
Sergio b44ea878ff estado: cosecha granja 2026-09-08T18:02:48Z — avance del árbol KDE 2026-09-08 18:02:48 +00:00
Sergio 6be233de09 estado: cosecha granja 2026-09-08T17:32:54Z — avance del árbol KDE 2026-09-08 17:32:54 +00:00
Sergio bf4f21e963 estado: cosecha granja 2026-09-08T17:02:52Z — avance del árbol KDE 2026-09-08 17:02:52 +00:00
SergioandClaude Opus 5 8b8bac5523 evidencia: anotar que el log de una colgada se perdió al archivarla
El cp nunca corrió: zsh aborta el comando entero cuando un glob no casa, y ese directorio no
tenía ningún .txt, así que tampoco se copió el .log — y el rm -rf siguiente se ejecutó igual.
Borrar sin comprobar que la copia existía.

Se deja un PERDIDO.md en vez de un directorio vacío, que es lo que la regla 3 de CLAUDE.md
advierte: un directorio vacío no es evidencia, es un nombre. La firma medida antes de la
pérdida (7/1/6, cero screenshot) sí está registrada en la cabecera del cazador.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
2026-09-08 16:49:02 +00:00
SergioandClaude Opus 5 20a719f9c0 cuelgue headless: verificación A/B y evidencia — 98 segfaults contra 0
arnés viejo (sólo CONTENT)  98 segfaults · 1 colgada · 49/50 screenshots
  arnés nuevo (los cinco)      0 segfaults · 0 colgadas · 50/50 screenshots

Queda dicho en la cabecera qué prueba esto y qué no. El MECANISMO sí: 98 → 0, exactamente 2
por corrida, en el 100% de las corridas; un efecto determinista se refuta con pocas muestras.
El CUELGUE no: 1 contra 0 en 50 pares no es significativo — con la tasa medida (3 en 130 ≈
2,3%) ver cero en 50 tiene ~31% de probabilidad aunque nada hubiera cambiado, y harían falta
~200 corridas para un negativo convincente.

Lo que sí sostiene: las tres colgadas observadas tienen la MISMA huella exacta (7 fallos de
lanzamiento de pestaña, 1 de rdd, 6 messageManager is null, cero screenshot) y las tres
cayeron donde los ayudantes revientan. Ninguna apareció sin el mecanismo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
2026-09-08 16:48:03 +00:00
Sergio 76bf4f39a8 estado: cosecha granja 2026-09-08T16:34:12Z — avance del árbol KDE 2026-09-08 16:34:12 +00:00
Sergio 846f2ec5a7 estado: cosecha granja 2026-09-08T16:02:43Z — avance del árbol KDE 2026-09-08 16:02:43 +00:00
Sergio cdadf5fa81 estado: cosecha granja 2026-09-08T15:33:28Z — avance del árbol KDE 2026-09-08 15:33:29 +00:00
Sergio 1ac819eff3 estado: cosecha granja 2026-09-08T15:01:44Z — avance del árbol KDE 2026-09-08 15:01:44 +00:00
SergioandClaude Opus 5 8ff6ae7b3a pgo: el control que faltaba — el arranque eran 16 s y diluía todos los porcentajes
El banco medía el ciclo COMPLETO del proceso (arrancar → renderizar → capturar → salir)
y nunca se midió cuánto de eso era arranque. Con una página vacía como control, y las 4
cargas × 2 variantes en UNA sola sesión intercalada (restar entre corridas de días
distintos no vale: la misma variante deriva ~1%):

  maquetación   trabajo 7281 → 4744 ms   -34,8%   (publicado: -10,9%)
  carga ajena   trabajo 4550 → 4634 ms    +1,8%   = cero, y es buena señal
  SunSpider     trabajo  -34 →   -6 ms   bajo el ruido

Dos correcciones al documento:

1. El -10,9% es correcto para el ciclo completo pero se leía como 'firefox 11% más
   rápido'. Sobre el trabajo de la página el PGO rinde -34,8%: tres veces más. El error
   subestimaba el propio resultado.

2. La explicación que di del SunSpider era aire. Su trabajo mide -34 ms, NEGATIVO: la
   página con el benchmark tardó menos que la vacía. No había nada que medir, y yo le
   colgué encima una teoría sobre el JIT. La teoría puede ser cierta; esta medición
   nunca la probó.

Las tablas viejas se dejan sin retocar, con un aviso arriba: el error de método enseña
más que el número corregido. Todo el rigor estadístico estaba puesto sobre una cantidad
que no era la que yo creía medir, y ninguna repetición lo habría revelado — sólo un
control, que costó siete corridas de una página vacía.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
2026-09-08 14:57:26 +00:00
Sergio 9c491b29fc estado: cosecha granja 2026-09-08T14:31:50Z — avance del árbol KDE 2026-09-08 14:31:50 +00:00
Sergio 2e496d62e0 estado: tras aparcar el jarlog — corpus al día 2026-09-08 14:11:55 +00:00
Sergio c3413d293e jarlog APARCADO: rompe atuq, y el coste está medido mientras el beneficio no
Al reconstruir atuq sobre el firefox con jarlog, murió:

    zipfile.BadZipFile: Bad magic number for central directory  (rebrand.py)

El jarlog convierte el omni.ja al formato «jar optimizado» de Mozilla, que mueve
el directorio central al principio:

    sin jarlog:  PK\003\004    ZIP estándar — zipfile lo abre, 5306 entradas
    con jarlog:  \376\204#\0   zipfile lo rechaza

Y atuq reempaqueta el omni.ja con zipfile para su branding. O sea que el jarlog
rompe el navegador propio de la distro.

La cuenta es asimétrica: el COSTE está medido y el BENEFICIO no —el banco corre
con caché caliente, donde reordenar el omni.ja no ahorra ninguna lectura, y dio
-0,1%, por debajo del suelo de ruido del propio banco—. Cambiar algo que
funciona por una ganancia que no se pudo medir, rompiendo algo que sí
funcionaba, es mal negocio.

Revertido a los hashes YA construidos y medidos (perfil 3647c6be, firefox
3d199174, atuq fab2fbfb): cero reconstrucciones. La documentación va fuera de
los campos hasheados, verificado antes y después.

Se retoma cuando (1) se mida el arranque EN FRÍO, que es su terreno, y (2)
rebrand.py sepa leer el jar optimizado o des-optimizarlo antes. El blob
92497cdd del mirror ya trae el jarlog: retomarlo es cambiar una línea.

Y LA LECCIÓN, que es la que más vale: el jarlog parecía GRATIS. «Es lo que hace
upstream y no cuesta nada» lo escribí yo en este mismo documento hace unas
horas. El coste no apareció midiendo el jarlog sino CONSTRUYENDO LO QUE DEPENDÍA
DE ÉL. Una función que se declara gratuita sin haber reconstruido a sus
consumidores no es gratuita: es no medida.
2026-09-08 14:08:25 +00:00
Sergio 17508043aa estado: waterfox renombrado, corpus al día 2026-09-08 14:05:18 +00:00
Sergio 824ee67f0f estado: cosecha granja 2026-09-08T14:02:27Z — avance del árbol KDE 2026-09-08 14:02:27 +00:00
Sergio 64c9e7196e estado: cosecha granja 2026-09-08T13:32:16Z — avance del árbol KDE 2026-09-08 13:32:16 +00:00
Sergio 34af57ee3f estado: cosecha granja 2026-09-08T13:02:01Z — avance del árbol KDE 2026-09-08 13:02:01 +00:00
Sergio c1eb86c83b estado: cosecha granja 2026-09-08T12:31:51Z — avance del árbol KDE 2026-09-08 12:31:51 +00:00
Sergio f06a5627e0 estado: cosecha granja 2026-09-08T12:01:47Z — avance del árbol KDE 2026-09-08 12:01:47 +00:00
Sergio 5ac6f35030 estado: cosecha granja 2026-09-08T11:32:16Z — avance del árbol KDE 2026-09-08 11:32:16 +00:00
Sergio 5d708f5225 estado: cosecha granja 2026-09-08T10:31:21Z — avance del árbol KDE 2026-09-08 10:31:21 +00:00
Sergio 59f8164b8b estado: cosecha granja 2026-09-08T10:02:10Z — avance del árbol KDE 2026-09-08 10:02:10 +00:00
Sergio 4aa3fbed66 estado: cosecha granja 2026-09-08T09:31:56Z — avance del árbol KDE 2026-09-08 09:31:56 +00:00
Sergio 01d4110241 estado: cosecha granja 2026-09-08T09:02:06Z — avance del árbol KDE 2026-09-08 09:02:06 +00:00
Sergio dce113cd3f estado: cosecha granja 2026-09-08T08:31:51Z — avance del árbol KDE 2026-09-08 08:31:51 +00:00
Sergio 613d74950b estado: cosecha granja 2026-09-08T08:01:43Z — avance del árbol KDE 2026-09-08 08:01:43 +00:00
Sergio 1ff5246667 estado: cosecha granja 2026-09-08T07:31:48Z — avance del árbol KDE 2026-09-08 07:31:49 +00:00
Sergio 57f9bf5b35 estado: cosecha granja 2026-09-08T07:01:44Z — avance del árbol KDE 2026-09-08 07:01:44 +00:00
Sergio 3306f8915d estado: cosecha granja 2026-09-08T06:31:24Z — avance del árbol KDE 2026-09-08 06:31:24 +00:00
Sergio e5b2d4e07d estado: cosecha granja 2026-09-08T06:01:46Z — avance del árbol KDE 2026-09-08 06:01:47 +00:00
Sergio d28a9313ab estado: cosecha granja 2026-09-08T05:31:26Z — avance del árbol KDE 2026-09-08 05:31:26 +00:00
Sergio c455a14611 estado: cosecha granja 2026-09-08T05:02:10Z — avance del árbol KDE 2026-09-08 05:02:10 +00:00
Sergio dd510d70e7 estado: cosecha granja 2026-09-08T04:31:59Z — avance del árbol KDE 2026-09-08 04:31:59 +00:00
Sergio 2584430a16 estado: cosecha granja 2026-09-08T04:01:28Z — avance del árbol KDE 2026-09-08 04:01:29 +00:00
Sergio 21bec8d02e estado: cosecha granja 2026-09-08T03:32:12Z — avance del árbol KDE 2026-09-08 03:32:12 +00:00
Sergio 92aacc6a5f SDD 26: el jarlog puesto — probado en el artefacto, no medible en el banco
sin PGO   v1        v2        v3 (= v2 + jarlog)
  DOM/maquetación   23.008    20.851    20.527    20.502   (-10,9%)
  SunSpider         16.006    15.859    15.869    15.838   (-1,0%)
  jarlog solo:      -0,1% y -0,2%

Indistinguible de cero, y el argumento no es que los rangos se solapen —que se
solapan— sino que la MISMA variante varía ~1% entre corridas de días distintos
(v1 dio 20.851 hoy y 21.050 ayer). El suelo de ruido del banco es diez veces el
efecto buscado.

No es un fallo del jarlog: el banco corre con la caché de página CALIENTE, y ahí
reordenar omni.ja no ahorra ninguna lectura. Su terreno es el arranque en frío,
que este instrumento no reproduce.

Lo que SÍ está probado es que la función existe, y del lado del artefacto:
libxul IDÉNTICO byte a byte entre v2 y v3, omni.ja distinto en 26 bytes. El
jarlog tocó exactamente lo que debía y nada más. Se conserva porque es lo que
hace upstream y no cuesta nada; lo que no se afirma es una ganancia no medida.

Y no hizo falta la extensión Quitter, que este mismo documento daba por
bloqueante: profileserver.py sólo traduce JARLOG_FILE a MOZ_JAR_LOG_FILE.

Anotado además: los dos atípicos del banco son 120.034 y 120.030 ms, o sea
exactamente el timeout del arnés. No son ruido de carga sino corridas COLGADAS
al arrancar en headless, 2 de 56 (~3,5%).
2026-09-08 03:31:23 +00:00
Sergio 89b296cac9 estado: cosecha granja 2026-09-08T03:01:49Z — avance del árbol KDE 2026-09-08 03:01:49 +00:00
Sergio 91a229a7c4 estado: cosecha granja 2026-09-08T02:32:04Z — avance del árbol KDE 2026-09-08 02:32:04 +00:00
Sergio b00d513fbb estado: cosecha granja 2026-09-08T02:01:48Z — avance del árbol KDE 2026-09-08 02:01:48 +00:00
Sergio 0d03050b2b estado: cosecha granja 2026-09-08T01:32:00Z — avance del árbol KDE 2026-09-08 01:32:00 +00:00
Sergio b5582a2bd9 estado: cosecha granja 2026-09-08T01:02:14Z — avance del árbol KDE 2026-09-08 01:02:14 +00:00
Sergio 84ff534d43 estado: cosecha granja 2026-09-08T00:01:54Z — avance del árbol KDE 2026-09-08 00:01:54 +00:00
Sergio d971413a89 estado: cosecha granja 2026-09-07T23:31:52Z — avance del árbol KDE 2026-09-07 23:31:52 +00:00
Sergio 0a1d087eaa estado: cosecha granja 2026-09-07T23:01:53Z — avance del árbol KDE 2026-09-07 23:01:53 +00:00
Sergio 67269a028a estado: cosecha granja 2026-09-07T22:32:00Z — avance del árbol KDE 2026-09-07 22:32:00 +00:00
Sergio 1dbaf8d85a estado: atuq sobre el firefox con PGO v2 — 860/862 y cero huecos
atuq b3:fab2fbfb, 340 M, libxul de 227.043.776 bytes: el mismo del motor con el
perfil de 46 páginas. Verificado que ARRANCA desde una hidratación limpia de
escritorio-sway, 0 errores de relocación.

El corpus queda en 860/862 sellados —los dos que faltan son `ajeno`, que es
frontera y no deuda— y el vigía de sonames en CERO huecos en los cinco perfiles.
2026-09-07 22:08:38 +00:00
Sergio 54a27b966b estado: cosecha granja 2026-09-07T22:02:23Z — avance del árbol KDE 2026-09-07 22:02:23 +00:00