Commit Graph
280 Commits
Author SHA1 Message Date
sergioandClaude Opus 4.8 e23814d24a Etapa G: fuel-7 — fuel SISTEMATICO desde crates.io (import 16/27)
Primer fuel no-nombrado-a-mano: top de command-line-utilities por recent-
downloads, filtrado a binarios CLI puro-Rust. Descubrio binarios que no
estaban en el radar: oxipng/grass/grcov/maturin/espflash/tokio-console/
zizmor/parallel-disk-usage/cargo-c/cargo-ndk/cargo-sbom/xwin/duckscript/
mandown/mkpasswd/release-plz. Rompe la saturacion del catalogo nombrado.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 11:36:26 -04:00
sergioandClaude Opus 4.8 bee5884544 Etapa G: fuel-6 — recarga del VPS (cola larga, corpus saturado)
import 12/15 nix: cargo-bundle-licenses/cargo-chef/gpg-tui/menyoki/riff/
smassh/taskwarrior-tui/tenere/termsnap/the-way/thokr/wiki-tui. Saca los 4
de fuel-5 que fallan (projectable/qrtool/rwalk/wthrr) a staged.

Nota: corpus saturado (494 nombres vistos); de 50 CLI-Rust mainstream solo
6 eran nuevas. Escalar mas exige enfoque sistematico (categorias crates.io).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 10:59:30 -04:00
sergioandClaude Opus 4.8 4fbf84c2c7 Etapa G: cosecha fuel-5 del VPS — 7 CLI-Rust (repo 292->299)
aichat/caligula/cotp/diskus/otree/pls/russ. Build-yield VPS 7/11; quedan
staged 4 (projectable/qrtool/rwalk fallan, wthrr misimport).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 10:45:53 -04:00
sergioandClaude Opus 4.8 74d5ab0b78 Etapa G frente Go: 10 recetas Go al corpus (repo 282->292) + fix GOWORK
Aplica el patron de amfora a la escoria Go. Build-yield 11/13:
- raiz: croc/gron/jump/gtrash/walk/qrcp (go build .)
- main en ./cmd/<x>: cheat/dnsx/dyff + miller (binario mlr)
Todos estaticos y corren (mlr 6.18.1, croc v10.4.4, cheat 4.5.0, ...).

fetch.rs: vendor_go_deps ahora setea GOWORK=off (go mod vendor aborta en
modo workspace si el arbol trae go.work).

Diferidas 2 (casos especiales): csvtk (go.mod en subdir, el vendor no corre
en /src) y git-town (go.work multimodulo -> inconsistent vendoring; necesita
go work vendor, no go mod vendor).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 05:06:21 -04:00
sergioandClaude Opus 4.8 4291b2adeb Etapa G frente Go: vendoring integrado en fetch — amfora construye, repro
Cierra el muro del frente Go (vendoring) replicando el patron de Rust:
vendorear in-situ en el fetch (host, con red), no tarball-al-mirror.

- fetch.rs: vendor_go_deps() analoga a vendor_cargo_deps — corre go mod vendor
  en el host si hay go.mod; el sandbox compila offline con -mod=vendor.
- lib.rs: engancha vendor_go_deps tras los patches cuando el arbol trae go.mod
  (sin BuildSys::Go; el compile lo fija la receta en build.phases).
- bootstrap-devfs.sh: instala el toolchain go del host (1.26.4, estatico) en
  .dev-fs/tools/go + symlink en ~/.cargo/bin (PATH del worker via .cargo/env).
- amfora: PRIMERA receta Go del corpus. Build end-to-end validado (repo+commit
  -> fetch vendorea -> sandbox offline -> binario estatico que corre, Amfora
  v1.11.0). REPRODUCIBLE bit-a-bit: dos stores independientes dan of_tree
  b3:9ec1d5fe (trimpath + buildid= en el compile). Promovida al repo (282).

