feat(renaser): Fase 7b — boot siembra la imagen, muere el include_bytes!

El kernel deja de empotrar el userspace por completo. Ya no carga ni un
solo .wasm: es boot quien siembra el disco con el grafo poblado.

- kernel/almacen.rs y manifiesto.rs migran al nucleo compartido `formato`
  (tipos, postcard, BLAKE3, trazado de registros). El kernel pierde los
  include_bytes!, genesis() y sembrar_genesis().
- boot::sembrar_grafo siembra un disco virgen con el bytecode de las apps
  (deduplicado) y el Manifiesto de Genesis anclado en el superbloque.
- cargar_userspace sin rama de siembra; wasm/mod.rs sin TECHO_MEMORIA.
- alias `cargo kernel` -> --manifest-path (esquiva un ICE de cargo con
  formato compartido entre el kernel y boot via artifact-dep).

Verificado en QEMU (screendump): disco virgen -> boot siembra 5 objetos,
el kernel monta su grafo; segundo arranque -> boot respeta el disco, la
cronista persiste. formato: 5/5 pruebas.

Nota: el crate `formato` y los 3 Cargo.toml entraron antes en 43e6b32 por
un `git add -A` de un trabajo concurrente; este commit cierra el resto.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 18:29:23 +00:00
parent 43e6b32e15
commit 7695dbf3ce
13 changed files with 415 additions and 342 deletions
+23 -2
View File
@@ -97,8 +97,29 @@ gobierna, no por el IOAPIC — basta leer la línea que el firmware ya asignó.
Verificado en QEMU: el disco se enruta a la IRQ 11; una tarea-sonda del reactor
lee un bloque de forma asíncrona mientras las apps siguen pintando.
Líneas abiertas posteriores: carga/descarga dinámica de apps desde el grafo de
objetos; más capacidades del host (temporización, audio).
## Fase 7 — el userspace nace del Grafo de Objetos
Hasta la Fase 6, el userspace venía **empotrado en el binario del kernel**:
cuatro `include_bytes!` de `.wasm` y regiones escritas a mano. La Fase 7 lo
destierra — las aplicaciones pasan a ser objetos del grafo, gobernadas por un
**Manifiesto de Génesis** que también vive en el grafo. Plan completo en
`FASE7.md`.
- **7a — el Manifiesto (completada).** `manifiesto.rs`: tipos `Manifiesto` /
`EntradaApp` y carga desde el grafo. El superbloque gana el ancla
`manifiesto` (VERSION 1→2). `kernel_main` lee el manifiesto e instancia cada
app recuperando su bytecode del grafo, verificado por su hash.
- **7b — la imagen sembrada por `boot` (completada).** Nace la crate
`formato`, un núcleo `no_std` con el formato del grafo en disco, COMPARTIDO
por el kernel y el constructor de imagen `boot`. `boot` siembra el disco
virgen con el grafo ya poblado —bytecode y manifiesto—; el kernel pierde
todo `include_bytes!` del userspace. Su binario ya no carga ni un `.wasm`.
- **7c — persistencia inter-sesión (pendiente).** Una app guarda su estado
mutado como un objeto nuevo del grafo; el campo `EntradaApp.estado` lo
ancla. Al despertar, la app retoma donde quedó.
Líneas abiertas posteriores: más capacidades del host (temporización, audio);
la Fase 8 — el compositor sobre `mirada-layout`.
## Principios que persisten entre fases