Files
brahman/crates/modules/yachay/SDD.md
T
sergio e3980d005f feat(yachay): notebooks reproducibles — yachay-core + demo
yachay-core: notebook como secuencia de celdas (orden de lectura) +
DAG de dependencias (orden de ejecución). Celdas markdown/código/embed
con content_hash BLAKE3; editar una propaga staleness a descendientes;
digest Merkle por celda (content_hash ‖ digests upstream) y
notebook_digest que certifica reproducibilidad. Demo CLI en apps/yachay.

14 tests. Sin kernel ni UI, #![forbid(unsafe_code)].

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 17:09:18 +00:00

2.0 KiB

modules/yachay/ — Notebooks computacionales reproducibles

Propósito. Notebooks donde la reproducibilidad es verificable, no prometida. Un notebook es a la vez una secuencia de celdas (orden de lectura) y un DAG de dependencias (orden de ejecución). Un digest Merkle certifica que dos corridas del mismo notebook producen lo mismo.

Crates

crate tipo rol
yachay-core lib Cell (markdown/código/embed), Notebook (DAG, staleness, digest)

App: apps/yachay — demo CLI (cargo run -p yachay).

Modelo

  Cell { kind, source, depends_on } ──► Notebook
        │                                  │
   content_hash (BLAKE3)            execution_order (topológico)
        │                                  │
        └──► digest = BLAKE3(content_hash ‖ digests upstream) ──► notebook_digest
  • Doble estructura: orden de presentación (lista) + DAG de dependencias. La ejecución sigue el DAG.
  • Staleness: editar una celda la marca Stale y propaga la obsolescencia a sus descendientes (no a sus ancestros).
  • Digest Merkle: el digest de una celda cubre su contenido y todo su linaje; dos notebooks con el mismo notebook_digest son reproduciblemente equivalentes. El orden de declaración de dependencias no lo afecta.
  • Embeds: una celda puede incrustar la visualización de otro módulo brahman (dominium, pineal, takiy) — yachay integra el ecosistema.

Dependencias

  • yachay-coreblake3 + serde. #![forbid(unsafe_code)].
  • Sin kernel, sin ejecución real, sin UI — tipos puros y deterministas.

Estado

yachay-core implementado y verde (14 tests) + demo CLI. Pendiente: los kernels de ejecución de código, el render de los embeds (consume los *-render-plan de cada módulo), persistencia y el frontend GPUI.