Files
brahman/crates/modules/badu/SDD.md
T
sergio d0a175a90a feat(badu): toma de notas — núcleo + gravedad semántica
badu-core: modelo Note + NoteStore (etiquetas, búsqueda) + grafo de
wiki-links [[...]] derivado del cuerpo (forward/backlinks, huérfanas,
enlaces colgantes; resolución case-insensitive).

badu-gravity: SemanticField sobre vectores semánticos — afinidad
coseno, vecinos más cercanos, clústeres por umbral (union-find) y
layout 2D dirigido por fuerzas (notas afines se atraen, todas se
repelen; determinista, sin RNG).

29 tests. Cero red, #![forbid(unsafe_code)].

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 16:42:28 +00:00

1.9 KiB

modules/badu/ — Toma de notas con gravedad semántica

Propósito. Notas como texto enlazado: cada nota tiene título, etiquetas y wiki-links [[...]]; el conjunto forma un grafo navegable. Sobre ese grafo, una capa de gravedad semántica agrupa y posiciona las notas por afinidad de significado.

Crates

crate tipo rol
badu-core lib Note + NoteStore (etiquetas, búsqueda) + grafo de wiki-links (forward/backlinks, huérfanas, colgantes)
badu-gravity lib SemanticField: afinidad coseno, vecinos, clústeres por umbral y layout 2D dirigido por fuerzas

Modelo

  Note ([[links]] en el cuerpo) ──► NoteStore ──► grafo de enlaces
        │                                              │
   vector semántico (verbo) ──► SemanticField ──► clústeres + layout 2D
  • Enlaces: el grafo se deriva del cuerpo, no se guarda aparte. [[cocina]] y [[Cocina]] resuelven a la misma nota.
  • Gravedad: las notas afines se atraen, todas se repelen — un layout force-directed determinista (posiciones iniciales fijas, sin RNG).
  • Clústeres: union-find sobre las afinidades que superan un umbral.

Dependencias

  • core ← sólo serde. gravitybadu-core + serde.
  • gravity recibe los vectores ya calculados — no se acopla a verbo; el frontend embebe las notas con un verbo::Provider y los inyecta.
  • Ambos #![forbid(unsafe_code)] y deterministas.

Estado

core + gravity implementados y verdes (29 tests). Pendiente: las 4 lentes visuales (lista, grafo, gravedad espacial, línea de tiempo), los «Susurros» (sugerencias vía verbo) y el frontend GPUI — separabilidad UI estricta, el núcleo ya es agnóstico.