Commit Graph
731 Commits
Author SHA1 Message Date
Sergio 8ecd500a1e estado: cosecha granja 2026-08-31T03:32:03Z — avance del árbol KDE 2026-08-31 03:32:03 +00:00
Sergio b421eb50f1 estado: cosecha granja 2026-08-31T03:02:05Z — avance del árbol KDE 2026-08-31 03:02:05 +00:00
SergioandClaude Opus 5 856e55131c estado: COSMIC 90/90 — LOS 7 PERFILES CIERRAN
Las 24 en deuda selladas, más clang18. base 52/52, cli 75/75, mirada 33/33, KDE 163/163,
sway 129/129, GNOME 119/119, COSMIC 90/90. Cero artefactos vacíos en 2103.

Las dos últimas (`cosmic-settings`, `cosmic-applets`) no cedieron al paralelismo: habían
caído con 3, 2 y 1 core. Lo que las destrabó fue MEMORIA, y la vía compatible con T9 es
zram, no swap en disco: se midió que el zram comprime a 4x real (1,9 G de páginas en
478 MB de RAM) y que los 4 GiB de `swap-zram` son sólo su default, sin justificación.

Se añadió un SEGUNDO dispositivo zram en vez de redimensionar el primero: redimensionar
exige `swapoff`, y con 1,94 G dentro y 994 MB de RAM libre eso es el escenario exacto que
volteó la máquina el 2026-08-17 —el propio script lo advierte y tiene freno—. Verificado
`backing_dev=none` en el dispositivo nuevo, que es el único agujero de zram contra T9.

`cosmic-settings` selló después con 3 cores, la misma config con la que había fallado ⇒
el paralelismo nunca fue la causa, sólo esquivaba el síntoma.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
2026-08-31 02:40:27 +00:00
Sergio 5606e99c4d estado: cosecha granja 2026-08-31T01:32:33Z — avance del árbol KDE 2026-08-31 01:32:33 +00:00
Sergio 362ba5d53f estado: cosecha granja 2026-08-31T01:02:31Z — avance del árbol KDE 2026-08-31 01:02:31 +00:00
Sergio 2f2249ef0b estado: cosecha granja 2026-08-31T00:32:11Z — avance del árbol KDE 2026-08-31 00:32:11 +00:00
SergioandClaude Opus 5 0ac6fbfb5b targets: el perfil GNOME ya no reclama las 3 recetas aparcadas por diseño
`targets.toml` declaraba gnome-session, gnome-settings-daemon y gdm como raíces del
perfil, mientras el encabezado de las tres recetas dice "APARCADA por diseño" desde el
2026-08-07, verificado contra el meson.build de cada tag: las tres mueren en GTK3, que es
una de las tres deudas que el frente GNOME aparcó a propósito (GTK3 / X11 / PAM).

Dos documentos del repo decían cosas opuestas, y el que se mira primero es el grafo. El
resultado era deuda FANTASMA: escritorio-gnome reportaba 124/127 con 3 en `never` para
siempre, se leía como trabajo pendiente, y el worker las reintentaba en cada ciclo. En
esta misma sesión me hizo afirmar dos veces que GNOME estaba "a 3 recetas de cerrar".

No bloquean el escritorio: gnome-shell no depende de gnome-session ni de g-s-d, ni en
build ni para arrancar. El camino vivo es mutter → gnome-shell, lanzado por arje; el
único que pedía gnome-session era gdm.

Las recetas SIGUEN en el repo con su análisis intacto. Si algún día se autora GTK3, se
vuelven a añadir a `paquetes` y el objetivo reaparece solo.

