feat: Crossreferencia — Card.references como grafo del fractal
Las Cards ahora declaran sus relaciones con otras Cards. El Engine
posee Mónadas; las Mónadas declaran que son poseídas por el Engine.
- brahman-card:
- RelationshipKind { Owns, OwnedBy, Processes, ProcessedBy, Sibling }
- CardReference { kind, target_id: Ulid, target_label: String }.
target_label es cache para que la UI renderee sin resolver.
- Card.references: Vec<CardReference> + espejo en WireCard.
Conversiones From propagan.
- brahman-broker::BrokeredCard propaga references.
- brahman-status imprime "ref OwnedBy → label (id)" por sesión.
- nouser daemon: cada Mónada publicada añade OwnedBy apuntando al
engine. Declaración unilateral — el engine no necesita conocer
Mónada IDs de antemano.
Validación end-to-end:
$ ente-zero & nouser daemon crates/core
$ brahman-status
Sessions (6):
[ente] brahman.nouser_engine
[data] brahman-handshake/src
ref OwnedBy → brahman.nouser_engine (01K...)
[data] ente-brain/src
ref OwnedBy → brahman.nouser_engine (01K...)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,37 @@ ratio/diff ver `git show <sha>`.
|
||||
|
||||
## 2026-05-08
|
||||
|
||||
### feat: Crossreferencia — Card.references como grafo del fractal
|
||||
Las Cards ahora declaran sus relaciones con otras Cards. El Engine
|
||||
posee Mónadas; las Mónadas declaran que son poseídas por el Engine.
|
||||
La UI puede cruzar el grafo sin discovery especial.
|
||||
|
||||
- `brahman-card`:
|
||||
- `RelationshipKind { Owns, OwnedBy, Processes, ProcessedBy, Sibling }`.
|
||||
- `CardReference { kind, target_id, target_label }` — `target_label`
|
||||
es cache del label en el momento de declarar (la UI puede pintar
|
||||
sin resolver).
|
||||
- `Card.references: Vec<CardReference>` y espejo en `WireCard`.
|
||||
Conversiones `From` propagan.
|
||||
- `brahman-broker::BrokeredCard` propaga `references`.
|
||||
- `brahman-status` imprime cada referencia: `ref OwnedBy → label (id)`.
|
||||
- **nouser daemon**: cada Mónada que publica añade
|
||||
`RelationshipKind::OwnedBy` apuntando al engine. La declaración es
|
||||
unilateral; el engine no necesita conocer las IDs de antemano.
|
||||
|
||||
Validación end-to-end:
|
||||
|
||||
$ ente-zero & nouser daemon crates/core
|
||||
$ brahman-status
|
||||
Sessions (6):
|
||||
[ente] ... brahman.nouser_engine
|
||||
[data] ... brahman-handshake/src
|
||||
ref OwnedBy → brahman.nouser_engine (01K...)
|
||||
summary: 6 archivos...
|
||||
[data] ... ente-brain/src
|
||||
ref OwnedBy → brahman.nouser_engine (01K...)
|
||||
...
|
||||
|
||||
### feat: Phase D-3 + D-4 — service_socket en Card, providers coexisten
|
||||
Cierra el ciclo del swap automático de Nous (mock↔real):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user