97 Commits
Author SHA1 Message Date
sergioandClaude Opus 5 85c25619ad recipes: wlr-randr 0.5.0 — el testigo ajeno del protocolo de salidas
La paridad cosmic no se demuestra con un cliente nuestro (eso probaria que nos
entendemos con nosotros mismos), se demuestra con la herramienta que usa el
resto del mundo. wlr-randr habla wlr-output-management-unstable-v1, que mirada
sirve. Entra a base-system-1 con ese rol acotado.

C sobre meson, 28 KB, trae el XML del protocolo adentro: solo wayland-client.
Tarball de release y no el -/archive/ autogenerado de GitLab, que no es estable
byte a byte y rompe el sha256 pinneado con el tiempo.

Queda anotado en la receta lo que hoy NO puede hacer, para no acusar al paquete:
en mirada apply/test de zwlr_output_configuration_v1 contestan failed, asi que
wlr-randr lista bien y no cambia nada. Cuando mirada implemente el apply, esta
misma receta pasa a probar tambien el apply.

Por lo mismo no entran kanshi ni way-displays: no son herramientas sino una
funcion —perfiles de salida por hotplug— y su lugar es adentro de mirada, que ya
tiene el estado. Instalarlos hoy seria ademas inutil.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 07:44:00 -04:00
sergioandClaude Opus 4.8 ec28a9b394 catálogo objetivo P5: tandas a archivo, y el triaje que cierra el lazo
tandas/README.md declara los 55 ficheros ARCHIVO de campañas pasadas (no se
borran: su git log es la crónica de cada frente) y documenta de dónde sale el
trabajo ahora. import-batch.sh -f sigue vivo como vía de escape, no como camino.

Lo que faltaba para que la cola fuera derivada de verdad era el paso humano, y
estaba sin forma: 137 candidatos clasificables sólo en la cabeza de alguien.
triaje.py les da forma durable — docs/state/frontera-triaje.toml, 170 candidatos
unificados de los 3 perfiles. Cada veredicto cierra un lazo distinto:

  hueco    → raíz en targets.toml ⇒ nace un nodo `wanted`, el sembrador lo
             siembra y el drenaje lo ordena (= trabajo nuevo para el worker)
  opcional → registrado, deja de reaparecer como pregunta
  nix-ismo → vuelve a seed-graph.py como descarte ⇒ el sembrador APRENDE de su
             propio triaje y cada corrida sale más limpia

Sincronizar NUNCA pisa un juicio humano: agrega los nuevos y marca ausente=true
los que dejaron de aparecer (progreso, o cambio de nixpkgs — se ve en el diff).
`sugerencia` propone con evidencia mecánica pero `veredicto` arranca en
`pendiente`: la heurística abarata el juicio, no lo cierra.

Lazo verificado punta a punta: python3-3.14.6-env marcado nix-ismo → --aplicar
lo escribe al descarte → seed-graph.normalizar() lo devuelve clasificado y deja
de contarlo como hueco. Probado y revertido; los 170 siguen pendientes.

Cadena cerrada y corriendo: targets.toml → build-state.json → drenaje.json →
worker, regenerada por el latido cada 30min. El único paso que pide una persona
es el triaje.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 18:20:30 -04:00
sergioandClaude Opus 4.8 e568f7714b matar-gcc: el doc de deuda decía 47 recetas; son 16 (recontado parseando TOML)
Eran 47 el 2026-07-16. Desde entonces se migraron 31 y nadie actualizó el doc, así que el frente
se leía 3x más grande de lo que es. Recontado hoy: 16 = 4 C (file/libgcrypt/libsodium/linux-pam)
+ 12 Rust con sys-crate C.

CÓMO CONTAR, documentado en el doc: NO con grep. `grep -l 'compiler = "gcc"' recipes/*.toml` da
18 — cuenta bzip2 y pigz, que ya son zig-cc y sólo MENCIONAN gcc en un comentario. El grep no
distingue campo de comentario; hay que parsear el TOML. (Me comí ese error yo mismo antes de
medirlo bien.) Y la otra dirección también engaña: pigz DECLARABA zig-cc y construía con gcc igual
(7d86dbf) — la receta dice la intención, harkaq dice el hecho.

