Retire gjallar; record why retirement is what forces the migration

Gjallar had a brief useful life on Nightwing's framebuffer, broke, and was
never fixed. Its Yggdrasil incarnation ran --headless --refresh-hz 2 for
eleven days: a compositor with no display recomposing twice a second, 55
minutes of CPU and 125M resident producing frames nothing rendered. The
only reference to gjallar.overview in the estate is one Odin test file.
Stopped and disabled; 420M under /srv/gjallar is reclaimable.

Removed the codex-connector and gjallar sudo grants from the host and
synced deploy/legacy/idunn-yggdrasil.sudoers to match. Four grants gone,
verified by diffing the grant set against a backup, nothing else changed.

That diff caught a defect I introduced: removing the last entry of a
Cmnd_Alias leaves a dangling continuation, and my repair silently dropped
the wildcard from `deploy streampixels`, which would have failed every
streampixels deployment. The procedure now says validate with visudo -c -f
before installing and diff the grant set afterwards.

The larger finding: the installed generation CANNOT express that a target
is retired. Its target list is compiled in, it offers restart and redeploy
and no way to drop a daemon from supervision, and its only brake is the
deployment brake -- which doctrine forbids using for this, since a
deployment brake must not suspend continuity. Stopping codex-connector
therefore produced eighty "decision: restart" lines in ten minutes against
a service we had just retired. Suspending continuity for one target is
precisely the current generation's lifecycle brake. The estate found the
argument for its own migration by trying to throw something away.

Gjallar was handled correctly by contrast: its failure classified as
dependency-unavailable, so Idunn raised an alarm instead of resurrecting
it. The old generation can tell failures it owns from failures it does
not; it cannot tell a broken target from a finished one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-06 00:07:22 +02:00
commit f6b97fdc62
2 changed files with 64 additions and 18 deletions

View file

@ -1,6 +1,9 @@
# Narrow root actuator grant for the Idunn Yggdrasil deployment/continuity path.
# One line per live target. codex-connector and gjallar were retired 2026-09-06;
# their grants are removed here first, because the privileged half of a retired
# target must not outlive its consumer.
Cmnd_Alias IDUNN_YGGDRASIL_DEPLOY = \
/usr/local/libexec/idunn-yggdrasil deploy odin *, \
/usr/local/libexec/idunn-yggdrasil deploy codex-connector *, \
/usr/local/libexec/idunn-yggdrasil deploy ghostlight *, \
/usr/local/libexec/idunn-yggdrasil deploy voidbot *, \
/usr/local/libexec/idunn-yggdrasil deploy heimdall *, \
@ -8,17 +11,14 @@ Cmnd_Alias IDUNN_YGGDRASIL_DEPLOY = \
/usr/local/libexec/idunn-yggdrasil deploy epiphany *, \
/usr/local/libexec/idunn-yggdrasil deploy bifrost-persona-feedback *, \
/usr/local/libexec/idunn-yggdrasil deploy repixelizer *, \
/usr/local/libexec/idunn-yggdrasil deploy streampixels *, \
/usr/local/libexec/idunn-yggdrasil deploy gjallar *
/usr/local/libexec/idunn-yggdrasil deploy streampixels *
Cmnd_Alias IDUNN_YGGDRASIL_RESTART = \
/usr/local/libexec/idunn-yggdrasil restart odin, \
/usr/local/libexec/idunn-yggdrasil restart codex-connector, \
/usr/local/libexec/idunn-yggdrasil restart ghostlight, \
/usr/local/libexec/idunn-yggdrasil restart voidbot, \
/usr/local/libexec/idunn-yggdrasil restart heimdall, \
/usr/local/libexec/idunn-yggdrasil restart epiphany, \
/usr/local/libexec/idunn-yggdrasil restart repixelizer, \
/usr/local/libexec/idunn-yggdrasil restart streampixels, \
/usr/local/libexec/idunn-yggdrasil restart gjallar
/usr/local/libexec/idunn-yggdrasil restart streampixels
idunn ALL=(root) NOPASSWD: IDUNN_YGGDRASIL_DEPLOY, IDUNN_YGGDRASIL_RESTART