1297 Commits
Author SHA1 Message Date
sergio 237f9796e7 Etapa G: gate alias soft-serve→soft (charmbracelet) + re-encola soft-serve (falso-rechazo) 2026-06-29 09:12:45 -04:00
sergio bcf70dcd32 Etapa G: cosecha-go finde (auto) — promovidos: charm gdu gobgp gotty k6 kube-linter melt mods nerdctl pop scc skate velero wishlist yj | review: soft-serve(bin=soft) 2026-06-29 09:10:41 -04:00
sergio a853fe6be8 Etapa G: lunes — revisión finde + reseed.
Review resuelto: richgo PROMOVIDO (falso-rechazo: envuelve 'go', el gate lo probó sin go en PATH);
tfsec flags=./cmd/tfsec (era tfsec-docs); diferidos kics (cmd/console≠name), terrascan (panic proto
dup gnostic), sq (CGO sqlite), gotop (go.mod lang 1.16<1.17). Reseed: +16 Go (charm suite pop/
wishlist/soft-serve/skate/melt/mods/charm + scc/kube-linter/velero/gobgp/yj/k6/gotty/gdu/nerdctl).
Misimports dropeados: freeze=optiv/Freeze (ofensiva, no charmbracelet), rekor (tarball alpine).
2026-06-29 09:02:01 -04:00
sergio d63c20e0ee Etapa G: cosecha-go finde (auto) — promovidos: argo-rollouts curlie dnscrypt-proxy dockle duplicacy go-junit-report gowitness ktunnel kubefwd kubeshark shuffledns step-cli tflint tparse vendir | review: richgo(smoke) terrascan(smoke) tfsec(bin=tfsec-docs) 2026-06-27 08:05:32 -04:00
sergioandClaude Opus 4.8 673bdde69f Etapa G: mirada-compositor CONSTRUIDO — stack de sesión gráfica COMPLETO
mirada-compositor sellado (store/d8fd9ca…): el compositor Wayland teselante sobre smithay 0.7,
que maneja DRM/GBM/EGL/libseat/libinput directo y hospeda a mirada-greeter como cliente.
Compila ~255 crates incl. smithay para musl; PIE dinámico.

Cierra la cadena de sesión gráfica de tawasuyu sobre hammer: Mesa(iris) + wayland + stack de
entrada + compositor + greeter, todo sellado.

smithay (default features) enlaza por -sys: drm-sys→libdrm, gbm-sys→mesa, libseat-sys→seatd,
input-sys→libinput, libudev-sys→libudev-zero, + xkbcommon→libxkbcommon y pixman (link directo).
Dos libs nuevas para cerrar el link:
- libxkbcommon 1.7.0 (meson, sin x11/wayland/docs/tools): smithay la enlaza, no sólo dlopen.
- pixman 0.44.2 (meson, sin tests/demos): composición CPU de smithay.

