Commit Graph
441 Commits
Author SHA1 Message Date
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