Commit Graph
812 Commits
Author SHA1 Message Date
SergioandClaude Opus 5 a2c2c4d968 gnome onda-2: jubilar la cola — 22 recetas y 22 hashes identicos a incoming-gnome
El caso LIMPIO del mismo fenomeno que onda-1, sin ninguna de sus asperezas: las
22 recetas son byte a byte identicas a las de incoming-gnome Y las 22 dan el
MISMO ArtifactHash, o sea la misma direccion del store. Sin divergencias, sin
colision de nombre y sin un solo artefacto que podar al retirarla.

La comprobacion que decide NO es `diff` sino `hammer hash`: la resolucion de
deps es hermano->padre, asi que dos ficheros identicos en colas distintas pueden
sellar distinto. Aca coinciden los 22.

Se va tambien `cairo-ctime-r.patch`, verificado identico al de incoming-gnome, y
comprobado que ninguna receta de ninguna cola queda apuntando a un parche
inexistente.

El andamio ya no sostenia nada: el trabajo de la isla dinamica vive en
incoming-gnome, que es la cola que el perfil usa. Sale de QUEUES en el mismo
commit, por la simetrica de la regla que ese fichero documenta.

Gate --check OK, grafo CIERRA, escritorio-gnome sigue 119/119, corpus 786/787.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
2026-09-01 18:35:53 +00:00
Sergio b2e92de2f3 estado: cosecha granja 2026-09-01T18:31:57Z — avance del árbol KDE 2026-09-01 18:31:57 +00:00
Sergio 5053723239 estado: cosecha granja 2026-09-01T18:02:02Z — avance del árbol KDE 2026-09-01 18:02:03 +00:00
SergioandClaude Opus 5 cf42cd9049 gnome onda-1: jubilar la cola entera — molia para nadie
Cierra la jubilacion empezada con gnome-desktop. Las 5 recetas que quedaban:

- glib, glib-introspected, gobject-introspection, py3-setuptools: byte a byte
  identicas a las de incoming-gnome Y con el MISMO ArtifactHash, o sea que
  sellaban en la misma direccion y entraban por cache-hit. Coste de build cero;
  coste real: un segundo sitio donde editar, que se separa en silencio.
- gsettings-desktop-schemas: la unica distinta, y es la version ANTERIOR al
  2026-07-28 (introspection=false + link=static). La vigente lo activo porque el
  gir de Meta de mutter incluye GDesktopEnums-3.0.gir, que sale de ahi, y sin el
  el g-ir-scanner corta en el ultimo target de mutter (721/722).

Lo caro no era el tiempo sino el NOMBRE: el gsettings viejo competia con el
bueno, dos artefactos homonimos con hash distinto en el store. Podado el
huerfano (0fb1703d, 155 KiB exclusivos) y anotado en el ledger anti-churn; los
otros cuatro artefactos siguen vigentes porque los produce incoming-gnome.

Y al jubilar gnome-desktop las dos hojas de la cola se habian quedado sin
consumidor: la cola se alimentaba a si misma y terminaba en el aire.

Sale tambien de QUEUES en farm-worker-loop.sh, por la simetrica de la regla que
ese fichero ya documenta dos veces: una cola ausente de la lista no da error,
da silencio — y una cola retirada que sigue en la lista, tambien.

Gate --check OK, grafo CIERRA, escritorio-gnome sigue 119/119, corpus 786/787.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
2026-09-01 17:52:42 +00:00
Sergio 78fc56b266 estado: cosecha granja 2026-09-01T17:32:03Z — avance del árbol KDE 2026-09-01 17:32:04 +00:00
Sergio a82b4ec0cc estado: cosecha granja 2026-09-01T17:02:43Z — avance del árbol KDE 2026-09-01 17:02:43 +00:00
SergioandClaude Opus 5 12c24a984a tasas: la 7ª sorpresa quedaba suelta del punto 6 de la lista
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-09-01 17:00:19 +00:00
SergioandClaude Opus 5 9591e69b70 harkaq: el salto del check de arquitectura ya no se apoya en UB (SDD 25 T17)
`f[k++] = BPF_JUMP(..., I_KILL - k - 1 + 1)` leía y modificaba `k` en la misma
expresión, sin punto de secuencia: UB en C11. Andaba porque gcc y clang leen `k`
después del incremento y ese `+1` era la compensación exacta, pero si algún
compilador leyera antes el salto caería una instrucción más allá del final.