foreign-av NO enlaza ffmpeg (spawnea el binario en runtime) ⇒ no hizo falta construir ffmpeg.
NEEDED del binario: libgbm/libseat/libudev/libinput/libpixman-1/libxkbcommon + musl (libdrm/EGL/
wayland se dlopen-ean).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 07:06:41 -04:00
sergio 254c5a9cc7 Etapa G: ronda 2 pre-siembra finde (+18 Go) + alias gate argo-rollouts/step-cli
terrascan/tfsec/tflint/tparse/richgo/curlie/dockle/vendir/kubefwd/kubeshark/ktunnel/duplicacy/
go-junit-report/argo-rollouts/gowitness/shuffledns/dnscrypt-proxy/step-cli. Dropeados ssh-vault
(sin marca Go) y skopeo (CGO gpgme). Gate: argo-rollouts→kubectl-argo-rollouts, step-cli→step.
2026-06-27 07:04:38 -04:00
sergio b1525ec203 Etapa G: harvest-go fija GIT_SSH_COMMAND (clave github5/tawasuyu) p/ push desde cron sin agente 2026-06-27 07:00:23 -04:00
sergio 0f4f13b318 Etapa G: cosecha-go finde (auto) — promovidos: act bazelisk gitbatch git-lfs hub kube-capacity kubent osv-scanner qsreplace umoci unfurl | review: kics(bin=builder) 2026-06-27 06:59:01 -04:00
sergio fa2f812a90 Etapa G: fix buf/gosec/katana/naabu — instalaban un main helper (functional-test/gosecutil/protoc-gen-buf-lint); flags=./cmd/<tool> 2026-06-27 06:50:17 -04:00
sergio b544ad3d59 Etapa G: harvest gate exige binario == nombre esperado (no solo que 'corra')
La 1ª corrida promovió+FIRMÓ binarios equivocados que pasaban el smoke por solo 'correr':
katana/naabu→functional-test, gosec→gosecutil, buf→protoc-gen-buf-lint (detect_go_main eligió un
main helper). El gate ahora localiza el binario cuyo nombre == receta (o alias conocido tofu/mc/
nats/dlv/flux/ct/kubeseal/node_exporter/...); si instaló otro → a needs-review-weekend con el motivo,
NO se firma. Lección eksctl aplicada al gate.
2026-06-27 06:50:03 -04:00
sergio 63f088da46 Etapa G: cosecha-go finde (auto) — promovidos: buf dyff ffuf gau gci gh-dash gitsign gobuster gofumpt gojq golangci-lint golines gosec gotests helmsman kail katana kubeconform kube-score mockgen naabu nuclei popeye stern subfinder vals waybackurls | review: 2026-06-27 06:47:11 -04:00
sergio 0e8d436812 Etapa G: pre-siembra cola finde (41 Go vetadas) en incoming-go/ para el worker 24/7
k8s (stern/kail/popeye/kube-score/kubeconform/kubent/polaris-no/kube-capacity/vals/helmsman),
recon projectdiscovery+tomnomnom (subfinder/naabu/katana/nuclei/gau/waybackurls/gobuster/ffuf/anew/
qsreplace/unfurl), dev (golangci-lint/gofumpt/gci/gotests/mockgen/golines/buf/bazelisk/act/gojq/sq),
security (gosec/nancy/osv-scanner/scorecard/kics/gitsign), git (git-lfs/hub/gitbatch/gotop/gh-dash),
OCI (umoci), inlets, dyff. Misimports dropeados: gf(C)/polaris(rust)/gitlab-runner+traefik(tarball).
2026-06-27 06:45:03 -04:00
sergio c381e1b0c7 Etapa G: modo finde desatendido — worker muele incoming-go/ + harvest-go.sh (cosecha-only gated)
- farm-worker-loop.sh: construye QUEUES='recipes/incoming recipes/incoming-go' (en serie por vuelta;
  la cola Go aislada se muele 24/7 sin pisar el incoming/ del otro agente).
- scripts/farm/harvest-go.sh: cosecha determinista sin IA (cron del laptop). Baja el store sellado,
  y por cada receta SELLADA (cache-hit bajo timeout, NO compila en el hub) hace SMOKE-TEST del binario
  (existe + corre version/--help sin panic/segfault) antes de promover+firmar. Lo que falla el smoke va
  a tandas/needs-review-weekend/ para el lunes. add explícito (nunca -A), push con reintento.
2026-06-27 06:41:28 -04:00
sergio 7545fc635d Etapa G: detect_go_main prefiere cmd/<nombre-receta> entre varios mains
eksctl tiene cmd/eksctl (CLI) + cmd/schema (helper de codegen que panica); detect elegía
arbitrariamente y selló el binario equivocado (schema) — un fallo SILENCIOSO (sella OK pero envía
la herramienta incorrecta). Ahora, a igual clase, el dir cuyo file_name == recipe.name gana. Test
detect_go_main_prefers_cmd_matching_recipe_name. Lección: smoke-testear que el binario instalado es
el ESPERADO, no solo que selló.
2026-06-27 06:28:41 -04:00
sergioandClaude Opus 4.8 7f11f2ed53 Etapa G: stack de entrada para mirada-compositor — libinput + libudev-zero + libevdev + mtdev
mirada-compositor (smithay, default features) enlaza en build input-sys/libudev-sys/drm-sys/
gbm-sys/libseat-sys. drm/gbm/libseat ya están (libdrm/mesa/seatd). Faltaban:

- libudev-zero 1.0.4: libudev SIN udevd (lee /sys y /dev directo) — encaja con la filosofía
  no-systemd de tawasuyu (arje es el init). Alternativa pesada: eudev.
- mtdev 1.1.6: multitouch. config.sub viejo no conoce *-musl ⇒ se reemplaza por el moderno del
  sandbox (autoconf build-aux) antes de configurar.
