frank-medium: serve the new R9700s, retire frank-small

The RTX 3090 left Dankserver; two AMD Radeon AI PRO R9700 cards (Navi 48,
gfx1201, 32,624 MiB each) replaced it. FreeToken/CUDA cannot run there at all,
so the `frank-small` service is retired and `frank-medium` takes the endpoint.

New service: charlie12345/ROCmFPX llama.cpp (built for gfx1201 against the
fork's self-contained ROCm 7.14 toolchain, so the host's stale /opt/rocm-6.3.3
never participates) serving kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF --
a Q8_0_ROCMFPX_AGENT (ftype 115) checkpoint that stock llama.cpp cannot load.
Placeholder config: --split-mode tensor across both cards, 131072 context,
1 slot, f16 KV, MTP draft head on ROCm0.

deploy-remote.sh grows retire_root_llm_small(): the CUDA-era unit is stopped,
disabled and moved to ~/.AGENTTRASH/20260915-frank-small-retire/host-units
before frank-medium starts, because `systemctl disable` has been observed to
delete the unit file itself on this host (2026-08-26 incident).

The retired frank-small repo files (env, unit, serve script) move to
scripts/.AGENTTRASH/, and the planner, dispatcher, service allow-list and the
deployment test seams now name frank-medium.
This commit is contained in:
Frank committed 2026-09-15 18:53:20 -07:00
1 parent 27e63359d6
commit 6085a99dd8
14 files changed
+454 -192

No files matched your search

+14 -8
View File
@@ -29,23 +29,29 @@ REMOTE_DEPLOY="$REPO_ROOT/scripts/deploy-remote.sh"
}
@test "shared chat-template changes map only to the service that reads it" {
# frank-large runs halogen-flash-server, which owns its own chat handling;
# frank-small is the only consumer of the tracked template now, so a
# template edit is a no-op on Dankclaw.
# frank-medium reads the tracked template only when its env file points at
# it (the GGUF's embedded template is the default); frank-large runs
# halogen-flash-server, which owns its own chat handling. So a template
# edit is a no-op on Dankclaw and selects frank-medium on Dankserver.
run python3 "$PLANNER" --target dankclaw --paths scripts/chat-template.jinja
[ "$status" -eq 0 ]
[ -z "$output" ]
run python3 "$PLANNER" --target dankserver --paths scripts/chat-template.jinja
[ "$status" -eq 0 ]
[ "$output" = "frank-small" ]
[ "$output" = "frank-medium" ]
}
@test "deployment planner maps small-model changes to the small model only" {
@test "deployment planner maps the dankserver model to frank-medium only" {
run python3 "$PLANNER" --target dankserver --paths \
scripts/frank-small.service
scripts/frank-medium.service
[ "$status" -eq 0 ]
[ "$output" = "frank-small" ]
[ "$output" = "frank-medium" ]
}
@test "the retired small endpoint is absent from the deployment inventory" {
! grep -q '"frank-small"' "$PLANNER"
! grep -qE 'frank-small\) deploy|dankserver:frank-small' "$REMOTE_DEPLOY" "$REPO_ROOT/scripts/deploy.sh"
}
@test "documentation-only changes plan no runtime deployment" {
@@ -157,7 +163,7 @@ REMOTE_DEPLOY="$REPO_ROOT/scripts/deploy-remote.sh"
# The runner may restart inference only from the service-dispatch path. It
# must not contain a host-wide restart loop.
grep -q 'deploy_llm_large' "$REMOTE_DEPLOY"
grep -q 'deploy_llm_small' "$REMOTE_DEPLOY"
grep -q 'deploy_llm_medium' "$REMOTE_DEPLOY"
grep -q 'deploy_service' "$REMOTE_DEPLOY"
! grep -qE 'for .*frank-(small|large|npu)-?' "$REMOTE_DEPLOY"
}