piloto trace END-TO-END: build real de zlib trazado en store desechable — el hash REPRODUCE bit a bit el sellado (b3:2623a403), poda filosa (make 1/8 ficheros, busybox 1/2), taxonomía de ruido medida (+/cache al normalizador); harkaq-trace-build.sh orquesta (tracer por fase vía /proc/pid/root)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 04:08:08 -04:00
co-authored by Claude Fable 5
parent c707c1e13f
commit 9395fbfc5c
3 changed files with 116 additions and 4 deletions
+25 -3
View File
@@ -67,9 +67,31 @@ contrato que suggest). Piloto: 3 recetas ya instrumentadas (zlib, tar, brotli),
la traza. Bonus: los paths salen EN EL NAMESPACE DEL SANDBOX (`/usr/include/zlib.h`) —
el mismo idioma de la política harkaq, sin traducción host↔jaula. Cero código nuevo:
`harkaq-trace --fs /proc/$PID/root --prefix /usr`.
3. **Pendiente de orquestación**: alguien tiene que darle al tracer el pid del bwrap en
vuelo (wrapper sobre `hammer build`, o hammerd). Ese es el siguiente paso de T1.1, y
donde toca coordinar con el harness (carril de Opus) para no duplicar lanzadores.
3. ~~Pendiente de orquestación~~ **HECHO en forma piloto**: `harkaq-trace-build.sh` envuelve
un `hammer build`, engancha un tracer a cada bwrap que aparece (un bwrap por fase = una
traza por fase, la granularidad del veredicto) y emite canónica + sello + tabla
declaradas-vs-usadas. La integración sin carrera (lanzar el tracer ANTES del exec, no
por polling) sigue siendo del harness — coordinar con Opus.
**PILOTO END-TO-END (2026-07-17, worker, `hammer build` real de zlib en store desechable
con deps hardlinkeadas — cero contaminación):**
- **El build trazado SELLÓ y el hash REPRODUJO bit a bit un artefacto ya sellado del store
principal** (`b3:2623a403…`): la traza no perturba el build y un store fresco reproduce —
mini-consenso de regalo.
- **La señal de poda (T1.4) existe y es filosa**: de la clausura concedida, el build usó
`make` **1 de 8** ficheros y `busybox` **1 de 2**. Por-fichero, no por-paquete — la misma
granularidad que la política.
- **Taxonomía del ruido medida** (3520 paths únicos crudos): 84 de `/cache` (cache zig
interna = estado derivado del build, regla nueva en el normalizador), ~3.4k del stdlib de
zig (`/lib/compiler_rt/*.zig` — toolchain, no clausura de receta) y los productos del
propio build (`example.o`, tmpfiles borrados del upper). Tras las reglas, la clausura
real de zlib son un puñado de paths exactos. META MODE otra vez: **las reglas de
normalización SON el producto**.
- Caveats anotados: ventana ciega del polling (~decenas de ms por fase), helpers de bwrap
duplican marcas (la dedupe lo absorbe), y el sello del piloto es sha256 PROVISIONAL (el
real debe ser b3, espacio de nombres del store). Gotcha operativo: `--store` ajeno a la
raíz del repo rompe la resolución del rootfs (`<padre-del-store>/.dev-fs`).
---