frank-dragoon: cut the endpoint over to the native v2 abliterated checkpoint

Quat3rnion/halogen-qwen3.8-flash-next-v2-abliterated is now the NATIVE
2026-10-11 v2 conversion of orcarouter's pinned BF16 (66,687,678,432 B,
LFS sha256 b5bd925f...) — 32 bytes smaller than the writer transplant it
used to ship under the same filename. The n-gram table, vision tower and
tokenizer are the stock peonist companions, hardlinked out of the swift15
payload dir: the release publishes only the main file and no source-matched
pair exists, so the engine's own tools are the referee (niah 18/18, ppl
3.968 with mean KL 0.155 against the swift15 logits, 2026-10-17).

Memory saving, per the card: HALOGEN_KV_POOL_POSITIONS 524288 -> 262144,
one pool behind both slots (boot ledger: 7.2 GiB, where the old pool
measured 14.6). HALOGEN_CTX stays 262144 so the per-request ceiling and the
harness contract (contextWindow 217088) do not move; only two MAXIMUM-length
conversations lose the ability to coexist.

Measured against the swift15 boot on identical traffic: cold prefill
+12.6 %, decode 50.0 vs 46.8 t/s, NIAH 18/18 vs 17/18, PPL +2.3 %, thinking
tokens x1.9 (the finetune's reasoning compression is gone), refusals 0/5 on
both.
This commit is contained in:
Frank
2026-10-17 22:18:00 -07:00
parent 3f5ad507c2
commit 061e61baa6
5 changed files with 111 additions and 70 deletions
+25 -15
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env bats
# Seam: frank-dragoon serves the Quat3rnion ABLITERATED Swift1.5 finetune of
# peonist's Qwen3.8-Flash-Next v2 checkpoint (a .hgn flash-server payload)
# on the Strix Halo iGPU through the halogen-flash-server CONTAINER (0.16.2,
# digest-pinned), driven by the root unit's serve script — two 262,144-token
# slots with the MTP head always on (HALOGEN_SPEC_ADAPT=0) and the vision
# tower mounted. 2026-10-06 cutover from the halogen 27B-dense shape.
# Seam: frank-dragoon serves Quat3rnion's NATIVE v2 conversion (2026-10-11)
# of the abliterated Qwen3.8-Flash-Next (a .hgn flash-server payload) on the
# Strix Halo iGPU through the halogen-flash-server CONTAINER (0.16.2,
# digest-pinned), driven by the root unit's serve script — 2 slots over ONE
# 262,144-position KV pool with the MTP head always on (HALOGEN_SPEC_ADAPT=0)
# and the vision tower mounted. 2026-10-17 cutover from the Swift1.5-finetune
# shape, which itself cut over the halogen 27B-dense shape on 2026-10-06.
#
# This seam exists because the artifacts are a triangle that must agree on
# exact strings the engine reads: the image DIGEST, the checkpoint/n-gram/
@@ -81,7 +82,7 @@ good_env() {
"FRANK_DRAGOON_TOKENIZER_FILES=tok.json"
"HALOGEN_MODEL_ID=frank-dragoon"
"HALOGEN_CTX=262144"
"HALOGEN_KV_POOL_POSITIONS=524288"
"HALOGEN_KV_POOL_POSITIONS=262144"
"HALOGEN_KV_SLOTS=2"
"HALOGEN_SPEC_ADAPT=0"
"HALOGEN_MAX_TOK=8192"
@@ -136,9 +137,10 @@ good_env() {
[[ "$output" == *"no gfx1151 to serve on"* ]]
}
@test "the pool product and memory ledger fit unified memory with margin" {
# Pool arithmetic is the engine's documented product: the explicit
# HALOGEN_KV_POOL_POSITIONS must equal slots x ctx, and KV costs
@test "the pool and memory ledger fit unified memory with margin" {
# Pool arithmetic is the engine's documented shape: the explicit
# HALOGEN_KV_POOL_POSITIONS must back at least one full window, and KV
# costs
# ~28 KiB/position (FLAGS.md). Against it: ~62 GiB resident weights,
# the arena scratch 3.8 + 8.4*(MAX_TOK/16384) GiB, the vision tower
# ~2 GiB pool charge, the 20 GiB host reserve and the host baseline
@@ -151,7 +153,15 @@ good_env() {
pool="$(sed -nE 's/^HALOGEN_KV_POOL_POSITIONS=([0-9]+)$/\1/p' "$ENV_FILE")"
mt="$(sed -nE 's/^HALOGEN_MAX_TOK=([0-9]+)$/\1/p' "$ENV_FILE")"
reserve="$(sed -nE 's/^HALOGEN_HOST_RESERVE_GIB=([0-9]+)$/\1/p' "$ENV_FILE")"
[ "$pool" -eq $(( slots * ctx )) ]
# The pool is ONE budget behind the slots (boot ledger: "2 slots over ONE
# 262144-position KV pool, each request up to 262144"), NOT slots x ctx:
# the card ships it at one window and that IS the memory saving of this
# payload. What still binds is that the pool back ONE full-length
# request, or the advertised per-request ceiling would be unreachable —
# and that it stay inside unified memory, which the ledger sum below
# checks.
[ "$pool" -ge "$ctx" ]
[ "$pool" -le $(( slots * ctx )) ]
kv_gib=$(( pool * 28 * 1024 / 1073741824 ))
arena_tenths=$(( 38 + 84 * mt / 16384 ))
total_gib=$(( 62 + kv_gib + arena_tenths / 10 + 2 + reserve + 15 ))
@@ -174,7 +184,7 @@ good_env() {
FRANK_DRAGOON_CHECKPOINT=absent.hgn "$SERVE"
[ "$status" -ne 0 ]
[[ "$output" == *"checkpoint"*"missing"* ]]
[[ "$output" == *"download-frank-dragoon-flashnext.sh"* ]]
[[ "$output" == *"download-frank-dragoon-v2abl.sh"* ]]
}
@test "the serve script refuses a checkpoint of the wrong byte count" {
@@ -264,7 +274,7 @@ $(cat "$TEST_TMP/serve.log")"
[[ "$output" == *"--publish 7770:8731"* ]]
[[ "$output" == *"-e HALOGEN_MODEL_ID=frank-dragoon"* ]]
[[ "$output" == *"-e HALOGEN_CTX=262144"* ]]
[[ "$output" == *"-e HALOGEN_KV_POOL_POSITIONS=524288"* ]]
[[ "$output" == *"-e HALOGEN_KV_POOL_POSITIONS=262144"* ]]
[[ "$output" == *"-e HALOGEN_KV_SLOTS=2"* ]]
[[ "$output" == *"-e HALOGEN_SPEC_ADAPT=0"* ]]
[[ "$output" == *"-e HALOGEN_CHECKPOINT=/models/qwen.hgn"* ]]
@@ -328,8 +338,8 @@ $(cat "$TEST_TMP/serve.log")"
grep -qF "LLM_DRAGOON_CKPT_BYTES=\"\${LLM_DRAGOON_CKPT_BYTES:-$bytes}\"" "$DEPLOYER"
}
@test "the deployer points a missing artifact at the flashnext fetch script" {
grep -qE 'download-frank-dragoon-flashnext\.sh' "$DEPLOYER"
@test "the deployer points a missing artifact at the v2abl fetch script" {
grep -qE 'download-frank-dragoon-v2abl\.sh' "$DEPLOYER"
grep -qE 'podman pull' "$DEPLOYER"
}