El índice se fija ahora en `I_ARCH` antes de usarlo. El código generado es
IDÉNTICO —mismo objdump del objeto a -O1 y a -O2, la única línea que difiere es
el nombre del fichero—, que es lo que prueba que es la misma cuenta escrita sin
UB y no un arreglo que además mueve el salto. Comprobado además que la jaula
sigue puesta: ptrace desde dentro da EPERM y un ejecutable fuera de la clausura
no arranca.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-09-01 16:59:22 +00:00
SergioandClaude Opus 5 1df77985fa tasas: T19 — el sandbox apila una capa overlay por dep, y lo caro no es lo que parece
Nadie había medido qué cuesta el apilado de capas de `bwrap_args`. El 95% de las
recetas (1 108 de 1 171) construye con las deps APILADAS, hasta ~27.

Un lookup que FALLA cuesta +1 925 ns por capa (a 64 capas, 124 µs = 1 580 syscalls
nulas), pero se paga UNA VEZ POR RUTA: la dentry fusionada queda cacheada y el
montaje dura toda la fase. Un `cc -O2 -c` toca 381 rutas distintas que fallan ⇒
2,9 ms por fase a 24 capas, la misma décima de por ciento que la jaula de T17/T18.

⇒ `merge_deps_layer` no es una optimización de velocidad: sólo se pagaría sola a
partir de ~35 200 primeros fallos en una misma fase. Es el rodeo de un muro, y el
muro quedó bisecado al byte: `mount(2)` monta 41 capas (4 059 B de opciones) y
falla en 42 con un `ENOENT` que miente. El `mount(8)` de util-linux se rinde entre
8 y 12, así que bisecarlo desde la shell da un muro FALSO.

Consecuencias anotadas en sandbox.rs: no bajar el umbral «para que vaya más
rápido», y podar `.dmerge` es gratis en rendimiento. Y hay puerta medida: la API
de montaje nueva (`fsconfig lowerdir+`) monta las 64 capas que `mount(2)` rechaza.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-09-01 16:56:12 +00:00
SergioandClaude Opus 5 b4a7235c59 estado: regenerar los 5 grafos tras jubilar gnome-desktop de onda-1
Ningun nodo cambia de estado y el gate `--check` sigue OK: lo unico que se
mueve es `dependientes_total` de sus deps, un dependiente menos cada una. Es
la yupana cruzando TODAS las colas, onda-1 incluida, aunque ningun grafo la
cargue como cola propia.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
2026-09-01 16:36:30 +00:00
Sergio 67c49a77e0 estado: cosecha granja 2026-09-01T16:31:54Z — avance del árbol KDE 2026-09-01 16:31:54 +00:00
Sergio eaa04a12a5 estado: cosecha granja 2026-09-01T16:01:55Z — avance del árbol KDE 2026-09-01 16:01:55 +00:00
Sergio 95679adb6f estado: cosecha granja 2026-09-01T15:32:55Z — avance del árbol KDE 2026-09-01 15:32:55 +00:00
Sergio 914e841433 estado: cosecha granja 2026-09-01T15:21:46Z — avance del árbol KDE 2026-09-01 15:21:46 +00:00
SergioandClaude Opus 5 46dba58616 tasas: T17/T18 — la jaula cobra por syscall, y el filtro largo no es lo que cobra
SDD 25 tenía medido el sandbox por namespaces (T14, ~1 ms por proceso) pero no el grano fino que
harkaq pone dentro, que cobra por SYSCALL. `bench_jaula.c` lo mide con control negativo en las dos
mitades (si la jaula no quedó puesta, sale con 2).