Quedan 12 recetas Go en tandas/staged-2026-06-26/ (cheat/dnsx/croc/dyff/csvtk/
git-town/miller/jump/gron/qrcp/walk/gtrash): mecanico, copiar el patron de
amfora ajustando el nombre del binario.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 04:34:56 -04:00
sergioandClaude Opus 4.8 1670ebf933 Etapa G: frente Go — toolchain go.toml + patron de build de-riskeado
Las 13 recetas Go de la escoria (amfora/cheat/dnsx/croc/dyff/csvtk/git-town/
miller/jump/gron/qrcp/walk/gtrash) esperaban un toolchain Go. Lo construyo:

- recipes/go.toml: empaqueta el tarball binario oficial go1.26.4 (estatico ⇒
  corre en el sandbox musl), reubica GOROOT a /usr/lib/go, expone go/gofmt.
  Sella y se materializa como overlay via deps.build=["go"]. Pragmatico
  (como Alpine/nix); bootstrap-desde-fuente queda como frente futuro (cf mrustc).
- DE-RISK end-to-end: amfora compila OFFLINE con  +  ⇒ binario estatico que corre (Amfora v1.11.0).
- amfora.toml: plantilla de referencia del patron Go (phases compile correctas).

Muro restante (mecanico, sin incognitas): el source de hammer es repo+commit
sin vendor/; el build offline no baja modulos. Falta que el importador (con red)
corra  y empaquete el source-vendoreado, igual que Rust vendorea
crates. Eso destraba las 13 de una.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 03:45:37 -04:00
sergioandClaude Opus 4.8 08fdec3bbf Etapa G: fuel-5 — recarga la cola del VPS (parado 14h sin producir)
La cola previa (115) se agoto/enveneno: ultimo seal 2026-06-25T16:42,
~63 recetas fallan por deps no importadas (go/libconfuse/protoc/liblzma)
o C-heavy (libbpf). Diagnostico: el VPS giraba en falso re-confirmando
cache-hits ya cosechados.

- archiva la escoria de incoming/ (71 .toml + 38 .patch) a tandas/staged-2026-06-26/
- fuel-5: 18 candidatos CLI-Rust puro (anti-C); import 11/18 por nix, 10 pineados
  (aichat caligula cotp diskus otree pls projectable qrtool russ rwalk wthrr)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 03:27:38 -04:00
sergioandClaude Opus 4.8 5e9ffeea52 Etapa G: cosecha — promueve bob-nvim + republica 7 construidas-sin-firmar (repo 275→281)
Drenaje del desfase store->repo firmado: bob-nvim (incoming, unico
cache-hit real de los 72 staged) + du-dust/libgcrypt/libnl/libxml2/
linux-metal/nushell/wpa_supplicant (ya en recipes/, selladas pero sin
.swm publicado). El store del VPS ya estaba 100% en el laptop: no habia
backlog de cosecha, el gap real era store<->repo local.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 02:41:02 -04:00
sergio f75e256d08 Etapa G: git diferido en serio — diagnóstico afinado (muro en libgit.a)
Aislado: NO es curl/regex/-pie/libs externas (gcc -static -no-pie -lpcre2-8 -lz
linkea OK). El muro es libgit.a (objetos propios de git) con relocación
incompatible con -static -no-pie. Pase dedicado: V=1 + readelf -r del .o ofensor,
o -static-pie. Se puede; es iteración cara.
2026-06-26 00:48:38 -04:00
sergioandClaude Opus 4.8 9e344c2c6c Etapa G: git diferido con diagnóstico — compila, muro en static-link de helpers
git compila entero (REG_STARTEND/regex y -pie resueltos) pero el link -static de
git-http-backend/daemon/git-% falla 'ld: failed to set dynamic section sizes'
(no es curl ni regex; hipótesis CET/.note.gnu.property + PIC mixto de las libs).
El más duro de la cola C, como gmp en las libs. Próximo: V=1 + -fcf-protection.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 00:30:18 -04:00
sergioandClaude Opus 4.8 19fd683ccf Etapa G: cola C — socat + pigz estáticos (corpus 281→283)
socat 1.8.1.2 (openssl+readline+ncurses), pigz 2.8 (zlib). static-musl, -no-pie.
5 clásicos C ya del unlock: tmux/tig/wget/socat/pigz.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 22:59:55 -04:00
sergioandClaude Opus 4.8 0cb9094852 Etapa G: cola C — tig + wget estáticos (corpus 279→281)
tig 2.6.1 (ncurses+pcre2; -Wno-int-conversion por gcc15), wget 1.25.0
(openssl+zlib+pcre2). Ambos static-musl verificados (sin INTERP).

