Commit Graph
100 Commits
Author SHA1 Message Date
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
sergio 83219e17aa Etapa G: cosecha-go finde (auto) — promovidos: temporal-cli | review: 2026-07-04 07:12:09 -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 aad80ca519 docs: SDD 15 §H3b — puente H3b↔H2c (compartir programas por la malla, seguros por construcción)
Cierra la tesis de §H3: un programa entero viaja como Paquete verificable
en dos capas — integridad del código por el hash (tamper-evident sin firmar)
+ verdad del resultado por reproducción (H2c). Implementación en tawasuyu
wawa-memo/src/programa.rs (8 tests, total wawa-memo 30).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 06:45:48 -04:00
sergioandClaude Opus 4.8 fdfaab5151 docs: SDD 15 §H3b hecho — código por contenido estilo Unison sobre el grano wasm de H2
El núcleo del modelo Unison (definir por hash, nombres como metadata,
actualizar sin romper, componer por hash) se sostiene sobre el runtime
de wawa. Implementación en tawasuyu wawa-memo/src/base.rs (8 tests verdes).
Frontera: es el subconjunto que wasm+BLAKE3+H2 sostienen, no el colapso
total paquete=función=proceso (sigue ambición, no promesa).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 06:31:57 -04:00
sergioandClaude Opus 4.8 efe1dfcc46 docs: SDD 15 §H2c — núcleo de confianza hecho (sellado + verificar-reproduciendo)
En wawa-memo: sellado de portabilidad (Portable/SoloLocal, sella el vector
NaN cross-arch) + modelo de confianza (ingerir_ajeno verifica reproduciendo,
rechaza envenenamiento). Transporte de malla diferido al otro agente
(PLAN-OS-CRDT E3). Tests h2c.rs verdes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 20:17:29 -04:00
sergioandClaude Opus 4.8 ea2dface82 docs: SDD 15 §H2b hecho — memoización de ejecución wasm (cómputo como dato)
El prototipo vive en tawasuyu/03_ukupacha/wawa/wawa-memo (crate host/std):
reproduce la vía pura del kernel y monta la clave del contrato §4 sobre un
LwwMap. Test §5 verde (72 casos byte-idénticos, Hit/Miss, fallas cacheadas,
E-invalidación, merge de malla). Desbloquea H2c.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 20:07:33 -04:00
sergioandClaude Opus 4.8 b173630e81 query: exports:<elf> — procedencia por-símbolo (puente barato de ADR 0009)
Extiende el parser ELF (parse_elf_needed→parse_elf_info): además de DT_NEEDED,
recorre .dynsym (DT_SYMTAB) y extrae los símbolos EXPORTADOS (defined +
global/weak). Nuevo término `exports:<path>` en el mini-lenguaje de queries;
fluye por el bus (query expr) sin cambios. Metadata descriptiva, fuera de
hash_inputs (misma disciplina que la evidencia de H1). Refactor: helper
vaddr_to_file_off compartido por strtab/symtab + cstr_at.

nsyms vía layout convencional (strtab sigue a symtab); best-effort → [] si no
se puede acotar con seguridad. Validado end-to-end: 2873 símbolos reales de
/lib/libc.so.6 (aguanta glibc y musl). Tests: term-parse + missing-file +
host-gated real-.so. Workspace verde (33 suites).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 06:10:59 -04:00
sergioandClaude Opus 4.8 236aac7c7f docs: ADR 0009 código direccionado por contenido (H3a) — registrar visión Unison
Design-doc de la idea 3 (SDD 15 §H3): decide NO reescribir la unidad de
compilación. Puente barato = procedencia por-símbolo como metadata (extender
el parser ELF parse_elf_needed para emitir exports de .dynsym), fuera de
hash_inputs — misma disciplina que la evidencia de H1. El grano fino real
(función-por-hash) se difiere a H3b sobre wasm, gateado por el determinismo H2.
Marca §H3a  en la frontera.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 06:03:48 -04:00
sergioandClaude Opus 4.8 7a708aa282 docs: SDD 15 §H2a hecho — auditoría de determinismo wasm de wawa
El subconjunto puro ya existe (ejecutar_dinamico/_v2, linker vacío); H2a lo
sella con un contrato de clave de caché + hash-de-entorno. Deliverable en
tawasuyu/03_ukupacha/wawa/SDD-determinismo.md. Desbloquea H2b (prototipo de
memoización local blake3(módulo)⊕blake3(entrada)→salida).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 01:11:21 -04:00
sergioandClaude Opus 4.8 6ac6438c00 H1c (proof-carrying recipes): cablea la evidencia al Orchestrator VERIFY
La evidencia corre del lado del BUILD (hammer-agent no depende de hammer-build:
separación PROPONE/CONSTRUYE). Piezas:

