#!/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" <&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.' "