seccomp: el filtro de harkaq es una denylist lineal, así que toda syscall legítima recorre la
cadena entera — y aun así es PLANO en su longitud (86,9 ns con 4 entradas, 88,3 con 250, sobre un
piso de 75,0). Lo que lo hace plano es el bitmap de acción constante del kernel, y eso no se supone:
un gemelo de la misma longitud con una carga de args[0] —que hace que el analizador se rinda— sí
crece, 111,6 → 139,9 ns. La regla que sale de ahí es que un filtro es gratis mientras no mire un
argumento. El bitmap se paga al instalar (1,5 µs por entrada) y se amortiza en 2 830 syscalls, o
sea una invocación y media de gcc, una sola vez por fase de build.

landlock: el precio es ESTAR enjaulado (+473 ns por open), no cuántas reglas hay — pasar de 1 regla
a las 16 384 de una clausura fichero a fichero agrega +225 ns más. La política por-fichero de D1,
que era la decisión discutible, resulta casi gratis. Y dos negativas medidas: `stat` no paga
(Landlock no engancha getattr) y un open DENEGADO sale más barato que uno concedido, al revés de lo
que se esperaba al medirlo.

En total, la jaula le cuesta a un compilado 0,23–0,31%: una décima parte del presupuesto de <5% de
SDD 16.

De paso, dos cosas del filtro que salieron de mirarlo para medirlo: la denylist tiene un techo de
~252 entradas por el __u8 de los saltos de la BPF clásica, y el jf se calcula leyendo y modificando
`k` en la misma expresión (UB en C11, benigno con gcc y clang, comprobado).