- proto: RecipeInline lleva `evidence`; Event::BuildReady lleva
  `verdict: Option<EvidenceVerdict>` (+ EvidenceCheckVerdict). Ambos con
  skip_serializing_if ⇒ wire compatible con clientes pre-H1c.
- hammerd/bus: run_compile ejecuta la evidencia declarada tras sellar el
  artefacto (run_evidence vía swm_bridge::recipe_from_source_patch) y adjunta
  el veredicto en BuildReady. Si ni se pudo ejecutar ⇒ veredicto fallido
  sintético (no pasa en silencio). El lab reporta; el gate vive en el agente.
- client: compile() devuelve CompileOutcome { artifact, verdict }.
- orchestrator: VERIFY lee el veredicto; si all_passed=false empuja
  VerifyCheck::fail y ABORTA antes de hidratar (artefacto sellado, no toca el
  sistema). Nuevo constructor VerifyCheck::fail.

Tests: roundtrip del veredicto en proto; stub-bus refleja evidencia→verdict;
nueva prueba de integración orchestrator_evidence_gate (veredicto fallido ⇒
run() aborta con "no se propone" y no hidrata). Suite completa verde (33 suites).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 13:33:25 -04:00
sergioandClaude Opus 4.8 497d0d00e7 H1b (proof-carrying recipes): checker swm-verify --evidence que ejecuta la evidencia
El verificador que corre cada check en el sandbox reproducible y falla ⇒ no proponer
(SDD 15 §H1). Piezas: (1) hammer-core: EvidenceCheck::evaluate(exit, stdout) -> CheckOutcome
(pura, testeada: exige expected_exit y, si hay, blake3(stdout)==expected_output) +
ArtifactHash::of_bytes. (2) hammer-build: Sandbox::run_capture -> CmdOutcome (captura stdout
completo + exit, tee de stderr) + run_evidence(recipe,cfg,store) -> EvidenceReport que
reproduce el artefacto (cache-hit), levanta un sandbox con fuente+build-deps+el artefacto
instalado como capa overlay (binarios en PATH) y corre cada check. (3) CLI: swm-verify
--evidence reconstruye cada source_patch y corre run_evidence; imprime veredicto por check +
estrato máximo alcanzado; exit != 0 si algún check falla. Es un runner de comandos con hash
del output, no un framework — la confianza vive en el checker.

