feat(matilda): ghost + linker + CLI — el ciclo completo de aplicación

matilda-ghost: el agente que ejecuta los ApplySteps en la máquina
destino — escribe archivos, corre comandos, reporta paso a paso;
semántica set -e (se detiene en el primer error). dry_run previsualiza
sin tocar nada. 5 tests.

matilda-linker: aplica los pasos en un host remoto por SSH sobre
brahman-ssh-multiplex; produce el mismo ApplyReport que el ghost local.

apps/matilda: deja de ser una demo hardcoded — ahora es una CLI real:
  matilda example | plan | script | apply  (local · --dry-run · --host)
Carga el inventario de un JSON, reconcilia y aplica.

matilda: 6 crates + CLI, ~42 tests. La cadena va de la declaración
a la aplicación local/remota.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 20:27:28 +00:00
parent 5b9d8107fc
commit df8f92fbb0
11 changed files with 683 additions and 86 deletions
Generated
+22
View File
@@ -7070,10 +7070,15 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
name = "matilda"
version = "0.1.0"
dependencies = [
"clap",
"matilda-apply",
"matilda-config",
"matilda-core",
"matilda-ghost",
"matilda-linker",
"matilda-plan",
"serde_json",
"tokio",
]
[[package]]
@@ -7100,6 +7105,23 @@ dependencies = [
"serde",
]
[[package]]
name = "matilda-ghost"
version = "0.1.0"
dependencies = [
"matilda-apply",
"serde",
]
[[package]]
name = "matilda-linker"
version = "0.1.0"
dependencies = [
"brahman-ssh-multiplex",
"matilda-apply",
"matilda-ghost",
]
[[package]]
name = "matilda-plan"
version = "0.1.0"