escritorio-gnome: 119/119, CIERRA.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
2026-08-31 00:05:24 +00:00
Sergio 1ac3ff3318 estado: cosecha granja 2026-08-30T23:32:00Z — avance del árbol KDE 2026-08-30 23:32:00 +00:00
Sergio 67697f86c8 estado: cosecha granja 2026-08-30T23:01:59Z — avance del árbol KDE 2026-08-30 23:01:59 +00:00
Sergio 75dddc0e86 estado: cosecha granja 2026-08-30T21:01:58Z — avance del árbol KDE 2026-08-30 21:01:58 +00:00
Sergio c1b71cb1cc estado: cosecha granja 2026-08-30T20:31:43Z — avance del árbol KDE 2026-08-30 20:31:43 +00:00
Sergio c09ad0f1bc estado: cosecha granja 2026-08-30T20:02:03Z — avance del árbol KDE 2026-08-30 20:02:03 +00:00
Sergio be8de4db24 estado: cosecha granja 2026-08-30T19:32:06Z — avance del árbol KDE 2026-08-30 19:32:06 +00:00
Sergio 94b9d0c6c0 estado: cosecha granja 2026-08-30T19:01:59Z — avance del árbol KDE 2026-08-30 19:01:59 +00:00
Sergio dd36ddebe2 estado: cosecha granja 2026-08-30T18:32:00Z — avance del árbol KDE 2026-08-30 18:32:00 +00:00
Sergio 30a319751b estado: cosecha granja 2026-08-30T18:01:58Z — avance del árbol KDE 2026-08-30 18:01:58 +00:00
Sergio 0e8aa5364e estado: cosecha granja 2026-08-30T17:32:05Z — avance del árbol KDE 2026-08-30 17:32:05 +00:00
Sergio 8a87b78a75 estado: cosecha granja 2026-08-30T16:32:01Z — avance del árbol KDE 2026-08-30 16:32:01 +00:00
Sergio 5d7c01d9a4 estado: cosecha granja 2026-08-30T15:01:59Z — avance del árbol KDE 2026-08-30 15:01:59 +00:00
Sergio cd919913d0 estado: cosecha granja 2026-08-30T14:32:09Z — avance del árbol KDE 2026-08-30 14:32:09 +00:00
Sergio c504450cad estado: cosecha granja 2026-08-30T12:32:04Z — avance del árbol KDE 2026-08-30 12:32:04 +00:00
Sergio 771efb2dd3 estado: cosecha granja 2026-08-30T11:32:06Z — avance del árbol KDE 2026-08-30 11:32:06 +00:00
SergioandClaude Opus 5 9142cd0565 upgrade: el mismo agujero que hydrate, en el proyector de generaciones
project_plan es target_root.join(rel) + escribir por ruta, igual que hydrate: un symlink de
directorio dejado por una generación anterior se seguía. Reproducido — la generación 2 escribía
usr/share/pkg/archivo FUERA del root y ApplyReport salía en verde.

Con --root / no cambia nada (todo empieza por /); el caso real es , que es como se arma una imagen.

Se mide el DIRECTORIO PADRE, no el destino: un Replaced sobre un symlink que apunta afuera es
legítimo porque rename pisa el symlink en vez de escribir a través de él, y medir el destino lo
rechazaría por error. Y raiz_real() resuelve el tramo existente del root dejando pegado el que
todavía no existe, para que la comprobación valga también sobre una imagen nueva.

Dos tests, uno por dirección: el que sale falla ruidoso, el que se queda dentro (usr-merge,
temas de iconos) sigue proyectando.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 11:19:10 +00:00
SergioandClaude Opus 5 726068e653 hidratación: no se escribe a través de un symlink que sale del root (SDD 25 H3)
Buscando el sitio de H3 —«harkaq valida rutas a mano»— resultó que harkaq NO valida rutas a
mano: delega en Landlock. Donde no se validaba NADA era en hydrate.

Reproducido: hidratar es target_fhs.join(rel) y escribir por ruta, así que un symlink de
directorio ya puesto en el FHS se sigue. Artefacto A trae usr/share/pkg → /algún/lado (los
symlinks se replican literales, y así debe ser); al hidratar B, usr/share/pkg/archivo aterrizaba
FUERA del root y hydrate devolvía Ok(1). Con --into sobre una imagen eso es escribir en el
anfitrión diciendo que todo fue bien.

Cuánto se estaba disparando: cero. En el store hay 160 symlinks absolutos y NINGUNO apunta a un
directorio; de ~42 000 relativos ninguno sale de su artefacto. Mina desactivada, no incendio.