xplr estaba mal clasificada como 'C puro': es Rust (embebe mlua-sys, que compila Lua en C).

LO QUE IMPORTA — las 12 Rust no son 12 problemas, son uno: bajo zig-cc el link falla con símbolos
de unwinding sueltos (_Unwind_GetCFA/_Unwind_DeleteException) que aporta libgcc. La deuda no es
'zig miscompila 12 programas', es 'falta un runtime de unwinding para el C de los sys-crates'.

Y converge con el frente static: helix y tuc salían dinámicas arrastrando libgcc_s.so.1 de Alpine
DENTRO del binario — la misma libgcc, la misma razón, medida en runtime en vez de en build. Un fix
del unwinding cerraría los dos frentes a la vez. Precedente: cmake se arregló con
-static-libstdc++ -static-libgcc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 09:45:22 -04:00
sergioandClaude Fable 5 7fa12ed7ce piloto harkaq-trace MEDIDO en builds reales: ceguera-overlay confirmada (0 eventos de store, 206 de binds) y salida validada — marcar /proc/<pid-bwrap>/root cae en el SB del overlay y los paths salen en el idioma de la política; zlib-ng SELLADA b3:93d1da8a al 1er intento; dwarves BLOQUEADA (elfutils sellado sin libdw ⇒ pide variante elfutils-libdw)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 00:05:54 -04:00
sergioandClaude Fable 5 d48f9be636 zlib-ng 2.2.4 + dwarves 1.30 al catálogo (tanda planes-freebsd-2, sha256 verificados)
zlib-ng: el veredicto T5 hecho receta — dispatch SIMD en runtime en vez de
variantes v3; modo ZLIB_COMPAT, zlib.toml intocada (dep del frente rust).
dwarves: pahole para destrabar sched-ext; el kernel NO lo declara aún (el
análisis de repro BTF/pahole-skew va primero). Ambas al worker.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 23:52:24 -04:00
sergioandClaude Fable 5 4aa436ceb8 libarchive 3.8.1: receta mínima (bsdtar estático, sólo zlib) + tanda para el worker — plan-freebsd T3.1, sha256 verificado
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 22:16:02 -04:00
sergioandClaude Opus 4.8 2d8514555c matar-gcc: riesgo GUI VERIFICADO — el ABI de las libs migradas es idéntico
Debí evaluar esto ANTES de migrar, no después: las 29 tienen 36 consumidores,
incl. toda la cadena GUI (cairo/gtk4/pango/harfbuzz/fontconfig/libadwaita) +
mesa/mirada. 6 migradas son deps de ese stack, que por regla no se rebuildea en
el laptop.

No se pudo construir la GUI completa en ninguna máquina (laptop: python3 no
construye — gotcha conocido, verificado que es PREEXISTENTE revirtiendo mis deps;
worker golden: busybox no construye — store parcial). Así que se verificó lo que
decide el link: el ABI.

  freetype 90 · expat 12 · libpng/libpng16 385 · libffi 68 símbolos globales
  → IDÉNTICOS entre gcc y zig ⇒ la GUI linkea igual.

Dos falsos positivos cazados al medir: . comparaba libpng.a contra
libpng16.a (libs distintas), y  cuenta símbolos INTERNOS de los
.o que difieren entre compiladores sin tocar el ABI (294 'diferencias' espurias).
Lo correcto: mismo fichero + --extern-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 20:03:35 -04:00
sergioandClaude Opus 4.8 6c864dcee3 matar-gcc: balance final — 29 migradas, 4 matraca dura diagnosticada
Cerré el frente C-puras. Las 4 que no migran son matraca DURA con gcc
justificado (no inercia):
  file      → el binario zig SEGFAULTEA generando magic.mgc (persiste con -O0
              ⇒ codegen, no optimización)
  linux-pam → 'cannot run C compiled programs' (binario zig no corre)
  libgcrypt/libsodium → no construyen (asm criptográfico)

De 47 compiler=gcc: 29 migradas + 4 matraca dura (gueto gcc legítimo) + 11 Rust
diferidas + 3 no medidas. compiler=gcc: 47 → 18.