GOTCHAS de la cola C (reusables):
- NO pasar LDFLAGS=-L/usr/lib pelado: clobbea el LDFLAGS=-static del lab →
  binario dinámico. Usar LDFLAGS="-static -L/usr/lib".
- nuestra zlib.a es non-PIC ⇒ linkear contra ella en un PIE falla
  (R_X86_64_32S vs zcalloc) ⇒ agregar -no-pie (estático no-pie es válido).
  [fix sistémico opcional: rebuildar zlib con -fPIC para toda la cola C]

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 22:06:01 -04:00
sergioandClaude Opus 4.8 a1cca429bf Etapa G: abre la cola C — tmux (corpus 278→279), valida libs base
tmux 3.6b linkea libevent + ncurses hammer-built, estático (-static -lncursesw
-levent_core). Primer consumidor de la cola C que valida el unlock de las 20
libs base. + import c-cola-1 (14 clásicos C: tig/wget/rsync/git/mc/gnupg/…).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 21:11:50 -04:00
sergioandClaude Opus 4.8 e143b4af27 Etapa G: 9na cosecha del VPS — 12 promovidos (corpus 266→278)
Cosechado tras cerrar imagen↔repo. Ecosistema typst (tinymist LSP, typstyle,
trunk, wasm-pack) + dotfiles (dotter, tuckr) + viddy/tomlq/wstunnel/rust-script/
pixi (ahora entero) + when (script Perl). 11 ELF static-musl + when (Perl).
El VPS siguió moliendo autónomo durante toda la sesión imagen↔repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 18:45:43 -04:00
sergioandClaude Opus 4.8 404bfc4970 imagen↔repo: end-to-end — producto booteable con userland del repo firmado
scripts/product-image-from-repo.sh cierra el lazo Etapa F+G entero:
base product-rootfs (arje-zero PID1 + musl/busybox) → hidrata userland rico vía
`hammer install --require-signed` del repo firmado → imagen GRUB auto-booteable →
boot en QEMU + handshake SSH que CORRE los tools del repo.

VALIDADO e2e: booteó, arje-zero PID1, hammerd+netup+sshd, y por SSH corrieron
bat 0.26.1 / fd 10.4.2 / jq 1.8.1 / eza — userland farmeado, servido desde el
repo firmado, no del bootstrap hardcodeado. 240 bins en /usr/bin (base+repo).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 16:58:43 -04:00
sergioandClaude Opus 4.8 d41f1705e6 imagen↔repo: install hidrata userland del repo firmado + 2 fixes de path
Cierra el lazo Etapa F+G: el userland del producto se arma vía `hammer install
--repo --prefix --require-signed` desde el repo firmado, no del bootstrap
hardcodeado. scripts/product-userland-from-repo.sh hidrata un set curado (13+
tools validados estáticos del repo).

Dos bugs reales del path install/pack encontrados+arreglados:
1. pack derivaba target_bin=/usr/bin/{name}; para paquetes con binario≠nombre
   (ripgrep→rg, repgrep→rgr) quedaba mal y el sanity-check de install fallaba.
   Ahora pack lo deriva del flag `--bin <X>` de la receta Cargo.
2. La reproducción del source_patch derivaba el NOMBRE de la receta del
   target_bin ⇒ "rg" ≠ "ripgrep" del corpus ⇒ no cache-hit ⇒ rebuild + dup en
   el store (find_by_hash ambiguo). build_source_patch/run_apply ahora reciben
   el nombre del paquete (install/bootstrap lo pasan; apply=None) ⇒ cache-hit
   del artefacto del corpus, sin duplicar.

(El "EACCES" inicial era sólo --store ausente: DEFAULT_STORE=/store root-only.)
hammer-build 49/49 tests ok; ripgrep install validado e2e (rg hidratado).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 16:54:39 -04:00
SergioandClaude Opus 4.8 2207f18587 test(hammerd): e2e del adaptador arje_link contra un bus falso de arje
Cierra el último tramo de validación de B.2 (adoptar arje como init): el
adaptador arje_link ya estaba escrito y cableado en main, pero su único test
era un round-trip del espejo contra sí mismo — no probaba la ruta de transporte
real ni el contrato con arje-bus.

