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:
+23
-2
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user