# simi — el `/bin/sh` del producto. Código takana-PROPIO, no una adopción. # # Mismo patrón de receta que netup/hammerd/arje-zero: construye un crate del workspace a un commit # fijado, deps vendoreadas para build hermético `--offline`, link estático con zig cc. Sólo depende # de libc ⇒ vendor mínimo. # # Por qué propio y no adoptado (ver `docs/plan-botar-busybox.md`): el único candidato Rust maduro es # brush, y se midió — 6,9 MB contra 1,17 del busybox entero, 4,1× la latencia de arranque, y dos # 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. # # 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" license = "MIT" [source] # El propio takana. El commit es el identificador inmutable; subirlo cuando simi avance. repo = "https://git.gioser.net/sergio/takana.git" commit = "6809ef4be28f606aae856890a74667187ff75b05" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" # Split de la info de depuración, igual que hammerd. Entra en `hash_inputs`. strip_debug = true # Sólo el binario `simi` del workspace. flags = ["-p", "simi"] # Sin `[build.phases]`: igual que hammerd y netup, el BuildSys::Cargo del lab instala el binario del # crate. **El symlink `sh` NO lo pone esta receta**, y eso es a propósito: quién gana como `/bin/sh` # lo decide el ensamblado del producto (`USERLAND_COMPONENTS` en `crates/takana-bootstrap/src/lib.rs`, # que hidrata el userland Rust DESPUÉS de busybox para que ensombrezca sus applets, y `lib.rs:676`, # que retira el homónimo de los otros directorios). Ese cableado es frente C y es su propia unidad de # trabajo: mete a simi en la raíz de confianza del arranque, y eso no se hace de paso.