arje_link_e2e levanta un socket falso de arje-bus (mismo wire: frames
u32-BE-len + postcard), valida que el adaptador emite el frame Subscribe exacto
([00 01 00 0D]), le inyecta un EnteCrashed(Killed 11), y verifica que sale como
Event::Crashed{code:139} por el EventBus — ejercitando run() entero
(connect→subscribe→leer→traducir→publicar) sin necesitar un init vivo. run()
pasa a pub(crate) para que el test lo maneje. El contrato de bytes con arje-bus
queda fijado del lado arje por arje-bus::contrato_wire.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:56:25 +00:00
sergioandClaude Opus 4.8 813d965d5c Etapa G: 6 libs C base — libevent/libgpg-error/libgcrypt/libuv/json-c/freetype (corpus 260→266)
libevent 2.1.12 (async/red), libgpg-error+libgcrypt (cripto), libuv 1.52
(async; necesitó ./autogen.sh, el dist tarball no trae configure), json-c 0.18
(CMAKE — el rootfs tiene cmake), freetype 2.14 (fuentes, vs zlib+libpng con el
fix CPPFLAGS/LDFLAGS). Set de libs base ya cubre 20+ deps de cola C/-sys.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:23:01 -04:00
sergioandClaude Opus 4.8 7d36e12edf Etapa G: fuel-4 — buffer de cola para el VPS tras recuperar conexión
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 10:52:14 -04:00
sergio 75cb4d5132 Etapa G: revierte pixi del corpus — artefacto incompleto (rsync cortado a mano)
El pkill del rsync dejó el store/<hash>-pixi parcial (sin binario); build-farm
hizo cache-hit por presencia del dir y lo promovió. Vuelve a incoming para
re-cosecharlo completo. rustcat/sshs/tere quedan (estáticos, íntegros).
2026-06-25 10:44:10 -04:00
sergioandClaude Opus 4.8 9e5f0abab0 Etapa G: 8va cosecha del VPS — pixi/rustcat/sshs/tere (corpus 257→261)
Cosechado tras recuperar conexion (terremoto corto el ISP local). El VPS siguio
moliendo autonomo durante el corte. pixi (entornos), rustcat (nc), sshs, tere.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 10:43:19 -04:00
sergioandClaude Opus 4.8 ec37eab065 Etapa G: 7ma cosecha del VPS — heh/mdbook-mermaid/mdbook-toc/prek (corpus 253→257)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 15:03:37 -04:00
sergioandClaude Opus 4.8 498ea7fe84 Etapa G: 6ta cosecha del VPS — brush/cargo-criterion/features-manager/wizard (corpus 249→253)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 14:51:58 -04:00
sergioandClaude Opus 4.8 d10b51ea0a Etapa G: libs C base libssh2 + libpng + libyaml (corpus 246→249)
libssh2 1.11.1 (libssh2.a, crypto openssl), libpng 1.6.58 (libpng16.a vs zlib),
libyaml 0.2.5 (libyaml.a). GOTCHA: libpng usa AC_CHECK_LIB link-test para zlib
(no pkg-config) ⇒ requiere CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib explícitos.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 14:12:50 -04:00
sergioandClaude Opus 4.8 5ec0d61b65 Etapa G: libs C de compresión/cripto — zstd+xz+bzip2+libsodium (corpus 242→246)
zstd 1.5.7 (libzstd.a — zstd-sys en montones de crates), xz 5.8.3 (liblzma.a),
bzip2 1.0.8 (libbz2.a), libsodium 1.0.22 (libsodium.a). Compresión/cripto =
deps de muchísima cola C + crates -sys. compiler=gcc, estáticas.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 14:07:10 -04:00
sergioandClaude Opus 4.8 5d83e6e313 Etapa G: fuel-3 — recarga de cola del VPS (+18 pineadas, incl typst/mdbook)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 12:52:15 -04:00
sergioandClaude Opus 4.8 173ff0308c Etapa G: 5ta cosecha del worker VPS — irust/rep-grep/sendme/shellharden (corpus 238→242)
irust (REPL Rust), rep-grep, sendme (iroh transfer), shellharden. Estáticos.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 12:47:42 -04:00
sergioandClaude Opus 4.8 f5e639a3ff Etapa G: libs C base libffi + sqlite + readline (corpus 235→238)
libffi 3.5.2 (libffi.a), sqlite 3.53.2 (libsqlite3.a, FTS3/4/5+rtree+threadsafe),
readline 8.3 (libreadline.a+libhistory.a, vs ncurses/libtinfo del corpus).
Alto unlock: sqlite destraba atuin y la cola DB; libffi el mundo python/-sys.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 12:46:35 -04:00
sergioandClaude Opus 4.8 c057d6a02b Etapa G: hurl des-diferido — validación del track de libs C (corpus 234→235)
hurl 8.0.1 estaba diferido por necesitar libcurl+libxml2+openssl. Con las 3
libs base ahora en el corpus, curl-sys/libxml las materializan y hurl construye
estático. Prueba de que el track de libs base abre los tools bloqueados.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 09:23:28 -04:00
sergioandClaude Opus 4.8 9c8d106fd0 Etapa G: libs C base expat + curl al corpus (232→234)
expat 2.8.1 (libexpat.a) + curl 8.20.0 (libcurl.a, TLS openssl + zlib del corpus).
El patrón configure-split + deps openssl/zlib materializadas funcionó limpio.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 09:05:58 -04:00
sergioandClaude Opus 4.8 c00492174c Etapa G: 4ta cosecha del worker VPS — 7 promovidos (corpus 225→232)
angle-grinder, cargo-auditable, cargo-fuzz, cargo-supply-chain, cargo-temp,
evcxr (REPL Rust), fblog. Construidos en el VPS, estáticos. Total cosechado
del VPS esta sesión: 24 tools.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 08:41:12 -04:00
sergioandClaude Opus 4.8 30ad3e57bf Etapa G: libs C base pcre2 + libxml2 al corpus (223→225)
Track de libs fundacionales (pivote tras gmp). Ambas static-musl, gcc:
- pcre2 10.47 → libpcre2-8.a + libpcre2-posix.a (regex; dep de pcre2-sys, grep-variants)
- libxml2 2.13.9 → libxml2.a (XML/HTML; dep de mucha cola C + crates -sys)