harkaq hizo el ciclo completo: reveló las 47 (invisibles bajo 'gcc esperada'),
midió cuáles migran, y el residuo quedó JUSTIFICADO con diagnóstico, no supuesto.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:40:48 -04:00
sergioandClaude Opus 4.8 bf840915f7 matar-gcc: curl+libevent migradas + BALANCE final (27 recetas C a zig)
curl (dep de muchos) y libevent verificadas en laptop: construyen+corren con zig.
Total sesión: 27 recetas C migradas gcc→zig-cc.

BALANCE de las 47 que harkaq nombró:
  27 MIGRADAS  (deuda histórica: zig 0.13/0.16 segfaultaba, zig mejoró)
   4 matraca real: libgcrypt/libsodium (crypto asm), file (magic), linux-pam
   2 sin confirmar: libevdev, mtdev (libs, smoke-test no verifica)
  11 Rust diferidas (gcc para el C embebido de sys-crates, otra evaluación)

matar-gcc pasó de '47 invisibles' (harkaq las reveló al leer el compiler=) a
27 cerradas + cola nombrada. Reporte: tandas/needs-review-harkaq/migracion-zig.md

OJO: re-hashea las 27 del índice firmado 748 ⇒ re-firma en próximo packaging.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 13:42:06 -04:00
sergioandClaude Opus 4.8 2d1d40a6f1 matar-gcc: migra-zig.sh + veredicto medido — las C-puras SON granjeables (~85%)
¿Las 47 compiler=gcc que harkaq nombró son factibles de migrar a zig, o hay que
matracar? MEDIDO, no adivinado.

migra-zig.sh: para cada receta, build con zig-cc + SMOKE-TEST del binario —
porque el motivo del gcc era segfault en RUNTIME, no fallo de build; un artefacto
que sella pero segfaultea es peor que gcc. Idempotente, acumula por lotes (probar
47 no cabe en un timeout).

Muestra de 13 C-puras: 11 MIGRAN (bzip2 expat json-c gzip htop less libpng
libyaml zstd libffi xz), 2 MATRACA (pcre2: linker version script que zig ld no
soporta; file: subdir magic). ≈85% yield.

VEREDICTO: es GRANJEADA para las ~36 C-puras. El compiler=gcc era deuda histórica
— marcadas con zig 0.13/0.16 (que segfaultaban C clásicos), zig mejoró, el gcc
quedó por inercia. ~85% migran solas; el residuo (~15%) es matraca individual por
causas concretas del build-system.

Las 11 Rust con sys-crate C son otra evaluación (gcc para el C embebido de
libgit2-sys, no el Rust) — se deja para después.

Rollout = decisión del usuario (re-hashea recetas del índice firmado 748). Correr
migra-zig.sh sobre las 47 en la granja VPS da la lista final; promover las
migrables re-firma el índice. Reporte: tandas/needs-review-harkaq/migracion-zig.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 12:31:53 -04:00
sergioandClaude Opus 4.8 71ec92345f harkaq: el clasificador distingue gcc-compilador de gcc-sonda — matar-gcc son 47 recetas
El límite del modelo que mtdev destapó, cerrado. harkaq clasificaba /usr/bin/gcc
como "sonda esperada" SIEMPRE, así que marcaba `Hermetico` a las recetas que
compilan CON el gcc de Alpine (compiler=gcc = CC=gcc, musl+GNU ld). Estuvo ciego
a la deuda de compilador todo el barrido.

Fix en harkaq-suggest: 5º arg = la receta medida. Si usa compiler=gcc, los
frontends de gcc (gcc/cpp/c89/c99/g++/cc/ld/as) dejan de ser "esperada" y pasan a
DEUDA DE COMPILADOR (matar-gcc). Para compiler=zig-cc (default, 714 recetas) gcc
sigue siendo sonda de configure — esperada, como antes. Verificado: mtdev(gcc) →
deuda de compilador; zlib(zig) → sin deuda.

EL HALLAZGO: matar-gcc no es "{kernel, cmake}" como creía la memoria del proyecto.
Son 47 recetas (36 C puro + 11 Rust con sys-crate C) que dependen del gcc de
Alpine. harkaq lo reveló sólo cuando aprendió a leer el compiler= de la receta —
antes gcc-como-sonda-esperada ocultaba una deuda mayor que toda la que sí detectó.
Reporte: tandas/needs-review-harkaq/deuda-compilador-matar-gcc.md.

