diff --git a/crates/ente-brain/src/loader.rs b/crates/ente-brain/src/loader.rs index d7b7e48..afe3f0c 100644 --- a/crates/ente-brain/src/loader.rs +++ b/crates/ente-brain/src/loader.rs @@ -30,9 +30,10 @@ pub fn load_card_file(path: &Path) -> anyhow::Result { /// salidas de generadores que envuelven en `{"seed": {...}}`). pub fn extract_card_from_json(raw: &str) -> anyhow::Result { let v: serde_json::Value = serde_json::from_str(raw)?; - if let Ok(c) = serde_json::from_value::(v.clone()) { - return Ok(c); - } + let direct_err = match serde_json::from_value::(v.clone()) { + Ok(c) => return Ok(c), + Err(e) => e, + }; if let serde_json::Value::Object(map) = v { for (_, vv) in map { if let Ok(c) = serde_json::from_value::(vv) { @@ -40,7 +41,9 @@ pub fn extract_card_from_json(raw: &str) -> anyhow::Result { } } } - anyhow::bail!("JSON no contiene una EntityCard válida") + // Propagamos el error del intento directo: es el caso típico (JSON top-level + // = EntityCard) y su mensaje apunta al campo concreto que rompió. + anyhow::bail!("JSON no contiene una EntityCard válida: {direct_err}") } /// Carga reglas desde un archivo JSON. diff --git a/docs/seed-vps-min.json b/docs/seed-vps-min.json index 64908fd..1ec07fe 100644 --- a/docs/seed-vps-min.json +++ b/docs/seed-vps-min.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "id": "01KQVPSMINBOOT0000000000AA", + "id": "01HQAR53D4M2NBV8KZTYXFGS01", "lineage": null, "label": "vps-min", "provides": ["Spawn", "Journal"], @@ -19,7 +19,7 @@ "genesis": [ { "schema_version": 1, - "id": "01KQVPSMINBOOT0000000001SL", + "id": "01HQAR53D4M2NBV8KZTYXFGS02", "lineage": null, "label": "heartbeat-sleep", "provides": [],