FIX CLAVE de comportamiento del lab (causa de los fallos previos, gmp incluido):
el lab tiene fases configure Y compile SEPARADAS; si configure se deja vacío, la
heurística inyecta su propio ./configure minimal (defaults → python/probe) que
corre ANTES y aborta. Solución: definir [build.phases].configure explícito.
libxml2 con --without-python/lzma/zlib; configure-phase split lo desbloqueó.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 08:39:54 -04:00
sergioandClaude Opus 4.8 4617c4173a Etapa G: gmp diferido con diagnóstico (configure probe falla link bajo gcc15)
Primera lib C del track base. El probe de configure de gmp no linkea su conftest
(undefined reference to main) bajo gcc 15.2/C23 + el sandbox; el patch Alpine no
alcanza. Track de libs base confirma ser el trabajo no-trivial (no cores).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 08:30:46 -04:00
sergioandClaude Opus 4.8 d0ad93c7c5 Etapa G: fuel-2 — recarga de cola del worker VPS (+26 pineadas)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 06:42:42 -04:00
sergioandClaude Opus 4.8 d3c93d0b7c Etapa G: 3ra cosecha del worker VPS — hwatch/kbs2/natls (corpus 220→223)
17 tools nuevas construidas en el VPS Hetzner esta sesión, todas estáticas.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 06:34:59 -04:00
sergioandClaude Opus 4.8 aeef6fe7e4 Etapa G: 2da cosecha del worker VPS — 9 promovidos (corpus 211→220)
Construidos en el VPS Hetzner, cosechados al hub (rsync store↓ + cache-hit):
atac (API TUI), cargo-mutants, cargo-readme, cargo-semver-checks, cargo-sort,
ddh (dup finder), fcp (cp rápido), git-igitt (git TUI), git-quick-stats.
8 ELF static-musl + git-quick-stats (script bash, portable). El laptop no
compiló nada de esto.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 06:23:12 -04:00
sergioandClaude Opus 4.8 b61815a602 Etapa G: worker auto-escala JOBS a nproc (resize del VPS sin tocar config)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 06:11:30 -04:00
sergioandClaude Opus 4.8 d1e4daccff Etapa G: PRIMERA cosecha del worker VPS — 5 promovidos (corpus 206→211)
cargo-careful, cargo-cyclonedx, cargo-feature, cargo-flamegraph, cargo-insta:
construidos ÍNTEGRAMENTE en el VPS Hetzner, cosechados al hub (rsync store↓ +
build-farm cache-hit → promote + firma). El laptop NO compiló nada de esto.
Todos ELF static-musl. Pipeline distribuido trustless validado end-to-end.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 05:40:46 -04:00
sergioandClaude Opus 4.8 7b7cf0a996 Etapa G: cosecha cli-rust-10 — 11 promovidos estáticos (corpus 195→206)
Granja laptop sobre cli-rust-10: build-yield 11/18, todos ELF static-musl:
cargo-component, cargo-dist, cargo-llvm-cov, cargo-make, cocogitto, committed,
dotenv-linter, git-branchless, jujutsu (jj), netscanner, systemctl-tui.
7 staged (cargo-release/convco/dnspeep/feroxbuster/git-stack/git-trim/selene).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 05:05:03 -04:00
sergioandClaude Opus 4.8 5486dbab6f Etapa G: fuel-1 — cola profunda para el worker VPS (incoming +48 pineadas)
import-batch fuel-1 (95 candidatos): yield 65/95, dedup vs corpus/deferred →
~57 nuevas pineadas a incoming/. Empujadas al worker Hetzner (rsync aditivo);
69 recetas en su cola = ~1 día de molienda a 2 cores sin idle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 04:50:03 -04:00
sergioandClaude Opus 4.8 f9a60ed469 Etapa G: fixes del kit de granja distribuida (validados en VPS Hetzner real)
Tres frentes que aparecieron al provisionar un CCX13 (Ubuntu 24.04) de verdad:
- bootstrap-devfs §3b: el loader musl-256-keys ahora DETECTA la versión del
  rootfs (apk db) en vez de hardcodear 1.2.5. Alpine edge avanzó a musl 1.2.6 ⇒
  un loader 1.2.5 vs coreutils 1.2.6 da `renameat2: symbol not found` → chmod
  roto en el sandbox → el wrapper zig-cc no queda +x → EACCES. case con sha de
  1.2.5 y 1.2.6, die si aparece una nueva.