La comprobación va por DIRECTORIO (un canonicalize por fichero sería un realpath por entrada,
T8) y la semántica es la de RESOLVE_IN_ROOT, no la de NO_SYMLINKS: un symlink que se queda
dentro tiene que seguir andando —usr-merge /lib → usr/lib, los 22@2x → 22 de los iconos— y hay
test para cada dirección. Lo que queda de la propuesta (la versión sin carrera, con openat2 +
linkat/renameat) queda escrito con su precio: arrastra el camino de patchelf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 11:14:13 +00:00
SergioandClaude Opus 5 19b5d51dfe latido: el contrato del kernel se comprueba solo en cada cosecha
El gate de SDD 25 §4.ter existía y NADIE lo corría. Un kernel reconstruido sin MEMCG volvería
a pasar inadvertido — y ese fallo no se ve del lado del desarrollo, porque el kernel de la
máquina de trabajo sí trae MEMCG: sólo se ve comprobando el artefacto.

Mismo cable que el vigía de fuentes y por la misma razón que está escrita ahí arriba: lo que
nadie refresca envejece hacia el optimismo. Ahora cada ciclo deja el veredicto en
docs/state/kernel-contract.txt y el git log lo muestra como el resto del khipu.

El fichero se escribe por temporal y sólo se mueve si tiene contenido: contract sale != 0
cuando el contrato no se cumple —y ese rojo es justo lo que hay que guardar—, pero un fichero
vacío se leería como «nada que objetar».

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 11:03:41 +00:00
Sergio 3ab74532af estado: cosecha granja 2026-08-30T10:02:00Z — avance del árbol KDE 2026-08-30 10:02:00 +00:00
SergioandClaude Opus 5 62da4ca128 estado: COSMIC 88/90 — drenadas 22 de las 24 en deuda
Se construyeron en gioser, no en el worker: el LXC dev.gioser.net lleva ~14 h sin ssh.
Quedan `cosmic-applets` y `cosmic-settings`, que superan el techo de memoria de la caja
INCLUSO con un solo core (7,7 G con un suelo de 2,3 G que ponen gitea y los agentes) — no
es paralelismo, es el pico de un `rustc` solo.

El método que las trajo: capar por entorno con `taskset` (nunca `-j` en la fase, que
cambiaría el ArtifactHash) bajando 3→2→1 cores, con un vigía que corta el lote si el swap
libre baja de 250 MB. Cada bajada compró recetas. El vigía cortó cuatro veces y la máquina
sobrevivió las cuatro; el LXC pasó por el mismo pico sin guardián y no volvió.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
2026-08-30 09:50:53 +00:00
Sergio 1e1a4a3943 estado: cosecha granja 2026-08-30T09:32:07Z — avance del árbol KDE 2026-08-30 09:32:07 +00:00
Sergio 542a229f4e estado: cosecha granja 2026-08-30T08:31:56Z — avance del árbol KDE 2026-08-30 08:31:56 +00:00
Sergio 04fe72176f estado: cosecha granja 2026-08-30T08:02:00Z — avance del árbol KDE 2026-08-30 08:02:00 +00:00
Sergio 61bc203049 estado: cosecha granja 2026-08-30T07:01:58Z — avance del árbol KDE 2026-08-30 07:01:58 +00:00
Sergio 6d82113a7c estado: cosecha granja 2026-08-30T06:32:00Z — avance del árbol KDE 2026-08-30 06:32:00 +00:00
Sergio 4627d12ba9 estado: cosecha granja 2026-08-30T06:01:59Z — avance del árbol KDE 2026-08-30 06:01:59 +00:00
Sergio 8496ee06c0 estado: cosecha granja 2026-08-30T05:32:02Z — avance del árbol KDE 2026-08-30 05:32:02 +00:00
Sergio 799328a51b estado: cosecha granja 2026-08-30T04:32:00Z — avance del árbol KDE 2026-08-30 04:32:00 +00:00
SergioandClaude Opus 5 6cd8a0410b tasas: H1 PAGADO — los cuatro kernels de Cards ya traen MEMCG y PSI
hammer kernel contract --sealed: 5 de 5 vigentes cumplen su perfil, exit 0. Antes eran 2 de 11.
Una Card que pide memory.max ahora encuentra el fichero en vez de dejar un warn! y correr sin
tope.

