go-6: terraform-docs/tflint/tfsec/s5cmd/nerdctl/amass/infracost/kail/... yield
16/19, disco estable 65% con el watchdog nuevo (load bajo de 23 a 0.76).
go-7 (11): hcloud/doctl/flyctl/dagger/earthly/apko/scorecard/sake/... a la cola.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
El 'go mod vendor' acumula GOMODCACHE (~/go/pkg/mod) sin tope: una tanda Go
grande lo llevo a 31G y lleno el disco de 80G -> I/O-wait disparo el load a 23
(cuello real, no CPU/RAM). El watchdog ahora purga 'go clean -modcache/-cache'
cuando el disco supera DISK_HIGH% (def 82). El vendor/ local de cada receta ya
tiene lo necesario; si pisa un vendor en curso, esa receta reintenta.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
delve/gopls/staticcheck/gofumpt/buf/sqlc/goose/atlas/dolt/restic/kopia/
nats-server/charm/pop/wishlist/headscale/rqlite/nsq/dbmate/... yield 25/27.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cosechados 61, archiva los 22 que fallan a tandas/staged-fallidos/, manda la
reserva premasticada go-5 (delve/gopls/staticcheck/buf/sqlc/atlas/dolt/restic/
kopia/nats-server/charm/headscale/...). Disco VPS limpiado 90->79%.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mayor cosecha de la sesion. Mayoria Go (fuel-go-2/3/4 + restos fuel-6+7):
age/argocd/cosign/trivy/trufflehog/k9s/kubectx/nuclei/vhs/soft-serve/
golangci-lint/goreleaser/ffuf/katana/gitleaks/sops/step-cli/helmfile/
gomplate/dasel/lf/sttr/usql/vegeta/bombardier/... + tokio-console (Rust).
yield VPS 61/83. Corpus FIRMADO = 394.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reserva lista para el proximo envio cuando el VPS baje la cola: delve/gopls/
staticcheck/gofumpt/buf/sqlc/goose/atlas/dolt/restic/kopia/nats-server/charm/
pop/wishlist/headscale/rqlite/... (import 29/32). Premasticado = import+pin
local, build en el VPS.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Premasticado (import+pin local, build en el VPS): 40 CLI Go k8s/devops/charm/
security: argocd/cosign/crane/trivy/trufflehog/vhs/soft-serve/k3d/kind/
kustomize/golangci-lint/goreleaser/air/stern/kubectx/helmfile/gomplate/...
Cola del VPS ahora ~83. Aprendizaje: Rust cola-larga de crates.io NO esta en
nixpkgs (0/7); Go es la veta (en nixpkgs, 100% yield). import-batch: usar -f
<file>, no args sueltos (zsh no splitea).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Estrena el VPS repotenciado (CCX23, 4 cores/16GB, disco saneado 94->54%).
Cola 43: 28 Go nuevas (import 31/32 automatico is_go; age/sops/k9s/ffuf/
nuclei/gitleaks/dasel/vegeta/frp/chisel/lf/sttr/usql/subfinder/katana/...)
+ 15 restos Rust de fuel-6+7 (oxipng/grass/tokio-console/cargo-c/...).
syft/grype/gf a hold (vinieron de alpine, sin plantilla Go).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Primera cosecha Go a escala con el frente automatizado: import automatico ->
VPS construye 21/21 en paralelo (go cache-hit, sin race) -> cosecha trust-free
(of_tree identico cross-machine, p.ej. duf b3:1dbbedde laptop=VPS).
chezmoi/dive/duf/fx/fzf/gdu/glow/gobuster/gojq/go-task/grpcurl/gum/hey/jid/
lazydocker/lazygit/mage/mods/pet/skate/yq-go. Todos Go estaticos.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 CLI Go importadas 21/22 con plantilla Go automatica (deps.build=[go], sin
phases): chezmoi/dive/duf/fx/fzf/gdu/glow/go-task/gobuster/gojq/grpcurl/gum/
hey/jid/lazydocker/lazygit/mage/mods/pet/skate/yq-go. Smoke local: jid+fx OK.
Restos de fuel-6+7 a hold (retomar del store). glab descartado (vino de Alpine).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cierra la fragilidad manual del patron Go (path del main por receta). Ahora
importar Go es tan automatico como Rust: import -> pin -> build, sin tocar nada.
- lib.rs: BuildSys::Go (go.mod, prioritario sobre configure/make auxiliares que
traen muchos proyectos Go). resolve_phases deriva el compile generico:
'go install -trimpath -ldflags=-buildid=' del paquete main. install='true'
(go install ya deja en GOBIN=/out/usr/bin).
- detect_go_main(): detecta el dir del main por FILESYSTEM (no compila, evita
contaminarse con mains de ejemplo rotos en docs/scripts que rompen go list).
Heuristica raiz > cmd/<x> > menor profundidad; excluye vendor/docs/test/etc.
go install nombra el binario solo (cmd/mlr->mlr, raiz->modulo).
- nix_import.rs + nix-import.sh: detecta is_go (vendorHash de buildGoModule),
emite deps.build=['go'] sin phases (BuildSys::Go las deriva).
- tests: go_mod_wins_over_configure, detect_go_main_picks_cmd_over_docs.
Validado end-to-end: miller (cmd/mlr->mlr, esquiva docs rotos), amfora (raiz),
duf (import->pin->build 100% automatico, binario estatico que corre).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fuel-6: cargo-bundle-licenses/taskwarrior-tui/tenere/termsnap/the-way
fuel-7 (sistematico): cargo-ndk/cargo-sbom/espflash/grcov/maturin/
parallel-disk-usage/xwin/zizmor. El metodo crates.io entrego binarios reales.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
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>
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>
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>
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>
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>
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>
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.
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>
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>
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>
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>
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>
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>
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>
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>
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>
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).
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>
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>