- vps-setup §2b: compila bubblewrap 0.11.2 si el de la distro no soporta
  --overlay-src (Ubuntu 24.04 trae 0.9.0 sin overlayfs; el sandbox lo necesita).
- farm-sync: excluye /.scratch (44G de fuentes mrustc/rustc) + *.png/content*
  del rsync al worker (casi copia 44G de más).

Smoke test en el VPS: builds compilan código real (pasan cc/chmod), rustc 2
cores al 93%, RAM holgada. Worker funcional.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 04:35:57 -04:00
sergioandClaude Opus 4.8 d949d10dcd Etapa G: kit de granja distribuida (worker VPS hub-and-spoke)
Paraleliza el build a un/varios VPS sin exponer gitea ni la clave de firma.
Modelo: el laptop es el HUB (firma + gitea); el worker sólo construye la cola
incoming/ y sella al store local (PROMOTE=0). Reproducibilidad bit-a-bit +
content-addressing ⇒ el store del worker es byte-idéntico, se rsync-ea de vuelta
y el hash valida solo (no hay que confiar en el VPS).

- vps-setup.sh: provisiona Debian/Ubuntu (deps, userns p/bwrap, swap 16G,
  rustup, build hammer, bootstrap-devfs rootfs Alpine edge, systemd unit).
- farm-worker-loop.sh: loop autónomo 24/7, PROMOTE=0, watchdog de disco
  integrado; muele lo que haya sin esperar al hub.