Y §9.6 queda con el experimento de PTI bien planteado: no es «el laptop daría peor» (compara dos
máquinas y mezcla cuatro variables) sino la misma máquina con pti=on y pti=off. momento no sirve ni
forzándolo: este invitado no expone PCID, así que mediría el peor caso y no el de un TigerLake.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-09-01 15:08:33 +00:00
Sergio 3e935a09c2 estado: cosecha granja 2026-09-01T15:01:57Z — avance del árbol KDE 2026-09-01 15:01:57 +00:00
Sergio b088eab4ef estado: cosecha granja 2026-09-01T14:31:55Z — avance del árbol KDE 2026-09-01 14:31:55 +00:00
Sergio bbe2285161 estado: cosecha granja 2026-09-01T14:02:03Z — avance del árbol KDE 2026-09-01 14:02:03 +00:00
Sergio 530e2a3d95 estado: cosecha granja 2026-09-01T13:31:52Z — avance del árbol KDE 2026-09-01 13:31:52 +00:00
Sergio 1d64ffca4c estado: cosecha granja 2026-09-01T13:01:58Z — avance del árbol KDE 2026-09-01 13:01:58 +00:00
Sergio ae88c0ae9c estado: cosecha granja 2026-09-01T12:31:54Z — avance del árbol KDE 2026-09-01 12:31:54 +00:00
Sergio 3479021c30 estado: cosecha granja 2026-09-01T12:02:01Z — avance del árbol KDE 2026-09-01 12:02:01 +00:00
Sergio 22d1710e5d estado: cosecha granja 2026-09-01T11:32:01Z — avance del árbol KDE 2026-09-01 11:32:01 +00:00
Sergio e4124fd0fc estado: cosecha granja 2026-09-01T11:01:55Z — avance del árbol KDE 2026-09-01 11:01:55 +00:00
Sergio 0e6fe9061f estado: cosecha granja 2026-09-01T10:31:51Z — avance del árbol KDE 2026-09-01 10:31:51 +00:00
Sergio 8ff0c23ff8 estado: cosecha granja 2026-09-01T10:01:58Z — avance del árbol KDE 2026-09-01 10:01:58 +00:00
Sergio 13bca0e980 estado: cosecha granja 2026-09-01T09:31:55Z — avance del árbol KDE 2026-09-01 09:31:55 +00:00
Sergio e19592d1fb estado: cosecha granja 2026-09-01T09:01:53Z — avance del árbol KDE 2026-09-01 09:01:53 +00:00
Sergio e05e725841 estado: cosecha granja 2026-09-01T08:31:55Z — avance del árbol KDE 2026-09-01 08:31:55 +00:00
Sergio 18b4fbf1b6 estado: cosecha granja 2026-09-01T08:01:58Z — avance del árbol KDE 2026-09-01 08:01:58 +00:00
Sergio e2d4a17bfc estado: cosecha granja 2026-09-01T07:31:52Z — avance del árbol KDE 2026-09-01 07:31:52 +00:00
Sergio e546790d35 estado: cosecha granja 2026-09-01T07:01:57Z — avance del árbol KDE 2026-09-01 07:01:57 +00:00
Sergio eb91c3a815 estado: cosecha granja 2026-09-01T06:31:54Z — avance del árbol KDE 2026-09-01 06:31:54 +00:00
Sergio 38d199543b estado: cosecha granja 2026-09-01T06:01:52Z — avance del árbol KDE 2026-09-01 06:01:52 +00:00
Sergio 84ffd096f0 estado: cosecha granja 2026-09-01T05:31:57Z — avance del árbol KDE 2026-09-01 05:31:57 +00:00
Sergio 9fbd15c30e estado: cosecha granja 2026-09-01T05:01:52Z — avance del árbol KDE 2026-09-01 05:01:52 +00:00
Sergio 25b753a0a3 estado: cosecha granja 2026-09-01T04:31:51Z — avance del árbol KDE 2026-09-01 04:31:51 +00:00
Sergio 91afe77297 estado: cosecha granja 2026-09-01T04:01:52Z — avance del árbol KDE 2026-09-01 04:01:52 +00:00
Sergio 1881ca5f9f estado: cosecha granja 2026-09-01T03:31:49Z — avance del árbol KDE 2026-09-01 03:31:49 +00:00
Sergio 7bd0631f3b estado: cosecha granja 2026-09-01T03:01:49Z — avance del árbol KDE 2026-09-01 03:01:49 +00:00
Sergio 9221f640a3 estado: cosecha granja 2026-09-01T02:31:50Z — avance del árbol KDE 2026-09-01 02:31:50 +00:00
Sergio dd5fce1584 estado: cosecha granja 2026-09-01T02:02:09Z — avance del árbol KDE 2026-09-01 02:02:09 +00:00
Sergio bb681a066e estado: cosecha granja 2026-09-01T01:31:51Z — avance del árbol KDE 2026-09-01 01:31:51 +00:00
Sergio 5662688e8c estado: cosecha granja 2026-09-01T01:02:06Z — avance del árbol KDE 2026-09-01 01:02:06 +00:00
Sergio ffbc9a9c2a estado: cosecha granja 2026-09-01T00:32:04Z — avance del árbol KDE 2026-09-01 00:32:04 +00:00
Sergio c668184419 estado: cosecha granja 2026-09-01T00:01:58Z — avance del árbol KDE 2026-09-01 00:01:58 +00:00
Sergio e77102504c estado: cosecha granja 2026-08-31T23:31:55Z — avance del árbol KDE 2026-08-31 23:31:55 +00:00
Sergio e94479bf5f estado: cosecha granja 2026-08-31T23:01:49Z — avance del árbol KDE 2026-08-31 23:01:49 +00:00
Sergio 5305e5a1e1 estado: cosecha granja 2026-08-31T22:31:56Z — avance del árbol KDE 2026-08-31 22:31:56 +00:00
Sergio f6fb674803 estado: cosecha granja 2026-08-31T22:01:49Z — avance del árbol KDE 2026-08-31 22:01:49 +00:00