Cada una usa gcc porque zig-cc la miscompila (documentado en su receta). Acción
por receta: migrar a zig cuando zig mejore, o aceptar el escape como deuda
conocida. Ahora es una deuda NOMBRADA y contada, no invisible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 09:43:06 -04:00
sergioandClaude Opus 4.8 a1ab8774c5 harkaq: mtdev — deuda de config.sub CERRADA con patch soberano (+ límite del modelo descubierto)
El único caso de deuda de soberanía del barrido: mtdev copiaba el config.sub/guess
del autoconf de ALPINE (/usr/share/autoconf/build-aux/) porque el suyo (1.1.6) no
conoce *-musl. harkaq lo cazó como lectura no declarada del rootfs.

CERRADO con recipes/mtdev-config-sub-musl.patch: 11 líneas, +`-musl*` a la
whitelist de OS del config.sub DEL PROPIO TARBALL. Ahora es input soberano
(hasheado con la receta), sin leer Alpine. Se quitó el `cp /usr/share/autoconf/...`
del configure. Verificado: mtdev construye (b3:47708e40) sin tocar /usr/share/autoconf.

Método (con un tropiezo honesto): casi afirmo que el `cp` era espurio porque el
config.sub en work/sources/mtdev daba exit 0 con musl — pero ese source estaba
MUTADO por un build previo (el cp lo había reemplazado por el de Alpine). El
tarball ORIGINAL fresco NO conoce musl (exit 1). Casi valido sobre un source
contaminado; me salvó chequear el exit code, no el output.

DESCUBIERTO AL CERRARLO: mtdev tenía DOS deudas de Alpine, no una. También usa
`compiler = "gcc"` (gcc de Alpine, no zig). Bajo la jaula la política deniega
/usr/bin/gcc (sonda esperada) y el configure da "C compiler cannot create
executables". Es parte de matar-gcc (kernel, cmake, mtdev), frente aparte.

LÍMITE DEL MODELO (nuevo, documentado en needs-review): harkaq clasifica gcc como
"sonda esperada" SIEMPRE, así que marca la fase Hermetico — pero para una receta
compiler=gcc, gcc es ESENCIAL y el build no compila sin él. harkaq no distingue
"gcc sondeado (ignorable)" de "gcc = el compilador". Caso límite real del
clasificador; no invalida el cierre de config.sub (producción no usa la jaula).

make declarado en mtdev (deuda declarable restante). config.sub fuera de
needs-review; queda anotado el gcc-compilador.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 08:04:03 -04:00
sergioandClaude Opus 4.8 895e8202fa harkaq: revisadas las 5 irreducibles — 2 recuperadas, 3 casos genuinos diagnosticados
Ninguna de las 5 necesitaba una receta nueva. Eran falsos irreducibles por
política incompleta + un caso real de de-Alpinización.

FALTABAN 2 SONDAS EN LA POLÍTICA: /usr/bin/cpp (frontend del preprocesador de
gcc, mismo grupo que gcc/c89/c99) y /usr/bin/getent (utilidad NSS de musl).
hammer NO las construye ⇒ se deniegan y clasifican (D3), como gcc. Sin ellas en
`# expect`, arrastraban la receta entera a irreducible. Añadidas a base.policy y
a harkaq-farm-setup.sh (para los próximos workers). Re-clasifiqué SIN re-medir
(la clasificación lee la política; los veredictos crudos no cambian).

nm/ranlib NO se añadieron como sondas: los provee binutils ⇒ son DECLARABLES.
Ponerlos como esperadas dejaría a una receta usar el ranlib de Alpine en vez de
decir "declará binutils" — lo contrario de lo que se busca.

RECUPERADAS (declaradas y fuera de needs-review):
  dhcpcd → make, pkgconf     strace → make