- libevdev 1.13.4: wrapper de ioctls evdev.
- libinput 1.27.1 (meson): -Dlibwacom=false (sin tablets Wacom), sin debug-gui/tests/docs.

Los cuatro sellados. xkbcommon NO hace falta como build-dep (smithay usa xkbcommon-dl = dlopen);
sí en runtime.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 06:26:34 -04:00
sergio fccd622a39 Etapa G: fix eksctl — instalaba 'schema' (codegen, panica); fuerza flags=./cmd/eksctl
detect_go_main elegía cmd/schema entre los varios mains del repo. Con flags=./cmd/eksctl instala el
CLI real (eksctl version OK). Re-sellado + re-promovido al repo firmado.
2026-06-27 06:25:16 -04:00
sergio 4fb275e233 Etapa G: cosecha go-16 (11) — k8s-ecosystem/carvel/load-testing/TUI Go
cassowary/chart-testing/devspace/eksctl/helm-docs/kapp/kbld/kubectl-tree/kubeseal/peco/plow.
Queue aislado. Diferidos: k3d (go.work), minikube (CGO libvirt), werf (CGO gpgme), fluxcd (go:embed
manifests generados). kubetail dropeado (bash). sealed-secrets→kubeseal.
2026-06-27 06:18:07 -04:00
sergio e2f038e88d Etapa G: manda go-16 al VPS (k8s-ecosystem/carvel/load-testing/TUI Go) — queue AISLADO
15 Go: peco/cassowary/chart-testing/devspace/eksctl/helm-docs/k3d/kapp/kbld/kubectl-tree/plow/
kubeseal/fluxcd(flux)/werf/minikube. kubetail dropeado (script bash, no Go); sealed-secrets→kubeseal.
2026-06-27 06:05:15 -04:00
sergioandClaude Opus 4.8 11386c0a59 Etapa G: mirada-greeter CONSTRUIDO — primera app gráfica tawasuyu sobre el stack
mirada-greeter sellado (store/41fdd015…): el greeter/login de mirada (runtime Elm Llimphi
sobre winit + wgpu) compila ENTERO para musl — 314 crates incl. wgpu/winit/naga/smithay/
llimphi-* — y enlaza dinámico. Valida la cadena completa: stack gráfico (wayland+mesa) →
app GUI tawasuyu real.

Binario: PIE dinámico, DT_NEEDED = sólo libpam.so.0 + musl; EGL/GLES/GBM/wayland/iris se
dlopen-ean en runtime (wgpu/winit), así que el rootfs debe tenerlas (mesa+wayland ya selladas).

Dos blockers resueltos en el camino:
- atspi/accesskit (a11y, vía accesskit_winit): zbus-lockstep-macros #[validate] PANICA
  («File has no extension.») al escanear xml/ de atspi-common y hacer .extension().expect()
  sobre el SUBDIR xml/schemas/ (lib.rs:147). Fix: fase compile custom (réplica de la fase
  Cargo de hammer) que setea LOCKSTEP_XML_PATH a un dir con sólo los .xml.
- PAM: auth-core → pam/pam-sys hace bindgen sobre security/pam_appl.h ⇒ nueva receta
  linux-pam 1.6.1 (libpam.so + headers; build limpio en musl con gcc de Alpine).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 03:45:48 -04:00
