Commit Graph
375 Commits
Author SHA1 Message Date
sergio de3ab6e427 Etapa G: cosecha-go finde (auto) — promovidos: gh-ost git-chglog gopass hostctl lefthook svu | review: temporal-cli(bin=gen-commands) 2026-06-29 22:52:37 -04:00
sergio 199ce9b9dd Etapa G: harvest lock STALE-AWARE (PID; roba si el dueño murió) — un lock huérfano bloqueó el cron 16h
+ dolt: corregido, necesita ICU4C (go-icu-regex), no oniguruma. oniguruma queda en el corpus (útil p/ otros regex).
2026-06-29 22:52:24 -04:00
sergio 15690d72c6 Etapa G: dolt full (subdir=go + cgo=true + oniguruma) — destrabado el regex cgo-externa 2026-06-29 15:58:07 -04:00
sergio 3f9121798f Etapa G: fetch extrae tarballs con tar --no-same-owner (fix de clase)
Como root (granja), tar preservaba el uid del tarball → el sandbox (userns) no podía chmod/escribir
esos ficheros → configure autotools fallaba (oniguruma: Permission denied creando Makefile). Extraer
como root sin preservar owner lo arregla para TODO tarball. oniguruma vuelve a configure plano.
2026-06-29 15:54:46 -04:00
sergio 533ed500c7 Etapa G: oniguruma — chmod -R u+w antes de configure (tarball extrae src/ sin escritura) 2026-06-29 15:49:27 -04:00
sergio 87016ad173 Etapa G: receta oniguruma 6.9.10 (lib C regex, autotools) — prerequisito cgo p/ dolt y jq-likes 2026-06-29 15:46:10 -04:00
sergio b249cda7a1 Etapa G: gocryptfs PROMOVIDO con openssl (cgo-lib-externa validado: libcrypto linkeado vía overlay+pkg-config, estático) 2026-06-29 15:43:44 -04:00
sergio 6e5dc54686 Etapa G: gocryptfs cgo+openssl (caso cgo-lib-externa: linkea libcrypto vía pkg-config) 2026-06-29 15:38:23 -04:00
sergio dfaca62f03 Etapa G: csvtk PROMOVIDO (v0.33.0; nota 'subdir' era vieja, go.mod en raíz) + dolt subdir=go validado (queda por cgo+oniguruma externa) 2026-06-29 15:14:10 -04:00
sergio c583c4d679 Etapa G: frontera go.mod-en-subdir — knob [build] subdir (vendor/detect/compile en src/<subdir>)
Destraba proyectos Go cuyo módulo no está en la raíz (dolt→go, csvtk→subdir): vendor_go_deps corre en
el subdir, detect_build_system/detect_go_main operan ahí, y el compile hace 'cd <subdir>' primero.
Test go_subdir_compiles_in_subdir.
2026-06-29 15:06:35 -04:00
sergio 49ce5cf051 Etapa G: granja — siembra +8 Go (gopass/lefthook/gh-ost/gocryptfs/temporal-cli/svu/git-chglog/hostctl)
flyctl no en nixpkgs; viddy dropeado (es Rust ahora, no Go). gocryptfs puede pedir CGO+openssl externa.
2026-06-29 14:56:18 -04:00
sergio b01d133994 Handoff → agente tawasuyu: tareas mesa-nouveau/NVK + firmware GSP + USB live para el tester NVIDIA
El kernel linux-generic 7.1.2 (b3:fded43c0…, nouveau KMS) está listo en el store. Faltan, de su frente:
mesa con nouveau/NVK (la actual es iris-only), firmware nouveau GSP en /lib/firmware, y el armado del
USB. mirada en NVIDIA necesita los tres además del kernel.
2026-06-29 14:49:58 -04:00
sergio 89c94e4435 Etapa G: linux-generic — excluye amd/ del Makefile drm (sledgehammer; amdgpu ICE en 7.1+gcc gueto)
syncconfig re-activaba amdgpu pese a kconfig -d (DRM_AMD_DC default-y), y amdgpu_userq_fence.c hace
ICE sin mensaje con el gcc del gueto. Borro las líneas obj-$(CONFIG_DRM_AMDGPU)+= amd/ del Makefile
del drm: amd nunca se compila, garantizado. i915+radeon+nouveau intactos. amdgpu (AMD moderno) = v2.
2026-06-29 13:04:34 -04:00
sergio 348b5ebe42 Etapa G: linux-generic — patrón probado (bzImage directo, amdgpu+DC+HSA off en config principal)
Revierte el make-prepare separado (disparaba syncconfig que re-activaba amdgpu). Como linux-metal:
-d DRM_AMDGPU -d DRM_AMD_DC -d HSA_AMD antes de olddefconfig + bzImage directo. Single clean build.
2026-06-29 12:52:58 -04:00
sergio 743b943861 Etapa G: linux-generic — disablea amdgpu + TODOS sus dependientes (DC/DC_FP/HSA_AMD/SI/CIK)
El -d solo-amdgpu dejaba DRM_AMD_DC/HSA_AMD =y → syncconfig (make prepare) re-activaba amdgpu para
satisfacerlos. Disablearlos juntos elimina la inconsistencia.
2026-06-29 12:47:35 -04:00
sergio 9fa01e50f9 Etapa G: linux-generic — fuerza amdgpu OFF tras olddefconfig (defconfig lo dejaba =y pese al -d previo) 2026-06-29 12:29:20 -04:00
sergio eeaf946265 Etapa G: linux-generic — 'make prepare' serie antes del bzImage paralelo + amdgpu OFF (-d)
El -j$(nproc) arrancaba a compilar antes de que prepare generara asm-generic/*.h + include/generated/*
→ cascada de 'fatal error: No such file'. prepare serie primero lo resuelve. amdgpu deshabilitado bien
(defconfig lo dejaba =y).
2026-06-29 12:16:19 -04:00
sergio 26ccce9ad7 Etapa G: linux-generic v1 sin amdgpu (i915+radeon+nouveau) — el más grande/riesgoso, a v2 2026-06-29 12:02:31 -04:00
sergio f70993ef5a Etapa G: kernel GENÉRICO 7.1.2 para testers (linux-generic.toml) — i915+amdgpu+nouveau
Un bzImage que bootea hardware variado (Intel/AMD/NVIDIA), no clavado a un laptop. GPU built-in las
3 familias + simpledrm fallback; squashfs+overlay (live USB); storage/USB/input/EFI/VFAT/ISO9660
amplios; monolítico (arje-zero PID1, sin módulos). NVIDIA: el kernel da KMS por nouveau, pero mirada
en NVIDIA necesita ADEMÁS firmware GSP en la imagen + mesa con nouveau/NVK (frente del otro agente).
linux.toml (6.16, baseline selfhost) y linux-metal NO se tocan.
2026-06-29 11:35:46 -04:00
sergio d47be16a8b Etapa G: frontera CGO — knob 'cgo=true' (CC=zig cc + static) destraba sqlite bundled-C
vendor_go_deps/BuildSys::Go por defecto compila CGO_ENABLED=0 (Go puro estático). Nuevo campo
[build] cgo=true ⇒ CGO_ENABLED=1 CC="zig cc" (musl nativo del sandbox) + -linkmode=external
-extldflags=-static. Validado: usql + sq (driver sqlite3 mattn, bundled-C) → estáticos y CORREN
(usql 0.0.0-dev, sq v0.0.0-dev). Tests go_cgo_knob_switches_compile_env. cgo contra libs C EXTERNAS
(gpgme/libvirt en werf/minikube/skopeo) aún requiere esas recetas; esto cubre la clase bundled-C.
2026-06-29 11:04:27 -04:00
sergio 4bb5e67e82 Etapa G: harvest-go sale temprano si la cola está vacía (evita rsync del store de GB en balde) 2026-06-29 10:35:19 -04:00
sergio b9a3e55dd7 Etapa G: promueve envconsul/levant/pgweb/steampipe (reseed lunes); glooctl diferido (monorepo gloo) 2026-06-29 10:34:26 -04:00
sergio 73212b72d1 Etapa G: consul-template (cosecha cron, commit trunco por colisión con sesión activa) 2026-06-29 10:17:32 -04:00
sergio efd670a666 Etapa G: git-town PROMOVIDO (go.work, Git Town 23.0.3) + kustomize flags=./kustomize + gate alias go-mockery→mockery 2026-06-29 10:13:16 -04:00
sergio c2ebf15b6b Etapa G: frontera go.work — go-mockery(mockery)+k3d CONSTRUYEN con 'go work vendor'
Validados estáticos (k3d v5-dev, mockery corre). Primeros frutos del soporte go.work multimódulo.
2026-06-29 10:07:27 -04:00
sergio f5880331ed Etapa G: soporte go.work multimódulo (vendor_go_deps usa 'go work vendor')
Destraba la clase workspace (go-mockery/k3d/git-town/csvtk): con go.work, GOWORK=off + 'go mod
vendor' sólo vendoreaba el módulo raíz → 'inconsistent vendoring' en el build. Ahora si hay go.work
se usa 'go work vendor' (go 1.22+, vendor consistente de todo el workspace); el trigger y
detect_build_system también reconocen go.work (workspace sin go.mod raíz). Test detect_go_when_only_go_work.
2026-06-29 09:57:06 -04:00
sergio 388bf9b89c Etapa G: reseed lunes (+6 Go: steampipe/pgweb/consul-template/envconsul/levant/glooctl)
Dropeados re-imports ya-en-corpus (rqlite/octosql/trufflehog/cosign/gptscript/cue), grype/syft
(Alpine NOGO, ya en hold-nongo) y dolt/kustomize (diferidos: multimódulo).
2026-06-29 09:15:58 -04:00
sergio 169b02d1c8 Etapa G: cosecha-go finde (auto) — promovidos: soft-serve tfsec | review: 2026-06-29 09:14:02 -04:00
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