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>
This commit is contained in:
@@ -169,14 +169,31 @@ proyecto, no una fase.
|
||||
por-símbolo como **metadata** (extender `parse_elf_needed`, `query.rs:298`, para emitir exports de
|
||||
`.dynsym` además de `DT_NEEDED`), 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 H2.
|
||||
- **H3b** — (exploratorio, opcional) Un experimento aislado: una base content-addressed de
|
||||
funciones **wasm** (grano: un `.wasm` por función pura de H2), viendo si el modelo "insertar
|
||||
definición, nunca romper" se sostiene sobre el runtime de wawa. Es el subconjunto de Unison
|
||||
que nuestro stack *ya* podría soportar (wasm + BLAKE3 + determinismo H2), sin un lenguaje nuevo.
|
||||
- **H3b** ✅ — (exploratorio) Base content-addressed de funciones **wasm** (grano: un `.wasm` por
|
||||
función pura de H2), verificando si "insertar definición, nunca romper" se sostiene sobre el
|
||||
runtime de wawa. Es el subconjunto de Unison que el stack *ya* soporta (wasm + BLAKE3 +
|
||||
determinismo H2), sin un lenguaje nuevo.
|
||||
**Hecho (2026-07-04, en `wawa-memo/src/base.rs` + `tests/h3b.rs`):** el módulo `base` monta la
|
||||
`Base` content-addressed sobre el grano de H2. Cuatro propiedades Unison, todas verificadas
|
||||
(8 tests verdes): **(1) identidad = `blake3(bytecode)`** — `definir` es idempotente y deduplica
|
||||
(structural sharing); **(2) los nombres humanos son metadata separada** (`nombre → Id`) — nombrar
|
||||
jamás toca `defs`; **(3) actualizar no rompe** (el corazón) — una referencia es un `Termino::Ref(Id)`,
|
||||
un hash; "actualizar f" = insertar def nueva (hash nuevo) + rebindear el nombre, y todo lo que
|
||||
apuntaba al hash viejo **evalúa idéntico** (v1 y v2 coexisten, ninguna se sobreescribe); **(4)
|
||||
composición por hash** — un programa es un árbol de hashes (`Termino::Componer`), su identidad
|
||||
`blake3(árbol)` es estable e **independiente del mapa de nombres**. Extras: una referencia
|
||||
colgante **falla con `Carga` sin mentir** (el hash no se resuelve en silencio a otra cosa), las
|
||||
fallas deterministas de H2 se propagan por la composición, y **evaluar reusa el `Memo`** (cada
|
||||
hoja `Ref` se memoiza) — código direccionado por contenido + cómputo direccionado por contenido
|
||||
= el mismo hash, la tesis de §H3 mostrada en pequeño. **Frontera:** NO es Unison entero (sin
|
||||
grano intra-función, sin typechecking sobre la base, sin lenguaje); es el *subconjunto* que
|
||||
wasm + BLAKE3 + H2 sostienen. Demuestra que el modelo **se sostiene**, no que hayamos colapsado
|
||||
paquete = función = proceso (eso sigue siendo el design-doc de H3a).
|
||||
|
||||
**Frontera honesta.** No prometer "una distro donde paquete = función = proceso" hasta que H3b
|
||||
demuestre que el grano fino se sostiene sobre wasm. Es la idea más disruptiva y la menos madura;
|
||||
tratarla como tal.
|
||||
**Frontera honesta.** No prometer "una distro donde paquete = función = proceso": H3b demostró
|
||||
que el **núcleo** del modelo (definir por hash, nombres como metadata, actualizar sin romper,
|
||||
componer por hash) se sostiene sobre wasm, no que el grano fino intra-función o el colapso total
|
||||
lo hagan. Es la idea más disruptiva; su núcleo ya está verde, su ambición máxima sigue abierta.
|
||||
|
||||
---
|
||||
|
||||
@@ -187,7 +204,7 @@ H1 (proof-carrying) ── extensión natural del VERIFY actual ──► arran
|
||||
H2a (auditar determinismo wasm) ──► gate de todo H2 (spike wawa)
|
||||
└► H2b (caché local) ──► H2c (caché de malla) [sólo si H2a da verde]
|
||||
H3a (design-doc) ──► registrar la visión, barato
|
||||
└► H3b (experimento wasm-por-función) [depende de H2 puro]
|
||||
└► H3b ✅ (experimento wasm-por-función) [sobre H2 puro: núcleo Unison verde]
|
||||
```
|
||||
|
||||
Recomendación: **H1 primero** (empuja la frontera que ya tenemos, sin apuestas). **H2a** en
|
||||
@@ -201,4 +218,6 @@ no construir. H2c y H3b son futuro condicionado a verdes previos.
|
||||
- **No reclama verificación formal del sistema.** H1 estratifica evidencia y la reporta;
|
||||
"verificado bajo supuestos", no "invulnerable".
|
||||
- **No promete memoización de malla sin determinismo probado** (H2a es el gate).
|
||||
- **No promete el colapso Unison** hasta que H3b lo demuestre sobre wasm. Design-doc primero.
|
||||
- **No promete el colapso Unison.** H3b (✅) demostró que su *núcleo* (definir por hash, nombres
|
||||
como metadata, actualizar sin romper, componer por hash) se sostiene sobre wasm; el colapso
|
||||
total (paquete = función = proceso, grano intra-función) sigue siendo ambición, no promesa.
|
||||
|
||||
Reference in New Issue
Block a user