- hammer-farm.service: systemd, JOBS=2 (CCX13 = 2 vCPU dedicado), Nice/idle-io.
- farm-sync.sh (hub): rsync código+cola arriba, store sellado abajo,
  promote+firma+commit+push. Acceso único laptop->VPS por SSH.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 03:50:43 -04:00
sergioandClaude Opus 4.8 97118483d0 Etapa G: triage cli-rust-9 — 5 wins de los fallos (corpus 190→195)
Recuperados de los 16 fallos de la tanda nocturna con fixes documentados:
- rink 0.9, cargo-udeps: openssl-sys "Could not find OpenSSL" → dep openssl
  (dispara OPENSSL_DIR/OPENSSL_NO_VENDOR; el lab linkea la openssl del corpus).
- cargo-cache 0.8.3: git2/libgit2-sys C vendored → compiler=gcc + deps openssl/zlib.
- gptman 1.1: el bin requería la feature `cli` → flags --features cli.
- amp: faltaba -lz → dep zlib (en corpus).
Todos ELF static-musl verificados (`file ... statically`).

Diferidos a .deferred (frontera): tabiew (polars compila >1h a codegen-units=1,
construible pero lentísimo), websocat (E0119 trait impls), zee (E0080 const-eval),
+ misimports amber/flamegraph(Perl)/yj(Go)/ncdu(Zig), cargo-spellcheck (hunspell
C++), sfz (open64 glibc≠musl), tickrs (Cargo.lock), cargo-license (crates.io 403).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 01:32:30 -04:00
sergioandClaude Opus 4.8 71e43c5e42 Etapa G: tanda nocturna cli-rust-9 — 20 promovidos estáticos (corpus 170→190)
Granja nocturna JOBS=4 + watchdog de disco (drena work/sources no-activas
cada 3 min ⇒ disco acotado, no se llenó). import 38/45 → 36 a cola →
build-yield 20/36. Todos ELF static-musl que corren:
bingrep 0.12, cargo-deb 3.7, cargo-llvm-lines 0.4, cargo-modules 0.26,
cargo-wipe, cargo-zigbuild 0.22, cpc 3.0, csview 1.3, dufs 0.46,
fastmod 0.4, git-graph 0.7, jql 8.0, kibi 0.3, ox 0.7, ruplacer 0.10,
rustic 0.11, simple-http-server 0.8, ttyper 1.6, xan 0.59, zenith 0.15.

16 fallos quedan staged en incoming/ para triage (frontera de libs C /
imports rotos). Verificado `file ... statically linked` en los 20.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 00:31:08 -04:00
sergioandClaude Opus 4.8 9baa3fb85c Etapa G: tanda cli-rust-8 — 11 promovidos estáticos (corpus 159→170)
Granja JOBS=4 sobre cli-rust-8 (import 13/19): build-yield 10/13 +
cargo-hack re-arreglado. Todos ELF static-musl que corren:
ast-grep 0.43, boxxy 0.8.5, cargo-msrv 0.19.3, cargo-sweep 0.8,
comrak 0.52, genact 1.5.1, macchina 6.4, numbat 1.23, rage 0.11.2,
repgrep 0.16.1 (rgr), cargo-hack 0.6.45.

cargo-hack: de-Alpinizado a receta mínima (la fase compile custom con
`cargo auditable build` daba binario dinámico; el path default del lab
aplica crt-static + linker zig → estático). Verificado `file ... statically`.

Diferidos a .deferred (frontera de libs ausentes): hurl (libcurl+libxml2+
openssl-sys), termscp (Cargo.lock no carga bajo el vendor del lab).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 21:02:58 -04:00
sergioandClaude Opus 4.8 71bc228102 Etapa G: cosecha tanda CLI Rust — 5 promovidos estáticos (corpus 154→159)
Drenada la cola de 14 staged. 5 sellados+publicados al repo firmado, todos
ESTÁTICOS y ejecutan (versión correcta):
  - topgrade 17.6.1, git-absorb 0.9.0, cargo-audit 0.22.1, yazi 26.5.6, cargo-edit 0.13.11

