From 0c1e10a5efb0db187a413d73e1403d83171e8558 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 16 Sep 2026 00:38:34 -0700 Subject: [PATCH] frank-large: retire the halogen quadlet test seam (ik_llama.cpp cutover) --- tests/frank_large_quadlet.bats | 95 ---------------------------------- 1 file changed, 95 deletions(-) delete mode 100755 tests/frank_large_quadlet.bats diff --git a/tests/frank_large_quadlet.bats b/tests/frank_large_quadlet.bats deleted file mode 100755 index 0220b16..0000000 --- a/tests/frank_large_quadlet.bats +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env bats -# Seam: the frank-large quadlet on dankclaw. -# frank-large became a rootless Quadlet container on 2026-09-11 when -# halogen-flash-server replaced the llama.cpp/kingjones runtime. This seam pins -# the properties that make it work and that no reviewer can see by reading the -# flags alone: GPU device access and the image's required podman posture (the -# engine maps the checkpoint and registers it with the GPU in place), the -# single published port that keeps every client pointed where it has always -# pointed, the read-write weights mount the first-start download needs, boot -# persistence, and a deploy handler that retires the old root unit without -# deleting anything. - -load helpers - -UNIT="$REPO_ROOT/dankclaw/frank-large/quadlet/frank-large.container" -REMOTE_DEPLOY="$REPO_ROOT/scripts/deploy-remote.sh" - -@test "frank-large quadlet exists under dankclaw/frank-large/quadlet/" { - [ -f "$UNIT" ] -} - -@test "frank-large unit is boot-persistent (WantedBy=default.target)" { - # Generated units cannot be enabled on this host's podman 5.x v1 quadlet - # generator; [Install] plus linger is the entire boot-persistence story. - grep -q '^WantedBy=default.target$' "$UNIT" -} - -@test "frank-large unit is self-healing" { - grep -q '^Restart=on-failure$' "$UNIT" - grep -q '^RestartSec=' "$UNIT" -} - -@test "frank-large image is pinned to an exact version tag" { - grep -Eq '^Image=localhost/peonist-ai/halogen-flash-server:[0-9]+\.[0-9]+\.[0-9]+$' "$UNIT" -} - -@test "frank-large can reach the GPU (kfd + DRM render node)" { - # Without both devices the engine cannot map the checkpoint at all; the - # failure is a load error, not a degraded mode. - grep -q '^AddDevice=/dev/kfd$' "$UNIT" - grep -q '^AddDevice=/dev/dri$' "$UNIT" -} - -@test "frank-large runs with the podman posture the image requires" { - # The image documents --ipc=host, an unconfined seccomp profile and an - # unlimited memlock as hard requirements. - grep -q -- '--ipc=host' "$UNIT" - grep -q -- '--security-opt seccomp=unconfined' "$UNIT" - grep -q '^Ulimit=memlock=-1:-1$' "$UNIT" -} - -@test "frank-large publishes exactly one port and it is the client port" { - # 8731 is the OpenAI front-end; the engine on 8730 is unauthenticated and - # must never be published. - [ "$(grep -c '^PublishPort=' "$UNIT")" -eq 1 ] - grep -q '^PublishPort=7770:8731$' "$UNIT" -} - -@test "frank-large keeps the fleet identity every client already points at" { - # The id at /v1/models, in /health and in every response body. - grep -q '^Environment=HALOGEN_MODEL_ID=frank-large$' "$UNIT" -} - -@test "the weights mount is writable, because the first start downloads into it" { - grep -q '^Volume=/home/dank/models/halogen:/models$' "$UNIT" - ! grep -q '^Volume=.*:/models:ro$' "$UNIT" - grep -q '^Environment=HALOGEN_DOWNLOAD=' "$UNIT" -} - -@test "frank-large unit carries no secret material" { - ! grep -Eq '^(Environment|EnvironmentFile)=.*(TOKEN|PASSWORD|SECRET|KEY)' "$UNIT" -} - -@test "the deploy handler retires the old root unit without deleting it" { - grep -q 'retire_root_llm_large' "$REMOTE_DEPLOY" - grep -q 'systemctl stop frank-large.service' "$REMOTE_DEPLOY" - # Never `rm`: the retired unit moves into the home trash so the llama.cpp - # era stays recoverable. - grep -q 'mv -- /etc/systemd/system/frank-large.service' "$REMOTE_DEPLOY" - ! grep -qE '(^|[^[:alnum:]_])rm (-[a-zA-Z]+ )?/etc/systemd/system/frank-large' "$REMOTE_DEPLOY" -} - -@test "the deploy handler never tries to enable a generated unit" { - # `systemctl --user enable frank-large.service` fails on this host - # ("transient or generated"); the deploy must install and restart instead. - ! grep -q 'systemctl --user enable frank-large.service' "$REMOTE_DEPLOY" - grep -q 'install_quadlet frank-large dankclaw/frank-large/quadlet frank-large' "$REMOTE_DEPLOY" - grep -q 'systemctl --user restart frank-large.service' "$REMOTE_DEPLOY" -} - -@test "the deploy handler gates the first start on the download, not on a failure" { - grep -q 'wait_for_llm_large_ready' "$REMOTE_DEPLOY" - grep -q 'qwen38-flash-next-w4b.hgn' "$REMOTE_DEPLOY" - grep -q '127.0.0.1:7770/health' "$REMOTE_DEPLOY" -}