diff --git a/scripts/deploy-remote.sh b/scripts/deploy-remote.sh index 501f024..de2ed5a 100755 --- a/scripts/deploy-remote.sh +++ b/scripts/deploy-remote.sh @@ -1329,6 +1329,9 @@ deploy_anubis() { # port gate is the same as every cutover since 2026-09-16: nothing # starts until 7770 is released. LLM_DRAGOON_IMAGE="${LLM_DRAGOON_IMAGE:-ghcr.io/peonist-ai/halogen-flash-server@sha256:0c61bf84ac22308a53f5d1ca6b86806702d7039e5ebc51cae4c66621b92fe04a}" +# The payload dir is its own twin because the NPU lane's containment gate below +# reads it; every artifact path under it stays a full literal as usual. +LLM_DRAGOON_MODEL_DIR="${LLM_DRAGOON_MODEL_DIR:-/home/dank/models/halogen-v2-abliterated}" LLM_DRAGOON_CKPT="${LLM_DRAGOON_CKPT:-/home/dank/models/halogen-v2-abliterated/qwen38-flash-next-v2-abliterated.hgn}" LLM_DRAGOON_CKPT_BYTES="${LLM_DRAGOON_CKPT_BYTES:-66687678432}" LLM_DRAGOON_NGRAM="${LLM_DRAGOON_NGRAM:-/home/dank/models/halogen-v2-abliterated/qwen38-flash-next-ngram.hgn}" @@ -1441,10 +1444,8 @@ deploy_llm_dragoon() { # payload dir. A staging dir outside it needs a nested bind whose # mountpoint runc cannot create through a read-only parent, so the # parity twin of the serve gate refuses the shape before the restart. - npu_model_dir="$(sed -nE 's/^FRANK_DRAGOON_MODEL_DIR=(.*)$/\1/p' \ - "$CHECKOUT/scripts/frank-dragoon.env" | tail -1)" - if [[ -n "$npu_model_dir" && "$LLM_DRAGOON_NPU_DIR/" != "$npu_model_dir"/* ]]; then - echo "ERROR: NPU staging dir $LLM_DRAGOON_NPU_DIR is outside the payload dir $npu_model_dir — the lane's files reach the container only through the read-only /models mount" >&2 + if [[ "$LLM_DRAGOON_NPU_DIR/" != "$LLM_DRAGOON_MODEL_DIR"/* ]]; then + echo "ERROR: NPU staging dir $LLM_DRAGOON_NPU_DIR is outside the payload dir $LLM_DRAGOON_MODEL_DIR — the lane's files reach the container only through the read-only /models mount" >&2 return 1 fi if [[ ! -e "$LLM_DRAGOON_DEV_ACCEL" ]]; then diff --git a/tests/frank_dragoon_unit.bats b/tests/frank_dragoon_unit.bats index da1a038..d66555f 100755 --- a/tests/frank_dragoon_unit.bats +++ b/tests/frank_dragoon_unit.bats @@ -357,6 +357,9 @@ $(cat "$TEST_TMP/serve.log")" npu_models="$(sed -nE 's/^HALOGEN_NPU_MODELS=(.*)$/\1/p' "$ENV_FILE")" grep -qF "LLM_DRAGOON_NPU_DIR=\"\${LLM_DRAGOON_NPU_DIR:-$npu_dir}\"" "$DEPLOYER" grep -qF "LLM_DRAGOON_NPU_MODELS=\"\${LLM_DRAGOON_NPU_MODELS:-$npu_models}\"" "$DEPLOYER" + # The deployer's own copy of the payload dir is what the lane's containment + # gate compares against — a stale twin would wave a bad staging path through. + grep -qF "LLM_DRAGOON_MODEL_DIR=\"\${LLM_DRAGOON_MODEL_DIR:-$dir}\"" "$DEPLOYER" net="$(sed -nE 's/^FRANK_DRAGOON_NETWORK=(.*)$/\1/p' "$ENV_FILE")" grep -qF "LLM_DRAGOON_NETWORK=\"\${LLM_DRAGOON_NETWORK:-$net}\"" "$DEPLOYER" }