Patrón común de de-Alpinización (estilo zellij): el lab NO trae `cargo auditable`
⇒ reescritas LIMPIAS sin él ni manpage/completions. Claves de la tanda:
  - SIN fase compile custom ⇒ path default del lab (aplica crt-static tras `cargo
    rustc --`, sólo el bin top, NO en RUSTFLAGS donde rompería los proc-macros) +
    linker zig-cc ⇒ binario estático. Las fases custom con `cargo build` salían
    DINÁMICAS (musl pie) y no corrían en el host — corregido.
  - compiler="gcc" donde hay deps-C de build-script (git2/openssl/ring/mlua-lua/
    jemalloc/onig): el CC=zig global rechaza el triple x86_64-alpine-linux-musl; el
    gueto gcc-musl los compila, linker sigue zig-cc. +deps zlib en git-absorb/cargo-audit.
  - cargo-edit: 4 bins (cargo-add/rm/upgrade/set-version, no hay bin `cargo-edit`);
    el path default (`cargo rustc -- flags`) exige un único target ⇒ fase custom que
    itera los 4 bins con crt-static por-bin.
  - yazi: dropeado el patch system-lua + dep lua5.5 ⇒ mlua vendorea su Lua.

Diferidos a incoming/.deferred (frontera dura, motivo documentado):
  - jless → libxcb (clipboard X11, dep real sin receta)
  - b3sum → proyecto anidado con Cargo.lock propio (el vendor del lab no lo alcanza)
  - dprint/mprocs → libclang.a/bindgen (clang-sys estático)
  - hck → libz-sys (-lz no hallado), kalker → gmp, dura → Cargo.lock stale,
    xcp → libfs i32/u64 musl, mdcat → #![deny(warnings)] en lib (path default no
    deja inyectar --cap-lints)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 17:49:50 -04:00
sergioandClaude Opus 4.8 3ebee950ab Etapa G: nu/nushell al corpus (153→154) — el giant más duro, sellado
nushell 0.104.1: uno de los paquetes más duros del ecosistema (openssl-sys + libgit2-sys +
libssh2-sys + libsqlite3-sys + mimalloc, todos sus C vendoreados). Fix clave: convertir la
receta del estilo abuild (fase compile custom, que NO monta el wrapper .hammer-zig-cc) al
build POR DEFECTO (flags=['--bin','nu']) ⇒ el wrapper traduce el target alpine→musl que zig
no conoce, y los -sys compilan. Dropea system-deps.patch (vendor todo). mise diferido
(.deferred: su build.rs busca git/archivo en build-time).

HALLAZGO GENERAL: recetas import-Alpine con fase abuild + C-deps fallan porque la fase custom
no monta el wrapper zig-cc. Fix = usar el build por defecto (sin fase compile).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 15:19:43 -04:00
sergioandClaude Opus 4.8 e4f682b87e Etapa G: zola al corpus (152→153) — el giant de tera/oxc/grass/ravif sella
Granja dedicada de giants (JOBS=3, RAM 31G): zola ✓ (no necesitaba fix, solo tiempo).
mise ✗ (su build.rs busca git/archivo faltante) y nu ✗ (openssl-sys: la fase abuild no
monta el wrapper zig-cc → zig recibe target alpine que no conoce) quedan para fix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 14:55:08 -04:00
sergioandClaude Opus 4.8 adbf986133 Etapa G: cosecha tanda openssl/git2 — 4 promovidos (corpus 148→152)
Granja sobre incoming (giants apartados): monolith + tuc + cargo-generate + cargo-outdated
sellados y promovidos + repo re-firmado. Valida los fixes de hammer-build de esta sesión:
- monolith: openssl-sys vía OPENSSL_DIR.
- cargo-generate/cargo-outdated: cargo-tools COMPLETOS (git2+openssl) — libgit2-sys vendorea
  su libgit2 con cmake; openssl-sys usa la openssl del corpus. Frontera C-FFI destrabada.
- tuc: cargo build (sin auditable).
14 staged (aws-lc/lint/C-libs/mecánicos) + 3 giants en .deferred para tanda dedicada.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:34:38 -04:00
sergio 3520e12574 Etapa G: aparta giants (mise/zola/nu) a incoming/.deferred — bloqueaban el promote del farm 2026-06-23 13:20:14 -04:00