sergio 53bc5b3734 Etapa G: cosecha go-15 (12) — messaging/storage/web-services/infra Go
natscli(nats)/centrifugo/consul/nomad/vault/telegraf/harbor-cli/pocketbase/miniflux/filebrowser/
websocketd/minio-client(mc). Queue aislado. telegraf/vault sellaron tras los fixes (GOCACHE→/src +
watchdog robusto). Diferido wuzz (go.sum incompleto). mc=MidnightCommander/etcd misimports dropeados.
2026-06-27 03:42:26 -04:00
sergio c270edade7 Etapa G: watchdog no purga caches Go con CUALQUIER hammer build en vuelo (no solo vendor)
vault (go-15) falló en 'go mod vendor' con '~/.cache/go-build/...: no such file': durante el compile
de telegraf el disco cruzó DISK_HIGH, el watchdog corrió 'go clean -cache', y el vendor de vault (que
usa esa cache) arrancó en la ventana siguiente sin ficheros. El guard anterior solo miraba 'go mod
vendor' activo en ese instante; ahora difiere la purga si hay cualquier 'hammer build' en vuelo.
2026-06-27 03:30:50 -04:00
sergio b3be6c8e3c Etapa G: Go compile usa GOCACHE/GOTMPDIR en /src (disk), no en el tmpfs /tmp
telegraf/vault (binarios Go gigantes) fallaban en el LINK con 'mapping output file failed: no space
left on device': el sandbox monta --tmpfs /tmp (~½ RAM) y el GOCACHE + temp del linker desbordan ese
tmpfs aunque el disco tenga 18G libres. Ahora GOCACHE/GOTMPDIR van a /src (árbol de fuentes bind-
montado, en disco, per-build, lo limpia el watchdog; no se sella). No entra al hash de input (fase
generada) ⇒ no re-sella el corpus Go.
2026-06-27 03:17:50 -04:00
sergio 55b47709d4 Etapa G: manda go-15 al VPS (messaging/storage/web-services/infra Go) — queue AISLADO
13 Go: natscli/centrifugo/harbor-cli/consul/nomad/vault/telegraf/pocketbase/miniflux/filebrowser/
websocketd/wuzz/minio-client(bin mc). Misimports descartados: mc=Midnight Commander (C), etcd
(tarball multimódulo). chartmuseum/jb no en nixpkgs.
2026-06-27 02:46:44 -04:00
sergio d5a58a305d Etapa G: renombra recipes node/blackbox_exporter al name real (pname nixpkgs ≠ attr)
El attr nix era prometheus-{node,blackbox}-exporter pero el pname/binario es {node,blackbox}_exporter;
el fichero ahora coincide con el campo name (convención del corpus).
2026-06-27 02:31:59 -04:00
sergio c84804754e Etapa G: cosecha go-14 (12) — cloud-native/observability/sigstore/data Go
minio/cloudflared/node_exporter/blackbox_exporter/gops/datree/cmctl/tbls/trdsql/dsq/gobetween/
woodpecker-cli. Queue aislado incoming-go/. Diferidos kustomize (multimódulo make→red) y trivy
(encoding/json/v2 tras GOEXPERIMENT). krew/pint/rekor-cli/golang-migrate no en nixpkgs.
2026-06-27 02:30:53 -04:00
sergio c3a4323bdc Etapa G: manda go-14 al VPS (cloud-native/observability/sigstore/data Go) — queue AISLADO
14 Go: kustomize/cloudflared/gobetween/trdsql/dsq/trivy/woodpecker-cli/node_exporter/
blackbox_exporter/gops/tbls/minio/datree/cmctl. krew/pint/rekor-cli/golang-migrate no en nixpkgs.
2026-06-27 02:19:30 -04:00
sergioandClaude Opus 4.8 7131cd4269 Etapa G: MESA iris-only CONSTRUIDA (24.0.9, sin LLVM) — stack gráfico COMPLETO
Mesa sellada: store/607a513c…-mesa con dri/iris_dri.so + libEGL/libgbm/libGLESv2/
libglapi + egl/gbm/glesv2.pc. El stack gráfico para el escritorio tawasuyu (Iris Xe)
queda completo: libdrm✓ wayland✓ wayland-protocols✓ seatd✓ mesa✓.

Decisiones/fixes clave:
- PIN 24.0.9 (no 26.1.1): desde Mesa 24.1 iris REQUIERE intel-clc (kernels OpenCL-C
  internos) ⇒ libclc + clang/LLVM, lo que rompe el plan iris-sin-LLVM. Bisección: 24.0.9
  es el último donde with_clc=FALSE con iris-only sin Vulkan/rusticl. (Decisión del usuario:
  pinear Mesa viejo en vez de construir LLVM.)
- recorte iris-only: -Dllvm=disabled -Dintel-clc=disabled, sin Vulkan/glx/rusticl/codecs/tools.
- packaging (módulo Python puro): el chequeo de versión de mako usa packaging.version y
  Python 3.12 ya no trae distutils ⇒ sin packaging fallaba con el engañoso «mako required».
- PYTHONPATH al site-packages en configure Y compile (el codegen mako corre en ninja).
- libffi en deps: lo pide wayland-client.pc (Requires: libffi) al resolver cflags.
- mesa-version-script-comma.patch: el target DRI emitía «-Wl,--version-script dri.sym»
  (token separado) que zig cc reordena ⇒ «cannot find version script --end-group» al ligar
  libgallium_dri.so. La forma coma «-Wl,--version-script,dri.sym» (un token) lo arregla.