Lo medido, no lo supuesto:
- el x86_64_defconfig de 7.1 ya NO trae MEMCG=y ⇒ había que pedirlo explícito;
- MEMCG no tiene ningún depends on, así que el olddefconfig no podía tragárselo — comprobado
  igual contra el .config producido, que es la regla del guardián;
- precio: +80 KiB en linux-generic (+0,49%), +84 en linux-metal, +88 en linux-metal-dual,
  +80 en linux-gioser (+0,71%). Medio punto de kernel por contabilidad por unidad y presión.

Evidencia cruda en docs/evidencia/tasas-kernel-2026-08-29/contrato-h1-pagado.txt, con el
diff-back del plan de gioser sobre su config nuevo (35 cumplidos, 0 incumplidos).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 04:02:10 +00:00
Sergio 0677ba26cd estado: cosecha granja 2026-08-30T04:01:59Z — avance del árbol KDE 2026-08-30 04:01:59 +00:00
Sergio 53eda53683 estado: cosecha granja 2026-08-30T03:32:13Z — avance del árbol KDE 2026-08-30 03:32:13 +00:00
Sergio 9688a15780 estado: cosecha granja 2026-08-30T03:02:24Z — avance del árbol KDE 2026-08-30 03:02:24 +00:00
Sergio 96d7b818a9 estado: cosecha granja 2026-08-30T02:32:12Z — avance del árbol KDE 2026-08-30 02:32:12 +00:00
Sergio 7e8d9a202a estado: cosecha granja 2026-08-30T02:02:08Z — avance del árbol KDE 2026-08-30 02:02:08 +00:00
SergioandClaude Opus 5 697d3f21a1 tasas H4: un test hace regla lo que era suerte — cero pre_exec en el workspace
pre_exec apaga el camino posix_spawn de Rust y devuelve el spawn a fork+exec: 231 µs contra
3 949 µs con 256 MB tocados en el padre (SDD 25 T1). hammer no usa ninguno hoy, pero nadie lo
comprobaba.

El test se comprobó en los dos sentidos: inyectando un pre_exec en sandbox.rs se pone rojo, y
si el barrido no encuentra fuentes también falla — un guardián que aprueba por vacío es el
fallo de CLAUDE.md §3.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 01:48:37 +00:00
SergioandClaude Opus 5 292e3ed6cf tasas/runbook: vigente vs superado en §4.ter y el -j1 de gioser, saldado
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 01:45:50 +00:00
SergioandClaude Opus 5 7148c89534 kernel: regenerado el plan de gioser sobre la base con MEMCG+PSI
La receta derivada inlinea la fase configure de su base, así que el MEMCG de linux-metal sólo
llega acá regenerando. Aprovecha el re-hasheo obligado para soltar la concesión del -j1: vuelve
al -j"$(nproc)" que emite el armador, que es la regla del repo — capar el paralelismo en la
receta cambia el ArtifactHash aunque el binario sea idéntico, y el throttling va por entorno.

b3:b026fe14… reemplaza a b3:8ffd5710… (que era la variante -j1 sin MEMCG).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-30 01:44:25 +00:00
Sergio 11a87c276d estado: cosecha granja 2026-08-30T01:32:00Z — avance del árbol KDE 2026-08-30 01:32:00 +00:00
Sergio 6382f9f693 estado: cosecha granja 2026-08-30T01:02:04Z — avance del árbol KDE 2026-08-30 01:02:04 +00:00
Sergio a4e74e5f51 estado: cosecha granja 2026-08-30T00:32:06Z — avance del árbol KDE 2026-08-30 00:32:06 +00:00
Sergio bdf18e4e94 estado: cosecha granja 2026-08-30T00:03:04Z — avance del árbol KDE 2026-08-30 00:03:04 +00:00
Sergio d639a5ac1b estado: cosecha granja 2026-08-29T23:32:06Z — avance del árbol KDE 2026-08-29 23:32:06 +00:00
Sergio 78839f3d61 estado: cosecha granja 2026-08-29T23:01:59Z — avance del árbol KDE 2026-08-29 23:01:59 +00:00