From 4621381050cff2ca28659398eabd075db12d218b Mon Sep 17 00:00:00 2001 From: Sergio Date: Mon, 21 Sep 2026 20:30:49 +0000 Subject: [PATCH] =?UTF-8?q?simi:=20SELLADA=20en=20el=20worker=20=E2=80=94?= =?UTF-8?q?=20est=C3=A1tica=20de=20verdad,=20y=20la=20latencia=20del=20art?= =?UTF-8?q?efacto=20es=201,04x=20el=20ash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit b3:46ff6fcf67bd23dece4d130c92855908520200f88ca85981317f81fcc56bb834 Construida con flock -o en dev.gioser.net (el LXC prestado, coste 0). El artefacto trae dos ficheros: usr/bin/simi y su .hammer/recipe.toml. Medido sobre el ARTEFACTO, no sobre el build del hub: - ELF x86-64 estático, stripped, 498.736 bytes - scripts/static-audit.sh simi: «estáticos de verdad: 1 · MIENTEN: 0», o sea que el link=static no es una declaración sino un hecho (ese guardián existe porque libtool lo ignora en silencio en otras recetas) - banco diferencial, 159 casos contra el ash de busybox: 0 divergencias (bash: 8, brush: 35) - latencia 468 us contra 449 us del ash: 1,04x. brush: 1569 us, 3,5x Y la lección que vale más que el número: el build NATIVO del hub (glibc, dinámico) daba 865 us, 1,4x el ash. El estático musl baja a 1,04x. Medir el binario que VIAJA, no el que se compila a mano — la diferencia fue del 35 % y habría quedado escrita como si fuera del shell. Sigue sin estar en ningún perfil de targets.toml a propósito: declararla es meterla en ATTEST_PATHS y eso es frente C, su propia unidad de trabajo. --- docs/plan-botar-busybox.md | 36 +++++++++++++++++++++++++++++------- recipes/simi.toml | 11 ++++++++--- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/docs/plan-botar-busybox.md b/docs/plan-botar-busybox.md index 68c9fdd8..1ac58067 100644 --- a/docs/plan-botar-busybox.md +++ b/docs/plan-botar-busybox.md @@ -912,8 +912,8 @@ tokenizador viejo se comía, y desapareció `i+1`. # `simi` — el `/bin/sh` propio, ESCRITO y MEDIDO (2026-09-21) -**Crate:** `crates/simi/` (4448 líneas, `libc` y nada más) · **receta:** `recipes/simi.toml` -(pineada, **sin construir todavía**) · **nombre:** *simi* es «boca, lengua» en quechua — es cómo se +**Crate:** `crates/simi/` (4448 líneas, `libc` y nada más) · **receta:** `recipes/simi.toml`, +**sellada** en `b3:46ff6fcf…` · **nombre:** *simi* es «boca, lengua» en quechua — es cómo se le habla a la máquina. `rimay` estaba tomado (la familia de embeddings de tawasuyu). ## El veredicto, primero @@ -923,16 +923,38 @@ tortura de comillas, los 23 fragmentos de las cards y los 19 `/init` empotrados: | shell | divergencias duras | binario | latencia | |---|---|---|---| -| **simi** | **0** | **0,48 MB** | **1,4×** el ash | +| **simi** (sellada, estática) | **0** | **0,48 MB** | **1,04×** el ash | | bash 5.3.0 | 8 | 1,57 MB | 1,3× | | brush 0.4.0 | 35 | 6,92 MB | 4,1× | Incluye el **bucle real de `config.status`** que genera cualquier `configure` de autotools — el que tumbó a brush. Y 47 pruebas propias del crate en verde. -⚠ **Lo medido es el build NATIVO del hub** (glibc, dinámico). El estático musl con zig cc —que es -como viajaría— **no se construyó**: falta la corrida en el lab y su sello. Hasta entonces, `simi` no -va en ningún perfil de `docs/state/targets.toml`. +## SELLADA, y medida contra el artefacto (2026-09-21) + +`takana build recipes/simi.toml` en el worker, bajo `flock -o work/.farm-build.lock`: + +``` +sealed path=./store/46ff6fcf67bd23dece4d130c92855908520200f88ca85981317f81fcc56bb834-simi +b3:46ff6fcf67bd23dece4d130c92855908520200f88ca85981317f81fcc56bb834 rc=0 +``` + +El artefacto trae exactamente dos ficheros: `usr/bin/simi` y su `.hammer/recipe.toml`. + +| qué | medido sobre el ARTEFACTO | +|---|---| +| tipo | ELF x86-64, **estático**, stripped | +| tamaño | **498 736 bytes** (0,48 MB) | +| `scripts/static-audit.sh simi` | «estáticos de verdad: 1 · MIENTEN: 0» | +| banco diferencial, 159 casos vs el ash | **0 divergencias** (bash: 8 · brush: 35) | +| latencia de arranque | **468 µs** contra **449 µs** del ash — **1,04×** (brush: 1569 µs, 3,5×) | + +⚠ **La latencia del estático musl no es la del build nativo**: el build del hub (glibc, dinámico) +daba 865 µs, o sea 1,4× el ash. El estático baja a 1,04×. **Medir el binario que viaja, no el que se +compila a mano** — la diferencia acá fue de un 35 % y habría quedado escrita como si fuera del shell. + +⚠ Todavía NO está en ningún perfil de `docs/state/targets.toml`. Declararla es meterla en la raíz de +confianza del arranque, y eso es el paso 3 de abajo. ## El alcance salió de la medición, no de POSIX @@ -980,7 +1002,7 @@ reemplaza el proceso** (si el shell forkea, arje supervisa al shell y no al daem ## Lo que queda, en orden -1. **Construir la receta en el lab** (zig cc, musl estático) y sellarla. Hasta ahí no hay artefacto. +1. ~~**Construir la receta en el lab** y sellarla.~~ **HECHO** — `b3:46ff6fcf…`, ver arriba. 2. **ADR** — escribir un shell propio y meterlo en `ATTEST_PATHS` es una decisión de frontera, y el nombre `simi` también. Este documento la registra; el ADR la decide. 3. **Cablear `/bin/sh`**: `USERLAND_COMPONENTS` + el retiro del homónimo (`lib.rs:676`). Es frente C diff --git a/recipes/simi.toml b/recipes/simi.toml index ab4f7949..a782e811 100644 --- a/recipes/simi.toml +++ b/recipes/simi.toml @@ -9,9 +9,14 @@ # divergencias POSIX medidas (reubeno/brush#1394 y #1396, las dos reportadas por nosotros). simi son # 4448 líneas con CERO divergencias contra el ash de busybox en los 159 casos del banco diferencial. # -# ⚠ Esta receta todavía NO se construyó: falta la corrida en el lab (zig cc, musl estático) y su -# sello. Lo medido hasta acá es el build nativo del hub (glibc dinámico, 499 KB) más las 47 pruebas -# del crate. No declarar `simi` en ningún perfil de `docs/state/targets.toml` antes de sellarla. +# SELLADA en el worker el 2026-09-21: `b3:46ff6fcf67bd23dece4d130c92855908520200f88ca85981317f81fcc56bb834` +# ELF x86-64 **estático** (verificado por `scripts/static-audit.sh simi`: «estáticos de verdad: 1, +# MIENTEN: 0»), stripped, **498 736 bytes**. Contra el artefacto sellado, no contra el build del hub: +# · banco diferencial, 159 casos vs el ash de busybox 1.36.1 → **0 divergencias** (bash: 8, brush: 35) +# · latencia de arranque **468 µs contra 449 µs del ash — 1,04×** (brush: 1569 µs, 3,5×) +# +# ⚠ Todavía NO está en ningún perfil de `docs/state/targets.toml`, y es a propósito: declararla es +# meterla en la raíz de confianza del arranque (frente C) y eso es su propia unidad de trabajo. name = "simi" version = "0.0.1"