Verificado e2e: tree con [[evidence.checks]] cmd-exit 'tree --version' → pack cache-hitea
(evidencia no cambia el hash) → swm-verify --evidence corre el check en el sandbox: pasa (exit
0) y falla con expected_exit=7 (exit 1, 'NO proponer'). Núcleo puro con tests unitarios.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 13:03:34 -04:00
sergioandClaude Opus 4.8 39f0f26e7b H1a: fix construcción SourcePatch en test del orchestrator (campo evidence faltante)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 12:42:56 -04:00
sergioandClaude Opus 4.8 3116ccfc93 H1a (proof-carrying recipes): bloque evidence en receta y .swm
Frontera AI-nativa SDD 15 §H1. Agrega `Evidence { checks: Vec<EvidenceCheck> }` a Recipe
(TOML) y a Mutation::SourcePatch (.swm YAML): cada check es {kind, cmd, expected_exit,
expected_output?} con kind ∈ {cmd-exit, proptest, contract, kani} (estratos de confianza
crecientes, EvidenceKind: Ord). DECISIÓN CLAVE: la evidencia NO entra en hash_inputs —
certifica comportamiento, no identidad ⇒ no mueve el artifact_hash (baseline de
reproducibilidad intacto). Round-trip completo: from_recipe (forward) + swm_bridge
synthesize_recipe (reverse) + camino de pack (cli). verify_schema valida forma (cmd no
vacío, expected_output con prefijo b3:). El checker que EJECUTA la evidencia es H1b; el
cableado al Orchestrator VERIFY es H1c (marcado con evidence: _). Tests: recipe + swm,
incl. que la evidencia no cambia el hash. Sin warnings clippy nuevos.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 12:41:23 -04:00
sergioandClaude Opus 4.8 49106ed4ca Etapa G (GUI): appstream — agrega openssl a build-deps (dep transitiva de libcurl.pc)
appstream (dep compartida de libadwaita + demos GTK) usa libcurl en su meson (meson.build:171)
y declaraba curl+zlib sin openssl; libcurl.pc trae Requires: zlib,openssl ⇒ sin openssl.pc en
el sandbox, appstream falla y bloquea toda la cadena aguas arriba. Raíz real del muro que se
veía como 'libadwaita openssl not found' (el que fallaba era appstream, dep de libadwaita).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:49:50 -04:00
sergioandClaude Opus 4.8 d283630ecf Etapa G (GUI): libadwaita/demos — agrega openssl a build-deps (dep transitiva de libcurl.pc)
Las 4 recetas que dependen de curl (libadwaita + adwaita-hello/hammer-edit/sourceview-hello)
declaraban curl+zlib pero no openssl; libcurl.pc trae Requires.private: openssl (y libcurl.pc
sin openssl.pc en el sandbox ⇒ meson falla 'Dependency lookup for libcurl failed: openssl not
found'). Mismo patrón que harfbuzz/fontconfig. openssl ya está en el catálogo (recipes/openssl.toml).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:38:19 -04:00
sergioandClaude Opus 4.8 eae22122f5 Etapa G (GUI): cairo — preserva cairo-script-interpreter.pc (fix de regresión)
El patch anterior desactivaba el subdir cairo-script ENTERO para esquivar el link de pixman de
los ejecutables csi-*, pero eso quitaba libcairoscript + cairo-script-interpreter.pc, que los
demos GTK (gtk4-hello/adwaita-hello/sourceview-hello/hammer-edit) piden por pkg-config. Ahora el
subdir se construye (librería estática + .pc) y solo los EJECUTABLES csi-* se envuelven en
if false. cairo-trace queda saltado (nada pide su .pc). Verificado: cairo-script-interpreter.pc
presente en el artefacto sellado.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:35:54 -04:00
sergioandClaude Opus 4.8 823c7e1171 Etapa G (granja): concilia la colisión de concurrencia — reintento serial de fallos por dep compartida
build-farm.sh asumía 'sin colisión entre recetas distintas', falso para deps transitivas
compartidas no selladas: dos consumidores (p.ej. libadwaita/gtksourceview) construyen gtk4 a
la vez en el mismo sources/gtk4-<sha>/output ⇒ 'Some other Meson process is already using this
build directory'. Fase 1b: tras el pool paralelo, reintenta EN SERIE los fallos con firma de
colisión — la dep ya la selló el ganador ⇒ cache-hit y compila. Un pase basta (cada build
arrastra sus deps). Sólo reintenta colisiones, no MSRV/dep-faltante reales.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:25:19 -04:00
sergioandClaude Opus 4.8 a3732fc964 Etapa G (GUI): harfbuzz — agrega libpng a build-deps (dep transitiva de freetype2.pc)
freetype se compila --with-png ⇒ freetype2.pc trae Requires: zlib, libpng. harfbuzz tenía
zlib pero no libpng ⇒ pkg-config no resolvía freetype2 y meson setup abortaba
('freetype2 required but not found'). Mismo patrón que fontconfig (80a9cac). Con cairo ya
construyendo (patch ctime_r), esto destraba harfbuzz→pango (ambos sellan).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:09:17 -04:00
sergioandClaude Opus 4.8 f6b31ea3dd Etapa G (GUI): cairo construye bajo zig — patch fuerza HAVE_CTIME_R + salta utils
El probe has_function('ctime_r') de meson corre sin prefix de header ⇒ prototipo desnudo
que bajo zig-cc/gcc+musl choca con el builtin y FALLA ⇒ cairo-ps-surface.c:105 define un
fallback static que colisiona con <time.h> (error duro, tanto zig como gcc; _GNU_SOURCE en
c_args no alcanza). El patch fuerza HAVE_CTIME_R=1 tras el loop. Segundo hunk: salta los
ejecutables util csi-*/cairo-trace, que no linkean libpixman-1.a bajo la estrategia
no_fallback de zig — son dev-tools, no la librería que pango/gtk4 consumen. Resultado:
cairo 1.18.4 sella desde fuente (store c7b8703f), destraba el rebuild de la cadena GUI que
el drift de fontconfig/freetype había forzado. Cierra la Opción A (inviable) con la B real.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 10:53:23 -04:00
sergioandClaude Opus 4.8 d3da07fb3e docs: SDD 15 frontera AI-nativa — proof-carrying recipes, computo como dato, codigo por contenido
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 10:00:08 -04:00
sergioandClaude Opus 4.8 114a02b597 Etapa G (granja): watchdog protege árboles calientes — cura corrupción de deps transitivas
El watchdog de disco purgaba work/sources/* protegiendo solo árboles bind-montados
por bwrap (prot.1) o cuyo nombre coincide con la receta en vuelo (prot.2). Una dep
transitiva (cairo bajo pango/gtk4) se extrae host-side ANTES del bwrap y con nombre
que no coincide con la receta ⇒ el rm -rf competía con el tar y dejaba el árbol a
medias: 'Cannot mkdir' durante la extracción, luego 'Directory not empty' para
siempre (falla rápido antes de bwrap, nunca se recupera). Prot.3: no purgar árboles
modificados hace <2 min (extrayéndose ahora); los fríos se purgan y re-extraen limpio.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 06:30:29 -04:00
sergioandClaude Opus 4.8 80a9cacd07 Etapa G (GUI): fontconfig — agrega libpng+zlib a build-deps (dep transitiva de freetype2.pc)
freetype se compila --with-png ⇒ freetype2.pc trae `Requires: libpng` (y libpng→zlib).
Sin esos .pc en el sandbox, pkg-config no resuelve freetype2 y ./configure aborta con
"freetype2 >= 21.0.15 not met". Reproducible sólo al rebuildear freetype canónica (antes
tapado por cache-hit). fontconfig vuelve a construir desde fuente.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 15:00:54 -04:00
sergioandClaude Opus 4.8 6a33b41931 Etapa G (GUI): rescata los 3 patches huérfanos de freetype canónica
recipes/freetype.toml referencia pcf-family-names/subpixel/table-validation-modules.patch
pero vivían solo en incoming-clib/ (patch-huérfano) ⇒ freetype no packeaba y bloqueaba
toda la cadena GUI (pango/gtk4/... dependen de freetype). Copiados a recipes/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 14:37:51 -04:00
sergioandClaude Opus 4.8 b67101a78a Etapa G (clib/GUI): gradúa 6 libs gráficas ya publicadas — libwebp/libepoxy/fontconfig/cairo/gdk-pixbuf/appstream
Sus deps foundational ya publicadas ⇒ el orden de dependencias resolvió y packean+firman.
Sin colisión con canónicas. Quedan en incoming-clib las 8 GUI meson pesadas (gtk4/pango/
libadwaita/gtksourceview + demos) y las 13 variantes colisionantes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 14:29:48 -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 7008d0446b Etapa G (clib): gradúa 15 libs C ya publicadas — incoming-clib → recipes/
Cierra el desfase receta/repo: 15 recetas que ya construyen y están publicadas+firmadas
en dist/repo pero seguían en la cola de staging. Sin colisión con canónicas (guarda de
build-farm). Los .patch viajan con su receta. Quedan en incoming-clib las 13 variantes
colisionantes (build-deps del stack GUI) y las 14 GUI deep-dep sin publicar aún.

brotli fribidi gettext-tiny giflib glib gperf graphene harfbuzz itstool
libjpeg-turbo libsass libtiff libxmlb lz4 sassc

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 09:47:15 -04:00
sergioandClaude Opus 4.8 4517a985c1 Etapa G (granja): promote más seguro — patches viajan con la receta + guarda de colisión
Dos bugs del promote de build-farm.sh, hallados al cosechar incoming-clib:
1. mv movía el .toml pero NO sus .patch (quedaban en la cola) ⇒ toda receta
   parcheada fallaba el pack ("leyendo patch ...: No such file or directory").
   Ahora mueve los patches referenciados junto al .toml.
2. mv sobrescribía a ciegas una receta canónica de recipes/ con una variante
   homónima de la cola (p.ej. curl 8.11 mínimo-para-appstream pisando el
   curl 8.20 full). Se agrega guarda: si ya existe recipes/<n>.toml, NO se
   promueve la variante (queda staged para triage) ni se re-publica.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 06:11:36 -04:00
sergioandClaude Opus 4.8 0c6290a0b6 Etapa G (clib): arregla brotli (cmake vía [deps].build, sin Ninja/wheel) + elimina bzip2 duplicado
brotli fallaba con 'cmake: not found' porque no declaraba cmake en [deps].build
(patrón libjpeg-turbo/libtiff que sí materializa el tool). bzip2 en incoming-clib
era un duplicado del ya-promovido recipes/bzip2.toml (sellado en dist/repo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 05:24:44 -04:00
sergioandClaude Opus 4.8 957c6bc9de Etapa G (GUI): hammer-edit — editor de código REAL del distro (Adwaita+GtkSourceView)
Abrir/guardar/guardar-como (GtkFileDialog async), resaltado por extensión, números de línea, línea
actual, auto-indent, apertura de archivos desde CLI (G_APPLICATION_HANDLES_OPEN). Link 100% estático:
157MB ELF 'not a dynamic executable', --help responde. App instalable y usable, no una demo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 20:25:48 -04:00
sergioandClaude Opus 4.8 f7582cfd24 Etapa G (GUI): arregla hojas giflib/xz/libwebp — deps espurias del import nix
giflib: quita xmlto (solo docs). xz: fuente release (trae ./configure; el archive del tag no) + quita
autoconf/automake/libtool. libwebp construye al destrabarse giflib. Limpia los fallos recurrentes del loop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 15:31:02 -04:00
sergioandClaude Opus 4.8 0855015e51 Etapa G (GUI): sourceview-hello — editor de código (Adwaita + GtkSourceView, resaltado C + nums de línea)
Link 100% estático: gtk4+libadwaita+gtksourceview → 154MB ELF estático, corre. Esqueleto de un editor
real para el distro; valida los 3 stacks juntos.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 14:59:57 -04:00
sergioandClaude Opus 4.8 4cf2eb5f2e Etapa G (GUI): gtksourceview 5.16 ✓ — widget de edición de código sobre GTK4 (base de editores/IDEs)
meson static; introspection/vapi/docs/sysprof off; sed elimina subdir tests/testsuite (linkean gtk4
estático y fallan por privadas, pero la lib sí construye).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 14:57:02 -04:00
sergioandClaude Opus 4.8 3cb76892cb Etapa G (GUI): validación libadwaita — adwaita-hello (AdwApplicationWindow+ToolbarView+StatusPage)
Linkeado 100% estático contra libadwaita-1.a: binario 152MB, ELF 'not a dynamic executable', corre.
Prueba que el stack Adwaita del lab es usable por apps reales.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 13:01:08 -04:00
sergioandClaude Opus 4.8 34697bb34a Etapa G (GUI): 🎉 libadwaita 1.7.6 ✓ — widgets modernos GNOME (Adwaita) sobre GTK4, static-musl
libadwaita-1.a archive GORDO (meson library() normal, sin el split de GTK) + libadwaita-1.pc + adwaita.h.
Cierra el stack GUI de alto nivel del lab: ya se pueden construir apps Adwaita.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 12:59:00 -04:00
sergioandClaude Opus 4.8 ec68fbe6f3 Etapa G (GUI): cadena de soporte de libadwaita — libsass/sassc (C++), libyaml, curl(min), libxmlb, gettext-tiny, itstool(stub), appstream(lean)
appstream 1.0.5 lean (compose/svg/stemming/gir/systemd off) destrabado con: gettext-tiny (msgfmt
p/ i18n de meson), itstool stub (copia el join-source, sin traducciones), curl mínimo (sin TLS, solo
satisface el link), libxmlb+libyaml, y sed que elimina subdir('docs/') incondicional (xsltproc+docbook).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 12:56:44 -04:00
sergioandClaude Opus 4.8 dfdddf062a Etapa G (GUI): libsass 3.6.6 + sassc 3.6.2 (C++ vía zig c++) — compilador SCSS para los estilos de libadwaita
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 12:28:23 -04:00
sergioandClaude Opus 4.8 82dfbcebfe Etapa G (GUI): validación — gtk4-hello, app GTK4 linkeada 100% estática contra libgtk-4.a
- gtk4.toml: el merge ahora fusiona TODOS los convenience-libs bajo output/ (gtk/css, gdk/wayland,
  cursor, gsk…), no solo gtk/gdk/gsk — el .a queda monolítico y autocontenido.
- gtk4-hello.toml: hello.c propio (GtkApplication+ventana), link estático vía pkg-config --static gtk4
  + privadas de gdk/gsk que gtk4.pc no declara (harfbuzz-subset/epoxy/xkbcommon/wayland/tiff/jpeg/
  cairo-script-interpreter). Binario: 134MB, ELF 'not a dynamic executable', corre (exit 0).

Prueba de que el toolkit de GUI del lab es USABLE por apps reales, no solo que compila.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:52:48 -04:00
sergioandClaude Opus 4.8 6ccd1c3846 Etapa G (GUI): 🎉 GTK4 4.18.6 ✓ — el toolkit de GUI completo, static-musl/zig-cc
Backend solo wayland (GL renderer vía libepoxy, vulkan off), todo lo opcional off.
Cierre .pc transitivo completo (24 deps). Parches: tools→libgtk_static_dep (la .so no
linkea con -static); instala libgtk-4.a además de la .so (apps static-musl). Corona el
stack gráfico C: glib/cairo/pango/gdk-pixbuf/graphene/libepoxy/wayland/mesa/harfbuzz/…

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:22:05 -04:00
sergioandClaude Opus 4.8 71e0769968 Etapa G (GUI): harfbuzz glib=enabled (hb-glib.h p/ GTK4) + cierre .pc transitivo (glib/pcre2/libffi/zlib) + PKG_CONFIG_PATH
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:06:26 -04:00
sergioandClaude Opus 4.8 6d7ab24fea Etapa G (GUI): libjpeg-turbo instala en /usr/lib (no lib64) — destraba pkg-config de libtiff→libjpeg y GTK4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 09:56:02 -04:00
sergioandClaude Opus 4.8 a1b88d1735 Etapa G (GUI): libtiff ✓ — loader TIFF que gdk de GTK4 exige hard; cmake static, solo target tiff (esquiva helper mkg3states shared)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 09:51:49 -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 ee3481b693 Etapa G: ncurses fallbacks built-in + install solo libs/includes (el tic de la DB terminfo es patológicamente lento) 2026-06-30 06:50:16 -04:00
sergio f109946eef Etapa G: sqlite/ncurses/readline (libs C foundational static) — destraban apps downstream 2026-06-30 06:10:56 -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 223e614e95 Etapa G: zstd vía Makefile ZSTD_NO_ASM=1 (zig rechaza el .S de huf_decompress) 2026-06-30 05:01:30 -04:00
sergio c500470dbe Etapa G: libjpeg-turbo/zstd (cmake static) + lz4 (make static) — leaves imagen/compresión 2026-06-30 04:40:07 -04:00
sergio 5e68c03d94 Etapa G: libepoxy URL al github archive (la de releases daba 404) 2026-06-30 04:37:26 -04:00
sergio 87cc683765 Etapa G: graphene/libepoxy/libxkbcommon limpias (deps GTK4, meson static) 2026-06-30 04:31:40 -04:00
sergio 1db3ef0a5c Etapa G: gdk-pixbuf limpia (meson static, PNG, cierre transitivo) — carga de imágenes GUI 2026-06-30 00:42:32 -04:00
sergio 8335457e84 Etapa G: stack texto/2D+glib COMPLETO (16 libs C static) — base GTK/GUI + patrones de-Alpinización en memoria 2026-06-30 00:41:49 -04:00
sergio d40caecd4c Etapa G: pango cierre transitivo de .pc + c_args date-time 2026-06-30 00:40:38 -04:00
sergio d1134dc4bd Etapa G: cairo -Dc_args=-Wno-error=date-time (util cairo-script usa __DATE__) 2026-06-30 00:39:40 -04:00
sergio 01a58f253c Etapa G: cairo deps libffi+pcre2 (glib.pc Requires.private; pkg-config static transitivo) 2026-06-30 00:38:27 -04:00
sergio 91c708f8a5 Etapa G: cairo dep expat (fontconfig.pc Requires.private expat; pkg-config static lo exige) 2026-06-30 00:37:46 -04:00
sergio 6117ccd6e5 Etapa G: cairo/pango --wrap-mode=nodownload + PKG_CONFIG_PATH (usar deps del sistema, no bajar subproyectos) 2026-06-30 00:36:50 -04:00
sergio 97af53d737 Etapa G: cairo + pango limpias (meson static --prefer-static) — capstone texto/2D GUI 2026-06-30 00:29:57 -04:00
sergio 2c23b1a0b4 Etapa G: fontconfig dep python3 (su configure lo exige) 2026-06-30 00:28:05 -04:00
sergio fcd36fc2fc Etapa G: gperf -std=c++14 (3.1 usa 'register', prohibido en C++17) 2026-06-30 00:23:41 -04:00
sergio 205302afbb Etapa G: gperf (build-tool fontconfig) + glib --prefer-static (linkea .a no .so del base Alpine) 2026-06-30 00:17:24 -04:00
sergio f40af6718f Etapa G: expat/libxml2/fontconfig/glib limpias (static, sha256 computados, nls off en glib) 2026-06-30 00:10:04 -04:00
sergio dc5fd6701c Etapa G: pcre2/libpng/harfbuzz reescritas limpias (static, bottom-up GUI) 2026-06-30 00:00:10 -04:00
sergio 7c3ffef8eb Etapa G: nota frontera C/GUI (bases freetype/pixman/fribidi static + patrones de-Alpinización) 2026-06-29 23:31:35 -04:00
sergio 6e28cd9566 Etapa G: freetype/pixman/fribidi reescritas LIMPIAS (meson static mínimo, sin abuild) — bases GUI 2026-06-29 23:26:35 -04:00
sergio b32f3a0174 Etapa G: libs C autotools (expat/pcre2/libffi/libpng/fontconfig/gettext) a static (--disable-shared --enable-static) 2026-06-29 23:11:42 -04:00
sergio 1138c8981f Etapa G: zlib static (sin --shared, make libz.a) — lab static-musl rechaza el test shared 2026-06-29 23:09:46 -04:00
sergio 031535823f Etapa G: siembra 24 libs C de toolkit en incoming-clib (zlib/freetype/fontconfig/harfbuzz/cairo/pango/glib/...) — llenador de horas + ladrillos GUI 2026-06-29 23:02:57 -04:00
sergio 27fb9d4812 Etapa G: worker muele 3ª cola recipes/incoming-clib (libs C toolkit; el cron-go la ignora) 2026-06-29 22:56:01 -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 3f9121798f Etapa G: fetch extrae tarballs con tar --no-same-owner (fix de clase)
Como root (granja), tar preservaba el uid del tarball → el sandbox (userns) no podía chmod/escribir
esos ficheros → configure autotools fallaba (oniguruma: Permission denied creando Makefile). Extraer
como root sin preservar owner lo arregla para TODO tarball. oniguruma vuelve a configure plano.
2026-06-29 15:54:46 -04:00
sergio 533ed500c7 Etapa G: oniguruma — chmod -R u+w antes de configure (tarball extrae src/ sin escritura) 2026-06-29 15:49:27 -04:00
sergio 87016ad173 Etapa G: receta oniguruma 6.9.10 (lib C regex, autotools) — prerequisito cgo p/ dolt y jq-likes 2026-06-29 15:46:10 -04:00
sergio b249cda7a1 Etapa G: gocryptfs PROMOVIDO con openssl (cgo-lib-externa validado: libcrypto linkeado vía overlay+pkg-config, estático) 2026-06-29 15:43:44 -04:00
sergio 6e5dc54686 Etapa G: gocryptfs cgo+openssl (caso cgo-lib-externa: linkea libcrypto vía pkg-config) 2026-06-29 15:38:23 -04:00
sergio dfaca62f03 Etapa G: csvtk PROMOVIDO (v0.33.0; nota 'subdir' era vieja, go.mod en raíz) + dolt subdir=go validado (queda por cgo+oniguruma externa) 2026-06-29 15:14:10 -04:00
sergio c583c4d679 Etapa G: frontera go.mod-en-subdir — knob [build] subdir (vendor/detect/compile en src/<subdir>)
Destraba proyectos Go cuyo módulo no está en la raíz (dolt→go, csvtk→subdir): vendor_go_deps corre en
el subdir, detect_build_system/detect_go_main operan ahí, y el compile hace 'cd <subdir>' primero.
Test go_subdir_compiles_in_subdir.
2026-06-29 15:06:35 -04:00
sergio 49ce5cf051 Etapa G: granja — siembra +8 Go (gopass/lefthook/gh-ost/gocryptfs/temporal-cli/svu/git-chglog/hostctl)
flyctl no en nixpkgs; viddy dropeado (es Rust ahora, no Go). gocryptfs puede pedir CGO+openssl externa.
2026-06-29 14:56:18 -04:00
sergio b01d133994 Handoff → agente tawasuyu: tareas mesa-nouveau/NVK + firmware GSP + USB live para el tester NVIDIA
El kernel linux-generic 7.1.2 (b3:fded43c0…, nouveau KMS) está listo en el store. Faltan, de su frente:
mesa con nouveau/NVK (la actual es iris-only), firmware nouveau GSP en /lib/firmware, y el armado del
USB. mirada en NVIDIA necesita los tres además del kernel.
2026-06-29 14:49:58 -04:00
sergio 89c94e4435 Etapa G: linux-generic — excluye amd/ del Makefile drm (sledgehammer; amdgpu ICE en 7.1+gcc gueto)
syncconfig re-activaba amdgpu pese a kconfig -d (DRM_AMD_DC default-y), y amdgpu_userq_fence.c hace
ICE sin mensaje con el gcc del gueto. Borro las líneas obj-$(CONFIG_DRM_AMDGPU)+= amd/ del Makefile
del drm: amd nunca se compila, garantizado. i915+radeon+nouveau intactos. amdgpu (AMD moderno) = v2.
2026-06-29 13:04:34 -04:00
sergio 348b5ebe42 Etapa G: linux-generic — patrón probado (bzImage directo, amdgpu+DC+HSA off en config principal)
Revierte el make-prepare separado (disparaba syncconfig que re-activaba amdgpu). Como linux-metal:
-d DRM_AMDGPU -d DRM_AMD_DC -d HSA_AMD antes de olddefconfig + bzImage directo. Single clean build.
2026-06-29 12:52:58 -04:00
sergio 743b943861 Etapa G: linux-generic — disablea amdgpu + TODOS sus dependientes (DC/DC_FP/HSA_AMD/SI/CIK)
El -d solo-amdgpu dejaba DRM_AMD_DC/HSA_AMD =y → syncconfig (make prepare) re-activaba amdgpu para
satisfacerlos. Disablearlos juntos elimina la inconsistencia.
2026-06-29 12:47:35 -04:00
sergio 9fa01e50f9 Etapa G: linux-generic — fuerza amdgpu OFF tras olddefconfig (defconfig lo dejaba =y pese al -d previo) 2026-06-29 12:29:20 -04:00
sergio eeaf946265 Etapa G: linux-generic — 'make prepare' serie antes del bzImage paralelo + amdgpu OFF (-d)
El -j$(nproc) arrancaba a compilar antes de que prepare generara asm-generic/*.h + include/generated/*
→ cascada de 'fatal error: No such file'. prepare serie primero lo resuelve. amdgpu deshabilitado bien
(defconfig lo dejaba =y).
2026-06-29 12:16:19 -04:00
sergio 26ccce9ad7 Etapa G: linux-generic v1 sin amdgpu (i915+radeon+nouveau) — el más grande/riesgoso, a v2 2026-06-29 12:02:31 -04:00
sergio f70993ef5a Etapa G: kernel GENÉRICO 7.1.2 para testers (linux-generic.toml) — i915+amdgpu+nouveau
Un bzImage que bootea hardware variado (Intel/AMD/NVIDIA), no clavado a un laptop. GPU built-in las
3 familias + simpledrm fallback; squashfs+overlay (live USB); storage/USB/input/EFI/VFAT/ISO9660
amplios; monolítico (arje-zero PID1, sin módulos). NVIDIA: el kernel da KMS por nouveau, pero mirada
en NVIDIA necesita ADEMÁS firmware GSP en la imagen + mesa con nouveau/NVK (frente del otro agente).
linux.toml (6.16, baseline selfhost) y linux-metal NO se tocan.
2026-06-29 11:35:46 -04:00
sergio d47be16a8b Etapa G: frontera CGO — knob 'cgo=true' (CC=zig cc + static) destraba sqlite bundled-C
vendor_go_deps/BuildSys::Go por defecto compila CGO_ENABLED=0 (Go puro estático). Nuevo campo
[build] cgo=true ⇒ CGO_ENABLED=1 CC="zig cc" (musl nativo del sandbox) + -linkmode=external
-extldflags=-static. Validado: usql + sq (driver sqlite3 mattn, bundled-C) → estáticos y CORREN
(usql 0.0.0-dev, sq v0.0.0-dev). Tests go_cgo_knob_switches_compile_env. cgo contra libs C EXTERNAS
(gpgme/libvirt en werf/minikube/skopeo) aún requiere esas recetas; esto cubre la clase bundled-C.
2026-06-29 11:04:27 -04:00
sergio 4bb5e67e82 Etapa G: harvest-go sale temprano si la cola está vacía (evita rsync del store de GB en balde) 2026-06-29 10:35:19 -04:00
sergio b9a3e55dd7 Etapa G: promueve envconsul/levant/pgweb/steampipe (reseed lunes); glooctl diferido (monorepo gloo) 2026-06-29 10:34:26 -04:00
sergio 73212b72d1 Etapa G: consul-template (cosecha cron, commit trunco por colisión con sesión activa) 2026-06-29 10:17:32 -04:00
sergio efd670a666 Etapa G: git-town PROMOVIDO (go.work, Git Town 23.0.3) + kustomize flags=./kustomize + gate alias go-mockery→mockery 2026-06-29 10:13:16 -04:00
sergio c2ebf15b6b Etapa G: frontera go.work — go-mockery(mockery)+k3d CONSTRUYEN con 'go work vendor'
Validados estáticos (k3d v5-dev, mockery corre). Primeros frutos del soporte go.work multimódulo.
2026-06-29 10:07:27 -04:00
sergio f5880331ed Etapa G: soporte go.work multimódulo (vendor_go_deps usa 'go work vendor')
Destraba la clase workspace (go-mockery/k3d/git-town/csvtk): con go.work, GOWORK=off + 'go mod
vendor' sólo vendoreaba el módulo raíz → 'inconsistent vendoring' en el build. Ahora si hay go.work
se usa 'go work vendor' (go 1.22+, vendor consistente de todo el workspace); el trigger y
detect_build_system también reconocen go.work (workspace sin go.mod raíz). Test detect_go_when_only_go_work.
2026-06-29 09:57:06 -04:00
sergio 388bf9b89c Etapa G: reseed lunes (+6 Go: steampipe/pgweb/consul-template/envconsul/levant/glooctl)
Dropeados re-imports ya-en-corpus (rqlite/octosql/trufflehog/cosign/gptscript/cue), grype/syft
(Alpine NOGO, ya en hold-nongo) y dolt/kustomize (diferidos: multimódulo).
2026-06-29 09:15:58 -04:00
sergio 169b02d1c8 Etapa G: cosecha-go finde (auto) — promovidos: soft-serve tfsec | review: 2026-06-29 09:14:02 -04:00
sergio 237f9796e7 Etapa G: gate alias soft-serve→soft (charmbracelet) + re-encola soft-serve (falso-rechazo) 2026-06-29 09:12:45 -04:00
sergio bcf70dcd32 Etapa G: cosecha-go finde (auto) — promovidos: charm gdu gobgp gotty k6 kube-linter melt mods nerdctl pop scc skate velero wishlist yj | review: soft-serve(bin=soft) 2026-06-29 09:10:41 -04:00