Runtime pendiente (ensamblado de rootfs): iris_dri.so/libEGL necesitan libz.so.1, libzstd.so.1
(de la base), libdrm.so.2, wayland .so. mirada-greeter (Cargo, link dinámico a Mesa) ya desbloqueado.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 02:13:23 -04:00
sergio 03a9d92ea6 Etapa G: cosecha go-13 (14) — dev-tools/linters/OCI/git Go (delve/oras/regctl/glab/wire/...)
Queue aislado recipes/incoming-go/ (sin tocar incoming/ del otro agente). 14/16: 2 reintentados
tras el fix del watchdog (dnscontrol/lazysql). Diferidos go-mockery (go.work) y usql (CGO sqlite).
2026-06-27 01:11:03 -04:00
sergio ad7ec4aea4 Etapa G: watchdog protege árboles con 'hammer build' en vuelo (fase host vendor/resolve)
go-13 (dnscontrol/lazysql, árboles de deps Go enormes) destapó otra race del watchdog: durante el
fetch/'go mod vendor'/resolve_phases (host-side, antes del bwrap) el árbol no está bind-montado ⇒ el
watchdog lo borraba a mitad del vendor → go.mod desaparecía → 'receta sin compile, heurística no
encontró build system'. Ahora además protege work/sources/<name>-* si <name> tiene un proceso
'hammer build' activo (cubre toda la vida del build, no solo la fase sandbox).
2026-06-27 01:07:09 -04:00
sergioandClaude Opus 4.8 0b3646d204 Etapa G: prerequisitos de Mesa — mako/markupsafe + PIC en libs base C
Mesa necesita el codegen Python `mako` (dispatch GL/GLES, formatos) y éste importa
`markupsafe` a nivel de módulo. Ambos como módulos Python puros (igual que meson):
se copia el paquete a site-packages de python3.12, sin pip/wheel. markupsafe cae a
su backend `_native` (sin compilar la extensión C `_speedups`). Verificado import +
render de Template.

PIC en libs base C (zlib, zstd, expat; libffi ya en el commit anterior): el .a estático
lleva objetos PIC para poder enlazarse DENTRO de bibliotecas compartidas — Mesa liga
libz/libzstd/libexpat/libffi en sus .so y sin PIC falla con
«R_X86_64_PC32 ... recompile with -fPIC». PIC es superset (sigue sirviendo para enlace
estático de exes/toolchain); la invalidación de caché de los dependientes es perezosa y
produce artefactos equivalentes. Mismo patrón aplicado y verificado con libffi→wayland.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 01:05:25 -04:00
sergio 1ad71de885 Etapa G: manda go-13 al VPS (dev-tools/linters/OCI/git Go) — queue AISLADO incoming-go/
16 recetas Go (glab/usql/slides/lazysql/git-sizer/oras/regctl/govulncheck/dnscontrol/gocyclo/
yamlfmt/actionlint/protoc-gen-go/wire/delve/go-mockery) en recipes/incoming-go/, separado de
recipes/incoming/ que ahora comparte el otro agente (stack gráfico tawasuyu). glab/yamlfmt
reescritas de import Alpine→formato Go limpio. mockery/stringer/dlv/revive no importaron (dlv→delve,
mockery→go-mockery sí).
2026-06-27 00:59:33 -04:00
sergioandClaude Opus 4.8 6fb7fd36d0 Etapa G: wayland + wayland-protocols CONSTRUIDAS (scanner desbloqueado)
Root cause real del bloqueo de wayland: NO era bug del wayland-scanner ni del XML
(ambos verificados OK). En el sandbox el scanner in-tree se compila ENLAZADO DINÁMICO
contra la musl (zig cc nativo no produce estático acá), y bajo musl-dinámico
`freopen(@OUTPUT@,"w",stdout)` queda roto por la copy-relocation de `stdout`: trunca el
archivo de salida pero manda el header generado a stdout → @OUTPUT@ vacío → `WL_SHM_FORMAT_*`
/ `wl_*` «undeclared» al compilar libwayland.

Fix: wayland-scanner-dup2-output.patch redirige la salida con `dup2(fd, STDOUT_FILENO)`
(nivel descriptor) en vez de `freopen` → robusto al modo de enlace. Verificado byte-a-byte:
salida idéntica a la del scanner estático (217484 B al archivo).

