Commit Graph
309 Commits
Author SHA1 Message Date
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
sergio ce126dd5ee Etapa G: cosecha go-8 (13, repo 444->457) — k8s grandes (cilium-cli/istioctl/gitea) 2026-06-26 22:26:44 -04:00
sergio 89a8678238 Etapa G: fuel-go-8 al VPS (devops/cloud/policy: opa/conftest/k0s/talosctl/...) 2026-06-26 20:18:35 -04:00
sergioandClaude Opus 4.8 cd0a52d18b Etapa G: cosecha go-7 (9, repo 435->444) — caddy/hugo/doctl/hcloud/earthly/...
Incluye binarios Go grandes (caddy web server, hugo SSG) que construyen OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 20:13:42 -04:00
sergioandClaude Opus 4.8 0cad0a7694 Etapa G: cosecha go-6 (16, repo 419->435) + manda go-7 al VPS
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>
2026-06-26 17:46:23 -04:00
sergioandClaude Opus 4.8 64f4a20072 granja: watchdog purga caches Go cuando disco >=82%
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>
2026-06-26 17:36:05 -04:00
sergio 7883bbf804 Etapa G: fuel-go-6 al VPS — infra/recon (terraform-docs/tflint/tfsec/s5cmd/nerdctl/amass/...) 2026-06-26 17:27:41 -04:00
sergioandClaude Opus 4.8 11783a468a Etapa G: cosecha go-5 del VPS — 25 tools (repo 394->419)
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>
2026-06-26 17:25:15 -04:00
sergioandClaude Opus 4.8 d7e5d206b5 Etapa G: manda reserva go-5 al VPS (27) + archiva 22 fallidos
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>
2026-06-26 16:09:35 -04:00
sergioandClaude Opus 4.8 25fc85db90 Etapa G: cosecha del VPS 4-cores — 61 tools (repo 333->394)
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>
2026-06-26 16:08:50 -04:00
sergioandClaude Opus 4.8 de04469458 Etapa G: fuel-go-5 premasticado — buffer reserva (~28 Go) en recipes/ready/
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>
2026-06-26 14:57:31 -04:00
sergioandClaude Opus 4.8 9c99a78276 Etapa G: premasticado Go (fuel-go-3/4) — buffer de 40 al VPS de 4 cores
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>
2026-06-26 14:55:23 -04:00
sergioandClaude Opus 4.8 465adc1374 Etapa G: fuel-go-2 + restos fuel-6+7 — recarga el VPS de 4 cores
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>
2026-06-26 14:29:20 -04:00
sergioandClaude Opus 4.8 b097782d1b Etapa G: cosecha fuel-go-1 — 21 CLI Go (repo 312->333), 100% yield
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>
2026-06-26 13:31:26 -04:00
sergioandClaude Opus 4.8 0629d79cde Etapa G: fuel-go-1 — primera tanda Go con importador automatizado
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>
2026-06-26 12:45:19 -04:00
sergioandClaude Opus 4.8 5877363f5b Etapa G frente Go: AUTOMATIZADO end-to-end (BuildSys::Go + importador)
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>
2026-06-26 12:34:27 -04:00
sergioandClaude Opus 4.8 8237635256 Etapa G: cosecha fuel-6+7 — 13 CLI-Rust (repo 299->312)
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>
2026-06-26 12:18:18 -04:00
sergio b06bdd4251 Etapa G: fuel-7 .patch acompañante a la cola 2026-06-26 11:36:39 -04:00
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