# modules/semantic_dht/ (minga) — DHT semántico de código **Propósito.** Indexador peer-to-peer de código fuente: parsea con tree-sitter, normaliza identifiers (α-equivalence), produce embeddings y los publica en un DHT. Búsqueda por similitud semántica cross-repo. ## Crates | crate | tipo | rol | | -------------- | ---- | ---------------------------------------------------------- | | `minga-core` | lib | Parser + α-hashing (Rust/Py/TS/JS/Go) + scoring | | `minga-store` | lib | Sled backend para índice local | | `minga-p2p` | lib | Capa libp2p: kad + bootstrap + provider records | | `minga-vfs` | lib | FUSE: monta el repo como filesystem de sólo lectura | | `minga-cli` | bin | CLI: init, status, ingest, listen, sync, watch, mount | ## Dependencias - `minga-core` ← `tree-sitter`, `tree-sitter-rust`, `-python`, `-ts`, `-js`, `-go`. Consumido por store/p2p/vfs/cli. - `minga-p2p` ← `protocol/brahman-net` (libp2p compartido). - `minga-vfs` ← `minga-store` (lee el `PersistentRepo`), `fuser` (`default-features = false`: sin pkg-config/libfuse-dev en build), `libc`. ## α-hashing Normaliza nombres de variables/funciones a `α0..αN` para que dos implementaciones idénticas con identifiers distintos colisionen en el mismo hash. Cubre let-else, if-let, or-patterns, let-chains en Rust; cierres en Py/TS/JS/Go. ## minga-vfs — proyección como filesystem `minga mount ` monta el repo direccionado por contenido como un filesystem FUSE de sólo lectura. Layout: ```text README explicación del propio montaje roots/ código fuente reconstruido (formato normalizado) de cada raíz del MST — `ls roots/` las lista todas cas/ S-expression del subárbol de ese hash — el directorio NO se enumera, pero `cat cas/` resuelve cualquier hash conocido (el "blob por hash bajo demanda") ``` El render del fuente es **normalizado**, no byte-exacto: el AST descartó whitespace y comentarios al ingerir, así que `roots/` re-indenta por estructura de llaves. Python (cuya estructura vive en la indentación) sale como secuencia de tokens. Capas (separabilidad): `render` (SemanticNode → texto, puro) + `source` (contrato `NodeSource`, backends sled/memoria) + `fs` (único módulo acoplado a `fuser`). ## Estado Pipeline core completo: indexa repos reales, sincroniza P2P, y se monta como filesystem. 15 TODOs en core (más patterns para cada lenguaje). `minga-vfs` implementado — el montaje del repo como filesystem (paths virtuales → blobs por hash bajo demanda) ya funciona. NO está relacionado con Mónadas (esas son de `akasha/`). Ver `docs/changelog/minga.md`.