feat(renaser): Fase 11 — el reloj del sistema como capacidad de host

El userspace gana un sentido del tiempo: hasta ahora una app solo sabía
cuántas veces la habían llamado, no cuánto tiempo había pasado.

- Capacidad `sys_tiempo_mono() -> u64` — la décima función del host:
  los milisegundos monótonos desde el arranque. `reloj` expone la
  cuenta del PIT (100 Hz) como `milisegundos()`; `env` la inyecta.
  Lectura pura, no toca la memoria del módulo, jamás retrocede.
- App nueva `pulso` (`apps/pulso/`, wasm32): un compás visual cuya
  escena es una función PURA de `sys_tiempo_mono` — sin estado entre
  fotogramas—. Dos instancias laten al unísono nazcan cuando nazcan.
- `GENESIS` crece de 5 a 6 apps; `pulso` es la maestra del escritorio.

Verificado en QEMU (sendkey): la barra de `pulso` avanza con el tiempo
de pared; un segundo `pulso` lanzado con Alt+N ~15 s después aparece
sincronizado con el primero — el compás se rige por el reloj absoluto,
no por una cuenta de fotogramas.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 20:43:17 +00:00
parent 19d04a2766
commit 4bcdc88c83
11 changed files with 269 additions and 11 deletions
+26
View File
@@ -847,3 +847,29 @@ una app puede nacer o cerrarse con el reactor ya en marcha.
re-tesela de 5 a 8 ventanas. Tres `Alt+Q` cierran la app enfocada una a una
y el teselado reclama su espacio, de 8 de vuelta a 5. El kernel sigue estable
a través de todas las altas y bajas.
## Fase 11 — El reloj del sistema como capacidad de host — 2026-05-22
Hasta la Fase 10 una aplicación sólo sabía CUÁNTAS veces la habían llamado —un
`tick` tras otro—, no CUÁNTO tiempo había pasado. La Fase 11 le da al userspace
un sentido del tiempo: el reloj monótono del sistema, como capacidad.
### Añadido
- **Capacidad `sys_tiempo_mono() -> u64`** — la décima función del host. Los
milisegundos transcurridos desde el arranque. El temporizador (PIT) ya late a
100 Hz; `reloj` expone esa cuenta como `milisegundos()` y `env` la inyecta.
Es una lectura PURA —no toca la memoria lineal del módulo, no hay puntero que
validar— y MONÓTONA: jamás retrocede.
- **App `pulso`** (`apps/pulso/`, `wasm32`). Un compás visual: una cabeza
brillante que recorre una pista y vuelve, con un período de 6 s. Su escena es
una FUNCIÓN PURA de `sys_tiempo_mono` —no guarda estado entre fotogramas—.
De ahí su prueba: dos instancias de `pulso`, nazca una al arrancar y otra
mucho después con un `Alt+N`, laten exactamente al unísono.
- `pulso` se suma al userspace de génesis: `GENESIS` pasa de 5 a 6 apps, con
`pulso` como la primera —la ventana maestra del escritorio—.
### Verificado
- QEMU (`sendkey`): la barra de `pulso` avanza con el tiempo de pared entre dos
capturas. Un `Alt+N` da a luz un segundo `pulso` ~15 s después del arranque;
flotado junto al primero, su barra está en la MISMA fase — la prueba de que
el compás se rige por el reloj absoluto, no por una cuenta de fotogramas.