feat: Phase B-1 — unificación ontológica de Cards (Ente ↔ Data)
La Card pasa a ser EL protocolo de presentación del ecosistema. Una
Mónada Nouser y un Ente Brahman son ambos "entidades que se presentan";
el consumidor (UI, broker, admin) discrimina por `kind` cuando importa,
pero todos hablan el mismo idioma.
brahman-card:
- CardKind { Ente (default), Data }. Backward-compat: Cards existentes
quedan Ente.
- DataFacet { summary, keywords, centroid, member_count, dispersion,
presentation_hint } — vista liviana para el wire. Listas grandes
(members reales, embeddings completos) se consultan al daemon dueño
bajo demanda.
- Card.kind y Card.data agregados. WireCard espeja, conversiones From
propagan ambos campos.
- Default impl actualizado.
brahman-broker:
- BrokeredCard propaga kind y data desde la Card registrada. No afecta
el matching (sigue por TypeRef + priority + pin_to); permite a
observadores discriminar sin re-query.
nouser-card:
- Depende ahora de brahman-card.
- MonadManifest::to_brahman_card() proyecta una Mónada a Card brahman:
- id, label, lineage directos.
- payload Virtual, supervision Delegate, lifecycle Daemon
(placeholder — la Mónada no se ejecuta).
- kind = Data.
- data = Some(DataFacet { summary, keywords, centroide,
member_count, entropy → dispersion, presentation_hint del Lens }).
- Test nuevo projects_to_brahman_card.
brahman-status:
- Prefijo [ente] o [data] por sesión.
- Sesiones data renderean también summary, members + dispersion,
keywords y lens hint.
Resultado: la UI ve una sola lista uniforme — no necesita saber si
mira procesos o cúmulos de datos, sólo lee el Card y se adapta por
kind. La función de presentarse es la misma para todos.
Tests: 59 (card 11, broker 15, handshake codec+tr 2 + integ 7,
card-wit 4, admin 0, nouser-card 7 +1, nouser-core 13).
cargo check --workspace: 0 errores, 0 warnings.
Próximo: Phase B-2 — bin nouser daemon que sidecarea cada Mónada como
sesión brahman, mezclándolas con los entes en brahman-status.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,56 @@ ratio/diff ver `git show <sha>`.
|
||||
|
||||
## 2026-05-08
|
||||
|
||||
### feat: Phase B-1 — unificación ontológica de Cards (Ente ↔ Data)
|
||||
La Card es **el** protocolo de presentación del ecosistema, no sólo de
|
||||
los procesos. Una Mónada Nouser y un Ente Brahman son ambos "entidades
|
||||
que se presentan"; el consumidor (UI, broker, admin) discrimina por
|
||||
`kind` cuando importa, pero todos hablan el mismo idioma.
|
||||
|
||||
Cambios:
|
||||
|
||||
- `brahman-card`:
|
||||
- `CardKind { Ente (default), Data }`. Conserva back-compat:
|
||||
Cards existentes son `Ente` por default.
|
||||
- `DataFacet { summary, keywords, centroid, member_count, dispersion,
|
||||
presentation_hint }`. Liviano para el wire — listas grandes
|
||||
(members, embeddings completos) se consultan al daemon dueño bajo
|
||||
demanda.
|
||||
- `Card.kind` y `Card.data: Option<DataFacet>` agregados. WireCard
|
||||
espeja, conversiones `From` propagan.
|
||||
- Default impl actualizado.
|
||||
|
||||
- `brahman-broker::BrokeredCard`: propaga `kind` y `data` desde la Card
|
||||
registrada. No afecta el matching (sigue siendo por TypeRef +
|
||||
priority + pin_to); permite a observadores discriminar sin re-query.
|
||||
|
||||
- `nouser-card`: depende ahora de `brahman-card`. Nuevo método
|
||||
`MonadManifest::to_brahman_card()` que proyecta:
|
||||
- id, label, lineage → directos.
|
||||
- payload Virtual, supervision Delegate, lifecycle Daemon (placeholder
|
||||
semántico — la Mónada no se ejecuta).
|
||||
- kind = Data.
|
||||
- data = Some(DataFacet) con summary, keywords, centroide,
|
||||
member_count, entropy → dispersion, y un `presentation_hint` derivado
|
||||
del `Lens` (`Code` → `"code"`, `Gallery` → `"gallery"`, etc.).
|
||||
- Test nuevo: `projects_to_brahman_card`.
|
||||
|
||||
- `brahman-status`: cada sesión muestra ahora `[ente]` o `[data]` como
|
||||
prefijo. Para sesiones `data`, render adicional con summary, members
|
||||
+ dispersion, keywords y lens hint.
|
||||
|
||||
Resultado: la UI (yahweh, brahman-status, futuro explorer) ve una sola
|
||||
lista uniforme. No tiene que saber si está mirando un proceso o un
|
||||
cúmulo de datos — sólo lee el Card y se adapta por `kind`.
|
||||
|
||||
Tests acumulados: 59 (card 11, broker 15, handshake codec+transport 2 +
|
||||
integ 7, card-wit 4, admin 0, nouser-card 7, nouser-core 13).
|
||||
cargo check --workspace: 0 errores, 0 warnings.
|
||||
|
||||
Próximo: **Phase B-2** — bin `nouser daemon <dir>` que sidecarea cada
|
||||
Mónada como una sesión brahman, publicándola al broker. Brahman-status
|
||||
las verá junto a los entes.
|
||||
|
||||
### feat(nouser): Phase A — mecanismo determinista de Mónadas
|
||||
Primer trozo del módulo Nouser (Kairos): explorador de Mónadas como
|
||||
"imanes semánticos" sobre el filesystem. Phase A cubre el 90% de los
|
||||
|
||||
Reference in New Issue
Block a user