QUEDAN 3, cada una una historia distinta (README en needs-review):
  ncurses  fs.make_dir /usr/lib — ESCRITURA en install, no lectura de Alpine
           (DESTDIR de la receta), NO de-Alpinización.
  mtdev    config.guess/sub del autoconf de Alpine — LA ÚNICA deuda de soberanía
           genuina del barrido (parchar mtdev o escribir recipes/autoconf.toml).
  perl     /etc/hosts,/etc/resolv.conf — config de sistema para tests de red; el
           build completa igual. Runtime base o denegación benigna, no Alpine.

Resultado del barrido completo: de 83 recetas, la deuda de soberanía REAL es UN
caso (mtdev/autoconf). Todo lo demás era declarable o sondas.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 06:44:20 -04:00
sergio 0bc8dd9487 foot-chain: tllist/utf8proc/scdoc construyen (libs hoja para fcft/foot)
tllist b3:43171202 (header-only, meson), utf8proc b3:db4ac2c7 (Unicode, libutf8proc.a), scdoc
b3:5194cf5b (man-gen). utf8proc/scdoc buildearon sin editar; tllist migrado al patrón meson.
Leaf libs de la cadena que destraba el terminal Wayland foot.
2026-07-11 00:49:02 -04:00
sergio ecf05e1b9d base-system-3: promover cadena crypto + libusb/usbutils + gnupg (índice 743)
6 recetas → canónicas + índice firmado: libusb, npth, libassuan, libksba (libs), usbutils (lsusb),
gnupg (gpg 2.4.9). Cierra las 2 mini-chains que quedaban bloqueadas. + zlib re-packeado limpio en el
repo (hash b3:2623a403 sin ubsan). Sólo foot queda staged (Wayland). Frente (b) COMPLETO.
2026-07-11 00:36:55 -04:00
sergio 8d37d4576f base-system-2: promover 7 tier-2 a canónicas + repo firmado
shadow (useradd/passwd), kbd (loadkeys/setfont), procps-ng (ps/top/free), pciutils (lspci),
lsof, strace, mandoc (man) → recipes/ canónicas + índice firmado. usbutils (falta libusb) y
gnupg (falta libassuan/libksba/npth) quedan staged/bloqueados; foot diferido (Wayland).
Segunda tanda del userland foundational: usuarios + teclado + proceso + hardware + docs + debug.
2026-07-10 23:51:48 -04:00
sergioandClaude Opus 4.8 494d3fd615 granja: cargar cola base-system — 18 esenciales del userland foundational
Los huecos reales para una distro completa (el sistema ya está: bootstrap/
self-host/kernel/init/EFI/paquetería). Cola aislada en incoming-clib:
git rsync bash ca-certificates sudo doas util-linux sed tzdata e2fsprogs
dosfstools parted iproute2 iputils dhcpcd vim dbus foot. Import 18/18
(17 alpine + 1 nix), deps ya-canónicas podadas. Patches musl viajan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 21:53:47 -04:00
sergioandClaude Opus 4.8 4aaefa53e4 granja: mise 2026.7.0 al catálogo firmado (713) — cierra el bug vendor-clobber
El fix cargo_vendor_dir (b580c5b) destrabó mise: selló (ELF estático funcional,
mise 2026.7.0) y se promovió. Sale del diferido; queda en recipes/mise.toml con
[source] cargo_vendor_dir=.hammer-cargo-vendor. README del diferido actualizado.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 12:18:32 -04:00
sergioandClaude Opus 4.8 b580c5bfc5 fetch: cargo_vendor_dir per-receta — no pisar el vendor/ propio del proyecto
`cargo vendor vendor` borra lo que no reconoce del dir destino; proyectos que
commitean su PROPIO vendor/ (mise → vendor/aqua-registry, 3.1MB que build.rs lee)
lo perdían → build.rs falla 'No such file'. Nuevo campo opcional [source]
cargo_vendor_dir (default 'vendor', sin cambios para las ~200 recetas selladas)
manda el vendoreo cargo a otro dir; el .cargo/config.toml que emite cargo vendor
ya apunta ahí. mise.toml usa '.hammer-cargo-vendor'. Validado en vivo: aqua-registry
sobrevive + compila 591 crates pasando los muros previos (openssl vía rustls + AR).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 03:18:16 -04:00
sergio cee652717e granja: diagnóstico mise — bug de fetch (cargo vendor clobbea vendor/aqua-registry), no openssl
mise compila las 828 crates con rustls (openssl resuelto); el muro real es que
`cargo vendor vendor` de hammer borra el vendor/aqua-registry que mise commitea
(3.1MB que build.rs:357 lee). Documentado en el README del diferido. Fix pendiente:
override per-receta del destino de vendoreo cargo.
2026-07-09 23:50:41 -04:00
sergioandClaude Opus 4.8 5e8ff2348f granja: feroxbuster al catálogo firmado (712) — fix wrapper AR para Rust+sys-crate C
El default zig-cc exporta AR="zig ar" (con espacio); el crate `cc` lo ejecuta
como binario único y falla. Wrapper `.hammer-zig-ar` per-receta destraba el
sys-crate C. feroxbuster construye+sella; mise pasa openssl vía feature rustls
pero su bin final falla (giant aws-sdk/rattler, a diagnosticar). mdcat (openssl
transitivo) y jless (clipboard X11) diferidos a tandas/deferred-openssl-xcb/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 22:42:32 -04:00
sergioandClaude Opus 4.8 a917149116 Etapa G (go): re-alimento incoming-go — 13 recetas frescas al VPS idle (hugo/delve/glow/opa/scaleway-cli/kubeseal/dolt/dbmate/migrate/sops/gotools/dnsx/jsonnet-bundler)
El worker VPS estaba idle (load 0.01): las 3 colas eran 100% cache-hit (tanda go-2026-07-05b
sellada, incoming/ del otro agente, incoming-clib 21/21). Cosecho 13 attrs Go nuevos verificados
por nix eval (los alias de las listas de refeed daban 'ninguna fuente' por no ser attrs reales).
Import 13/13 nix + pin tag→SHA + rsync dirigido a la cola aislada incoming-go/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 07:54:09 -04:00
sergioandClaude Fable 5 6e602707fd Etapa G (go): puredns diferido (go.mod 1.16 vs unsafe.Slice, clase gotop) — tanda 2026-07-05b queda 9/10 sellada
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 06:21:34 -04:00
sergioandClaude Fable 5 6c655642b6 Etapa G (go): re-cola kluctl (go build -o: main en ./cmd sellaba binario 'cmd') + tanda 2026-07-05b a mano (fortio/nancy/chartmuseum/sake/timetrace/anew/puredns/pint/goldilocks, tags por ls-remote) + werf diferido (gpgme como skopeo)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 05:57:09 -04:00
sergio b615adeaae Etapa G: cosecha-go finde (auto) — promovidos: bom crossplane-cli fabric-ai kn kubectl-neat oh-my-posh prometheus-blackbox-exporter prometheus-node-exporter timoni | review: kluctl(bin=cmd) 2026-07-05 05:55:34 -04:00
sergioandClaude Fable 5 f922450c62 Etapa G (go): bom flags=./cmd/bom (raíz = magefiles con build-tags que excluyen todo) + aws-vault/minikube diferidos (CGO: onepassword-sdk / libvirt)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 05:39:57 -04:00
sergioandClaude Fable 5 e4ef80b76e Etapa G (go): cosecha 20 + syft/traefik promovidos a mano (pack fallaba: patches no viajaban a recipes/ — fix en harvest-go) + pre-check por name interno del TOML (exporters) + re-cola crossplane-cli/fabric-ai/oh-my-posh con fixes (alias crossplane, ./cmd/fabric, -o oh-my-posh) + logs por-cola en build-farm
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 05:31:58 -04:00
sergio ec8bb17fd8 Etapa G: cosecha-go finde (auto) — promovidos: apko atlas crane flyctl go-migrate gomi grype jsonnet-bundler krew kubescape melange rekor-cli revive scorecard seaweedfs staticcheck step-ca tea trivy xq | review: crossplane-cli(bin=crossplane) fabric-ai(bin=code2context) oh-my-posh(bin=src) syft(pack) traefik(pack) 2026-07-05 05:27:49 -04:00
sergioandClaude Fable 5 5c4c2cd153 Etapa G (go): grype/traefik a vía Go auto (les faltaba deps.build=go, fases abuild llamaban go a ciegas) + dolt diferido (cgo→ICU externa, necesita receta icu4c)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 00:51:58 -04:00
sergioandClaude Fable 5 46a2d777d3 Etapa G (go): re-alimenta la granja — tanda 2026-07-05 (15 recetas: flyctl/kubescape/seaweedfs/melange/step-ca/scorecard/krew/…, 11 a mano por fetchgit-NAR + 4 import nix), aliases de gate (weed/migrate/jb/fabric/crank) y descarte flux=misimport DirectFB
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 00:47:09 -04:00
sergioandClaude Fable 5 3171dd59f9 Etapa G (go): triage cola envenenada del VPS — purga 25 (misimports/CGO/embed) + 10 fixes (subdir dolt-atlas-omp, crane ./cmd/crane, trivy GOEXPERIMENT=jsonv2, xq/tea/staticcheck/syft/apko a vía Go auto)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 00:35:40 -04:00
sergio 83e41a2174 Etapa G: cosecha-go finde (auto) — promovidos: kubie skaffold | review: terrascan(smoke) 2026-07-04 08:05:32 -04:00
sergio 460a4bb7e3 Etapa G: cosecha-go finde (auto) — promovidos: gocron lego | review: flux(bin=fluxcomp) kics(bin=builder) 2026-07-04 07:35:16 -04:00
sergioandClaude Opus 4.8 d94544b34d Etapa G (go): re-alimenta la granja — tanda go-refeed (51 recetas) a incoming-go
Prioridad: el worker VPS nunca idle. Import de 108 candidatos Go nuevos (listas
fuel-go menos el corpus); 2 olas → 51 recetas importadas (yield ~47%), pusheadas
a la cola incoming-go del VPS. El worker las está moliendo (load ~17). Incluye
proyectos Go grandes (dolt/etcd/dagger/crane/gitlab-runner/forgejo) que vendorean
cientos de deps ⇒ builds largos. Crudas de nixpkgs (tag sin pin, algún misimport
Python que falla inocuo); la cosecha promueve sólo las que sellan + pasan smoke.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 07:33:19 -04:00
sergioandClaude Opus 4.8 0b04c90d5b Etapa G (go): re-encola temporal-cli con el main correcto + alias de cosecha
El repo temporalio/cli tiene 3 mains bajo cmd/ (gen-commands, gen-docs,
temporal); detect_go_main elegía gen-commands ⇒ binario equivocado, quedó
en needs-review. Fix: flags=["./cmd/temporal"] apunta al CLI real (verificado
vía API de GitHub en el commit fijado). El binario se llama `temporal`, así
que agrego el alias temporal-cli→temporal al gate de harvest-go.sh (mismo
patrón que opentofu→tofu). Vuelve a recipes/incoming-go para que el worker
lo selle y la cosecha lo promueva.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 06:53:25 -04:00
sergioandClaude Opus 4.8 556a9cc7c3 Etapa G (clib): rescata patches huérfanos de json-c y libuv
Sus recetas canónicas referenciaban cmake-version.patch / fix-test-musl.patch pero los
ficheros habían quedado en tandas/staged-2026-06-26/ (patch-huérfano de una promoción
vieja) ⇒ pack fallaba. Movidos junto a su receta; ambos publican+firman ahora.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 14:27:16 -04:00
sergioandClaude Opus 4.8 c1a7370e6d Etapa G (GUI): gdk-pixbuf ✓ — esquiva shared-mime-info/glycin (gio_sniffing=false + builtin_loaders=png); último eslabón de deps GTK4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 09:46:08 -04:00
sergio 61e1b7fe5c Etapa G: libepoxy recuperado — dep mesa (provee headers EGL/GL); mesa SÍ está en el repo 2026-06-30 07:54:45 -04:00
sergio 60c813cf06 Etapa G: zstd ✓ (Makefile no-asm); difiere gdk-pixbuf/libepoxy/gettext (bloqueados: shared-mime-info/mesa-EGL/gettext-roto) 2026-06-30 05:02:40 -04:00
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 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 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 b9a3e55dd7 Etapa G: promueve envconsul/levant/pgweb/steampipe (reseed lunes); glooctl diferido (monorepo gloo) 2026-06-29 10:34:26 -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 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