Segundo blocker (libwayland-server.so): libffi.a era no-PIC → `R_X86_64_PC32 ... recompile
with -fPIC` al ligarlo dentro de una .so. libffi ahora con --with-pic (superset; sigue
sirviendo para enlace estático). Mesa necesitará lo mismo en zlib/zstd/expat.

Restaura recipes/samurai.toml (lo necesita el stack adaptado de recipes/: libdrm/seatd/
wayland; las otras build-deps —meson/pkgconf/python3/expat/libffi— ya viven en recipes/).

Sellados: wayland (libwayland-{client,server,cursor,egl}.so + scanner + .pc),
wayland-protocols (XML + .pc). Queda mesa (iris-only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 00:52:16 -04:00
sergio 5126a8b679 Etapa G: devuelve el stack gráfico Mesa a recipes/incoming/ (es de otro agente, tawasuyu)
Revierte el parqueo de 370e7b7: mesa/wayland/wayland-protocols/libdrm/seatd/samurai/meson +
patches son trabajo en curso de otro agente para el escritorio tawasuyu (commit 00339b6), no
cruft. samurai queda en su versión desarrollada (clon C de ninja, zig 0.13.0). syncthing sigue
diferido (es de go-12, build especial).
2026-06-27 00:33:22 -04:00
sergioandClaude Opus 4.8 93e3ea28d2 Etapa G: wayland root cause CONFIRMADO — scanner musl lee input vacío
Verificado que la fuente extraída protocol/wayland.xml está completa (165075 B) y
expat OK ⇒ el wayland-scanner compilado static-musl recibe el XML completo pero
emite headers vacíos y sale 0 (bug de runtime, falla con zig default y 0.13.0). FIX
recomendado: construir el scanner NATIVO (build-time only, no se shippea) y apuntar
libwayland al scanner externo; libwayland-{client,server} sí con musl/zig.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 00:14:03 -04:00
sergioandClaude Opus 4.8 060e24e564 Etapa G: debug wayland-scanner — genera headers vacíos (input vacío a expat)
El build de libwayland falla: wayland-scanner produce headers de protocolo vacíos
→ wl_*/WL_SHM_FORMAT_* undeclared. Diagnóstico documentado en la receta y en
docs/14-mesa-stack.md §Estado: el scanner sale 0 sin emitir; por stdin expat dice
'no element found at line 1 col 0' (input vacío). Descartado samurai-ordering (-j1
falla igual) y libexpat (estático, sin símbolos glibc-only). Resultados
inconsistentes entre corridas (wayland.xml 165KB vs vacío) → sospecha de extracción
.tar.xz no determinista, lectura de input miscompilada, o estado tocado por el farm.
Siguiente: corrida aislada que verifique el tamaño del wayland.xml extraído.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 00:12:14 -04:00
sergio 66ed94d4e0 Etapa G: corrige nota wayland (no es libexpat — es estático en hammer) 2026-06-26 23:59:37 -04:00
sergioandClaude Opus 4.8 99bbeac54a Etapa G: stack Mesa — 4/7 construidas (samurai, meson, libdrm, seatd)
Adapta las recetas importadas a fases hammer (meson/samurai directos, link=dynamic)
y construye+sella la base del stack gráfico para el escritorio tawasuyu:

- samurai: zig 0.13.0 (el default miscompila musl → reallocarray falla en runtime)
- meson:   Python puro, copia mesonbuild/+wrapper (sin wheel/gpep517 que hammer no tiene)
- libdrm:  core-only (GPU helpers disabled) → sin libpciaccess; iris usa libdrm core
- seatd:   libseat.so.1, -Dwerror=false (CMSG_NXTHDR de musl dispara -Wsign-compare)

Pendiente (docs/14-mesa-stack.md §Estado): wayland (los headers de wayland-scanner
no aparecen, prob. libexpat.so en el scanner), wayland-protocols (bloqueada por
wayland) y mesa (la grande, recortada iris-only). meson validado con zig cc sobre
proyectos meson reales (libdrm, seatd).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 23:58:37 -04:00
sergio e6ee70d783 Etapa G: cosecha go-12 (18) — terraform/infra/k8s (opentofu/helm/packer/rclone/terragrunt/...) 2026-06-26 23:52:01 -04:00
sergio 370e7b7a20 Etapa G: limpia cola go-12 — parquea batch gráfico C a hold-nongo + difiere syncthing
- mesa/wayland/wayland-protocols/libdrm/seatd/samurai/meson + patches: batch C de gráficos previo
  que jamás se mandó al worker, arrastrado en incoming/. Parqueado en tandas/hold-nongo/.
- syncthing: build especial (genera la GUI embebida 'auto.Assets' vía go generate/build.go) ⇒
  diferida a staged-fallidos con el motivo. Quedan 18 go-12 limpias en la cola.
2026-06-26 23:51:05 -04:00
sergioandClaude Opus 4.8 00339b625e Etapa G: cola del stack gráfico Mesa (iris) para el escritorio tawasuyu
Importa de Alpine aports (con parches musl) las recetas del stack que el greeter
real de mirada necesita en el rootfs de producto: libdrm 2.4.134, wayland 1.25.0,
wayland-protocols 1.48, seatd, mesa 26.1.1, + build-tools meson 1.11.1 y samurai
(ninja). Quedan en recipes/incoming/ como puntos de partida: traen los parches
musl de Alpine pero usan helpers de abuild — falta adaptarlas a fases hammer
(meson/samurai directos, link=dynamic), como elfutils.

docs/14-mesa-stack.md fija el plan: iris-only ⇒ SIN LLVM/Vulkan/X11 (el driver
gallium iris no necesita LLVM), lo que recorta clang/llvm/libclc/spirv/bindgen.
DAG de build (hojas→raíz) + estado por receta + el lado tawasuyu (recetas Cargo
arje-splash/net-bring-up estáticas ya construibles; mirada-greeter dinámico,
bloqueado por mesa). Contraparte de la seed arje-tawasuyu del monorepo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 23:41:34 -04:00
sergio 3b23463ac1 Etapa G: detect_go_main ve el main bajo header de comentario de bloque
cmd/helm/helm.go arranca con un header Apache /* ... */ cuyas líneas internas no llevan '*';
el filtro por-línea ingenuo de is_main_go cortaba en 'Copyright ...' y daba 'no es main' ⇒
detect_go_main no hallaba cmd/helm y caía a '.' (raíz sin .go → 'no Go files in /src'). Ahora
rastrea el estado dentro/fuera de bloque /* */. Afecta a cualquier .go con header de bloque.
Test: detect_go_main_sees_main_under_block_comment_header.
2026-06-26 23:38:47 -04:00
sergio 06ba417336 Etapa G: granja Go pesada — watchdog no purga modcache con vendor activo + syncthing main en cmd/
go-12 (terraform/k8s) destapó la race: con árboles de deps de varios GB en paralelo, el disco
cruza DISK_HIGH y el watchdog corría 'go clean -modcache' a mitad de los 'go mod vendor' en vuelo
(.partial: no such file) ⇒ 5 recetas no convergían. Ahora difiere la purga del modcache si hay un
vendor de host activo (la purga de work/sources ya libera lo grueso y es segura). syncthing: main
real en ./cmd/syncthing (la raíz tiene build-constraints que excluyen todo).
2026-06-26 23:32:12 -04:00
sergio 5fb24e0deb Etapa G: corrige misimport helm (mtytel/synth → helm/helm k8s v4.2.1) 2026-06-26 23:26:03 -04:00
sergio 9af81626e9 Etapa G: manda go-12 al VPS (terraform/infra/k8s: opentofu/helm/packer/rclone/syncthing/...) 2026-06-26 23:19:35 -04:00
sergio f2e5aede14 Etapa G: cosecha go-11 (19) — recon/projectdiscovery (alterx/asnmap/cdncheck/tlsx/uncover/...) 2026-06-26 23:18:03 -04:00
sergio f068627e98 Etapa G: manda go-11 al VPS (recon/projectdiscovery) 2026-06-26 22:51:41 -04:00
sergio a5d2442211 Etapa G: cosecha go-10 (16) — config-lang/k8s-dev/recon 2026-06-26 22:51:31 -04:00
sergio ca121b5961 Etapa G: manda go-10 al VPS (jsonnet/cue/ytt/kpt/recon) 2026-06-26 22:36:48 -04:00
sergio 681ca509a0 Etapa G: cosecha go-9 (16) — linters/dev-tools Go 2026-06-26 22:36:36 -04:00
sergio ea4efdc8b6 Etapa G: manda go-9 al VPS (linters/dev-tools: shfmt/vale/goawk/gotestsum/...) 2026-06-26 22:26:52 -04:00