kaiju-coder-7-opencode / scripts /prepare_hf_merged_model_metadata.sh
restokes92's picture
Upload Kaiju Coder 7 OpenCode helper package
89ef4db verified
#!/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.'
"