File size: 5,251 Bytes
c1bf102 89ef4db c1bf102 89ef4db c1bf102 3c9c754 c1bf102 b5dcda3 c1bf102 3c9c754 89ef4db c1bf102 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | #!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
# shellcheck source=scripts/gojira-b-ssh-lib.sh
source "${SCRIPT_DIR}/gojira-b-ssh-lib.sh"
kaiju_gojira_b_init
MODEL_REMOTE="${KAIJU_MERGED_MODEL_REMOTE:-/home/richardecholsai5/kaiju-coder/models/Kaiju-Coder-Qwen3.6-27B-v1.8-merged}"
STAGING="${KAIJU_MERGED_METADATA_STAGING:-/tmp/kaiju-coder-7-merged-hf-metadata}"
APPLY="${KAIJU_MERGED_METADATA_APPLY:-0}"
usage() {
cat <<'USAGE'
Prepare Hugging Face metadata files for the merged Kaiju Coder 7 model on Gojira-B.
Dry-run by default. Set KAIJU_MERGED_METADATA_APPLY=1 to sync metadata into the
remote merged-model directory. This script does not upload, create Hugging Face
repos, or read authentication tokens.
Environment:
KAIJU_MERGED_MODEL_REMOTE remote merged model dir on Gojira-B
KAIJU_MERGED_METADATA_STAGING local temp staging dir
KAIJU_MERGED_METADATA_APPLY 0 dry-run, 1 rsync metadata to Gojira-B
KAIJU_MERGED_METADATA_USE_SUDO auto, 0, or 1; default auto for root-owned model dirs
USAGE
}
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
usage
exit 0
fi
rm -rf "${STAGING}"
mkdir -p "${STAGING}/assets" "${STAGING}/upstream/qwen3.6-27b"
cp "${ROOT}/release/MODEL_CARD_DRAFT.md" "${STAGING}/README.md"
cp "${ROOT}/release/assets/RMDWlogo.png" "${STAGING}/assets/RMDWlogo.png"
cp "${ROOT}/release/PUBLIC_TESTING_QUICKSTART.md" "${STAGING}/PUBLIC_TESTING_QUICKSTART.md"
cp "${ROOT}/release/LOCAL_TEST_INSTRUCTIONS.md" "${STAGING}/LOCAL_TEST_INSTRUCTIONS.md"
cp "${ROOT}/release/SERVING_BENCHMARKS.md" "${STAGING}/SERVING_BENCHMARKS.md"
cp "${ROOT}/release/EVAL_SCOREBOARD.md" "${STAGING}/EVAL_SCOREBOARD.md"
cp "${ROOT}/release/DATA_PROVENANCE_DRAFT.md" "${STAGING}/DATA_PROVENANCE_DRAFT.md"
cp "${ROOT}/release/SOURCE_INVENTORY.md" "${STAGING}/SOURCE_INVENTORY.md"
cp "${ROOT}/release/UPSTREAM_LICENSE_CHECK.md" "${STAGING}/UPSTREAM_LICENSE_CHECK.md"
cp "${ROOT}/release/PAID_API_READINESS.md" "${STAGING}/PAID_API_READINESS.md"
cp "${ROOT}/release/FINAL_RELEASE_REPORT.md" "${STAGING}/FINAL_RELEASE_REPORT.md"
cp "${ROOT}/release/GOAL_COMPLETION_AUDIT.md" "${STAGING}/GOAL_COMPLETION_AUDIT.md"
cp "${ROOT}/release/HF_UPLOAD_EVIDENCE.md" "${STAGING}/HF_UPLOAD_EVIDENCE.md"
cp "${ROOT}/release/upstream/qwen3.6-27b/LICENSE" "${STAGING}/upstream/qwen3.6-27b/LICENSE"
cat > "${STAGING}/MERGED_MODEL_RELEASE_MANIFEST.json" <<EOF
{
"product": "Kaiju Coder 7",
"model_id": "kaiju-coder-7",
"remote_model_dir": "${MODEL_REMOTE}",
"metadata_status": "prepared_for_huggingface_review",
"notes": [
"Local metadata sync only; no Hugging Face upload performed.",
"Qwen attribution belongs in README/provenance/license notes, not the product model id.",
"Public paid API preflight evidence has passed; real customer charging still requires the deliberate Stripe live-mode switch."
]
}
EOF
python3 - <<PY
from pathlib import Path
root = Path("${STAGING}")
for path in sorted(p for p in root.rglob("*") if p.is_file()):
print(path.relative_to(root))
PY
kaiju_gojira_b_ssh "
set -euo pipefail
test -d '${MODEL_REMOTE}' || { echo 'Missing merged model: ${MODEL_REMOTE}' >&2; exit 2; }
test -f '${MODEL_REMOTE}/config.json' || { echo 'Missing config.json in ${MODEL_REMOTE}' >&2; exit 2; }
shard_count=\$(find '${MODEL_REMOTE}' -maxdepth 1 -name '*.safetensors' | wc -l | tr -d ' ')
if [[ \"\${shard_count}\" -lt 1 ]]; then
echo 'No safetensors shards found in ${MODEL_REMOTE}' >&2
exit 2
fi
echo 'Remote merged model present: ${MODEL_REMOTE}'
echo \"Safetensors shards: \${shard_count}\"
"
if [[ "${APPLY}" != "1" ]]; then
echo
echo "Dry run. Set KAIJU_MERGED_METADATA_APPLY=1 to sync metadata to Gojira-B."
echo "Metadata staging: ${STAGING}"
echo "Remote target: ${MODEL_REMOTE}"
exit 0
fi
rsync_args=(-az)
case "${KAIJU_MERGED_METADATA_USE_SUDO:-auto}" in
auto)
if ! kaiju_gojira_b_ssh "test -w '${MODEL_REMOTE}'"; then
kaiju_gojira_b_ssh "sudo -n true" >/dev/null
rsync_args+=(--rsync-path="sudo -n rsync")
echo "Remote model directory is not writable by SSH user; using sudo rsync."
fi
;;
1)
kaiju_gojira_b_ssh "sudo -n true" >/dev/null
rsync_args+=(--rsync-path="sudo -n rsync")
echo "Using sudo rsync as requested."
;;
0)
;;
*)
echo "KAIJU_MERGED_METADATA_USE_SUDO must be auto, 0, or 1" >&2
exit 2
;;
esac
kaiju_gojira_b_rsync "${rsync_args[@]}" "${STAGING}/" "${KAIJU_GOJIRA_B_DEST}:${MODEL_REMOTE}/"
kaiju_gojira_b_ssh "
set -euo pipefail
for required in \
README.md \
PUBLIC_TESTING_QUICKSTART.md \
LOCAL_TEST_INSTRUCTIONS.md \
SERVING_BENCHMARKS.md \
EVAL_SCOREBOARD.md \
DATA_PROVENANCE_DRAFT.md \
SOURCE_INVENTORY.md \
UPSTREAM_LICENSE_CHECK.md \
PAID_API_READINESS.md \
FINAL_RELEASE_REPORT.md \
GOAL_COMPLETION_AUDIT.md \
HF_UPLOAD_EVIDENCE.md \
assets/RMDWlogo.png \
MERGED_MODEL_RELEASE_MANIFEST.json \
upstream/qwen3.6-27b/LICENSE; do
test -f '${MODEL_REMOTE}/'\${required} || { echo \"Missing synced metadata: \${required}\" >&2; exit 2; }
done
echo 'Merged model metadata synced and verified.'
"
|