feat(renaser): Fase 20 — Akasha Over Ether (grafo distribuido)

Tres mensajes y un EtherType propio bastan para extender el grafo de
objetos —direccionado por contenido, ya BLAKE3— a otras maquinas
renaser que escuchen en la misma red de capa-2. Sin TCP, sin IP,
sin DNS.

Crate nueva 'akasha/' (no_std compartido, gemela de 'formato',
excluida del workspace):

  - MensajeAkasha enum con SolicitarObjeto(id), ProveedorObjeto(id,
    payload), AnunciarRaiz(id).
  - Codec: postcard (mismo que ya usa el grafo en disco).
  - EtherType: 0x88B5. MAX_PAYLOAD_AKASHA = 1486 (MTU sin fragmentar).
  - Helpers componer_frame(src, dst, msg) y analizar_frame(bytes) que
    distinguen EtherType ajeno, frame truncado y payload basura.
  - 6 pruebas unitarias en verde.

Modulo nuevo 'kernel/src/akasha.rs' con tres oficios:

  1. Demuxer (drenar_y_demultiplexar): drena la cola RX del dispositivo
     virtio-net y demultiplexa: frames AoE con payload valido los
     procesa el respondedor; el resto va a una cola del userspace que
     'sys_net_recibir' ahora lee. Frames 0x88B5 con payload
     no-postcard (saludo de pregon) se cuentan y tambien viajan al
     userspace.

  2. Atencion de mensajes (procesar):
     - SolicitarObjeto(id): consulta almacen::recuperar; si tenemos el
       objeto, respondemos ProveedorObjeto unicast con objeto.serializar()
       y re-hashing de defensa en profundidad.
     - ProveedorObjeto(id, payload): verifica blake3(payload)==id antes
       de absorber con almacen::almacenar.
     - AnunciarRaiz(id): si ignoramos el nodo, le solicitamos al emisor.

  3. Faro periodico (difundir_raiz cada 5 s): broadcast del hash del
     manifiesto actual. Cadencia medida contra reloj::milisegundos(),
     no contra los awaits — el interprete wasmi de los apps degrada
     la cadencia de EsperaFrame::await a varios cientos de ms, asi
     que se mide contra el reloj monotono y los oficios per-fotograma
     se enganchan al tic del compositor (cuyo latido es fiable).

Contadores ResumenAkasha (rx/tx por variante, descartados, cola del
usuario) listos para un futuro indicador AoE en la barra de tareas.

Cambios complementarios:

  - sys_net_recibir lee de akasha::pop_usuario, no de
    drivers::red::recibir_en (que queda #[allow(dead_code)] como
    primitiva del driver para diagnostico).
  - tarea_red queda corta: envia un ARP al gateway y termina. El
    demuxer y el faro viven en el tic del compositor.

Verificacion:

  - 'cargo test -p akasha' → 6 pruebas en verde.
  - QEMU headless 60 s con -object filter-dump → 14 frames: 11
    AnunciarRaiz (Δ promedio 5.86 s sobre 5.00 s de target), 2 ARP
    y el pregon hello. Cada AnunciarRaiz lleva el hash del manifiesto
    '2f3deadfcc7dae25..' en 33 bytes postcard sobre 47 bytes de frame.
  - COM1 vuelca 'akasha :: ANUNCIO emitido :: raiz=2f3deadfcc7dae25..'
    en cada disparo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-23 05:14:43 +00:00
parent 07ab095d42
commit 42fee6fcbc
14 changed files with 1075 additions and 24 deletions
+27
View File
@@ -608,4 +608,31 @@ que la voz ya no es de uno solo. Ahora la casa habla en coro.
---
## Akasha — el grafo se vuelve aire
Pregón gritaba sin alfabeto: una frase corta dirigida a quien quisiera
oír. Hoy la casa aprende su primer idioma propio para la red, y se le
ocurre uno sencillo, con apenas tres palabras: *pide*, *toma*, *aquí
estoy*. Pide un objeto del archivo por su huella; recibe el objeto en
respuesta; o anuncia, sin destinatario, la huella de su biblioteca
actual para que cualquiera que esté escuchando sepa por dónde puede
acompañarla.
El nombre es viejo. *Akasha* es la palabra sánscrita para el éter, el
soporte de lo sutil; *Akasha Over Ether* es nuestro chiste a dos
niveles: el grafo viaja por el éter del cable, y la huella del grafo
—las treinta y dos cifras del BLAKE3— es la firma sutil de cada
objeto. Con tres frases bastan: el archivo de la casa deja de ser
exclusivamente local. Quien sintonice la red de la sala podrá,
mañana, recibir un objeto suyo o pedirle uno.
De momento la casa habla sola. Cada cinco segundos, sin esperar a
nadie, suelta su faro: *aquí estoy, mi raíz es esta*. Si otra renaser
se encendiera en la misma sala, escucharía y podría empezar a pedir
los objetos que le faltan. Hoy no pasa eso porque sólo hay una casa,
pero el alfabeto está. Y, cuando un día se encienda la segunda,
empezará el diálogo sin que haya que añadir ni una palabra más.
---
*El diario continúa. La próxima página la escribirá la próxima jornada.*