Files
arje/docs/seed-gnome-test.k
T
Sergio 48e41331a1 journal-query CLI, machined, polkit con grants reales, GNOME boot test
- ente-journalctl: bin nuevo en ente-journald-compat. Lee
  ~/.local/share/ente/journal/index.log, parse timestamp:source:unit:sha,
  filtra --unit/--source/--since/--grep/--tail, restituye blobs desde CAS
  y formatea (pretty | --json). Default extrae MESSAGE de journald native.
- compat-machined: org.freedesktop.machine1.Manager con
  ListMachines/GetMachine/Register/Terminate. Lista vacía + NotFound —
  apps que llaman al boot ya no quedan en timeout.
- compat-polkit: query_policy() consulta el bus interno por el cap
  POLKIT_DECISION_IFACE con blob (pid_be|uid_be|action_id_utf8). Si hay
  proveedor su byte de respuesta gobierna; si no, default-allow.
  Anuncia POLKIT_SERVICE_IFACE (separado para evitar recursión).
- docs/gnome-boot-test.md: procedimiento end-to-end para arrancar GNOME
  con ente-zero como PID 1 en QEMU. scripts/build-rootfs.sh overlaya
  binarios + symlink /init. scripts/run-vm.sh boot QEMU con KVM y GTK.
  docs/seed-gnome-test.k Card Semilla con genesis para 8 shims +
  dbus-daemon + NetworkManager + gdm.

8 compat-shims operativos en paralelo cubriendo: logind, hostnamed,
timedated, localed, journald, resolved, polkit, machined.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 10:13:00 +00:00

156 lines
5.6 KiB
Plaintext

# Card Semilla para el boot test de GNOME bajo Ente #0.
#
# Este archivo se valida con `kcl run` contra el schema en
# crates/ente-card/schema/card.k antes de que ente-zero lo cargue.
#
# Genesis declara la constelación mínima para que GNOME arranque sin
# systemd: D-Bus daemon, los 8 compat-shims, NetworkManager, gdm.
import .ente_card.schema.card
# Card "supervisor genérico" reutilizable — dispara un binario con Restart.
schema NativeRestart(EnteBase):
soma = SomaSpec {
rlimits = ResourceLimits {nofile = 16384}
}
supervision = Supervision {
kind = "Restart"
initial_ms = 100
max_ms = 30000
}
# ----- La Semilla -----
seed = EntityCard {
schema_version = 1
id = "01KQABOOTTESTSEEDFRACTAL00"
label = "boot-gnome-test"
provides = [
Capability {kind = "Spawn"}
Capability {kind = "Journal"}
]
soma = SomaSpec {}
payload = Payload {kind = "Virtual"}
supervision = Supervision {kind = "OneShot"}
genesis = [
# 1. dbus-daemon — pivote del system bus, todos los demás dependen de él.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTDBUSDAEMON___"
label = "dbus-daemon"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/bin/dbus-daemon"
argv = ["--system", "--nofork", "--nopidfile"]
}
supervision = Supervision {
kind = "Restart"
initial_ms = 100
max_ms = 30000
}
}
# 2-9. Los 8 compat-shims D-Bus.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTLOGIND_______"
label = "compat-logind"
provides = [Capability {kind = "LegacyLogind"}]
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/local/bin/ente-logind-compat"
}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTHOSTNAMED____"
label = "compat-hostnamed"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-hostnamed-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTTIMEDATED____"
label = "compat-timedated"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-timedated-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTLOCALED______"
label = "compat-localed"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-localed-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTJOURNALD_____"
label = "compat-journald"
provides = [Capability {kind = "Journal"}]
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-journald-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTRESOLVED_____"
label = "compat-resolved"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-resolved-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTPOLKIT_______"
label = "compat-polkit"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-polkit-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTMACHINED_____"
label = "compat-machined"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-machined-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
# 10. NetworkManager — la mayoría de distros lo prefieren sobre networkd.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTNETWORKMGR___"
label = "NetworkManager"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/sbin/NetworkManager"
argv = ["--no-daemon"]
}
supervision = Supervision {kind = "Restart", initial_ms = 200, max_ms = 30000}
}
# 11. gdm — display manager. GNOME settings panels via gnome-shell.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTGDMDAEMON____"
label = "gdm"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/bin/gdm"
argv = ["--no-daemon"]
}
supervision = Supervision {kind = "Restart", initial_ms = 500, max_ms = 60000}
}
]
}