refactor(arje): migra ente-card a re-export de brahman-card

ente-card pasa a ser un crate-shim que re-exporta los tipos de
brahman-card bajo sus nombres legacy:

- EntityCard ≡ brahman_card::Card (alias)
- Capability, Payload, SomaSpec, Supervision, etc. — pub use directo

Cambios concretos:

- crates/core/brahman-card/src/lib.rs: añade impl Default for Card.
  Permite usar `..Default::default()` en struct-literals para los
  campos aditivos (permissions, lifecycle, priority, flow, extensions).
- crates/core/ente-card/src/lib.rs: reescrito como shim de re-export
  (~25 líneas). Las definiciones, validaciones y tests viven en
  brahman-card.
- crates/core/ente-card/Cargo.toml: deps reducidas a brahman-card; se
  eliminan serde/serde_json/ulid (vienen transitivos vía re-export).
- crates/core/ente-zero/src/seed.rs: 4 struct-literals de EntityCard
  ahora terminan con `..Default::default()` para cubrir los nuevos
  campos del schema híbrido.

Los 21 consumidores de ente-card (ente-zero, ente-bus, ente-brain,
ente-soma, ente-cas, los 12 *-compat, etc.) compilan sin cambios —
sus `use ente_card::EntityCard` y demás imports siguen resolviendo,
ahora a tipos de brahman-card.

cargo test -p brahman-card: 8/8.
cargo build -p ente-zero: OK.
cargo check --workspace: 0 errores.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-05-08 12:10:35 +00:00
parent 0feba74503
commit ed0e973c81
5 changed files with 59 additions and 329 deletions
+25
View File
@@ -131,6 +131,31 @@ pub struct Card {
pub extensions: HashMap<String, Value>,
}
impl Default for Card {
/// Default razonable para `..Default::default()` en struct-literals.
/// `id` queda en `Ulid::nil()` y `label` vacío — el consumidor debe
/// sobreescribirlos antes de validar.
fn default() -> Self {
Self {
schema_version: CARD_SCHEMA_VERSION,
id: Ulid::nil(),
lineage: None,
label: String::new(),
provides: BTreeSet::new(),
requires: BTreeSet::new(),
permissions: Permissions::default(),
soma: SomaSpec::default(),
payload: Payload::Virtual,
supervision: Supervision::OneShot,
lifecycle: Lifecycle::default(),
priority: Priority::default(),
flow: Flows::default(),
genesis: Vec::new(),
extensions: HashMap::new(),
}
}
}
// =====================================================================
// Capacidades — heredadas de arje, tipadas, no strings
// =====================================================================