mirror of
https://github.com/Heretek-AI/openclaw.git
synced 2026-07-19 18:13:35 -04:00
111 lines
4.0 KiB
Bash
Executable File
111 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Triad Unity Check — Verifies alignment across TM-1, TM-2, TM-3
|
|
# Usage: ./scripts/triad-unity-check.sh [--full] [--fix]
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
WORKSPACE_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
SSH_KEY="$HOME/.ssh/triad_key"
|
|
TM2_HOST="root@192.168.31.209"
|
|
TM3_HOST="root@192.168.31.85"
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo "🦞 === Triad Unity Check ==="
|
|
echo ""
|
|
|
|
# TM-1 (local)
|
|
echo "TM-1 (silica-animus):"
|
|
cd "$WORKSPACE_ROOT"
|
|
TM1_HASH=$(git rev-parse HEAD 2>/dev/null || echo "git-error")
|
|
TM1_SKILLS=$(ls skills/ 2>/dev/null | wc -l)
|
|
TM1_LEDGER=$(sqlite3 .aura/consensus.db "SELECT COUNT(*) FROM consensus_votes" 2>/dev/null || echo "0")
|
|
echo " Git: $TM1_HASH"
|
|
echo " Skills: $TM1_SKILLS"
|
|
echo " Ledger: $TM1_LEDGER votes"
|
|
echo ""
|
|
|
|
# TM-2
|
|
echo "TM-2 (testbench):"
|
|
TM2_OUTPUT=$(ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$TM2_HOST" \
|
|
"cd /home/openclaw/.openclaw/workspace && \
|
|
git rev-parse HEAD 2>/dev/null && \
|
|
ls skills/ 2>/dev/null | wc -l && \
|
|
sqlite3 .aura/consensus.db 'SELECT COUNT(*) FROM consensus_votes' 2>/dev/null" 2>&1) || TM2_OUTPUT="ssh-error"
|
|
TM2_HASH=$(echo "$TM2_OUTPUT" | sed -n '1p')
|
|
TM2_SKILLS=$(echo "$TM2_OUTPUT" | sed -n '2p')
|
|
TM2_LEDGER=$(echo "$TM2_OUTPUT" | sed -n '3p')
|
|
echo " Git: $TM2_HASH"
|
|
echo " Skills: ${TM2_SKILLS:-0}"
|
|
echo " Ledger: ${TM2_LEDGER:-0} votes"
|
|
echo ""
|
|
|
|
# TM-3
|
|
echo "TM-3 (tabula-myriad-3):"
|
|
TM3_OUTPUT=$(ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$TM3_HOST" \
|
|
"cd /home/openclaw/.openclaw/workspace && \
|
|
git rev-parse HEAD 2>/dev/null && \
|
|
ls skills/ 2>/dev/null | wc -l && \
|
|
sqlite3 .aura/consensus.db 'SELECT COUNT(*) FROM consensus_votes' 2>/dev/null" 2>&1) || TM3_OUTPUT="ssh-error"
|
|
TM3_HASH=$(echo "$TM3_OUTPUT" | sed -n '1p')
|
|
TM3_SKILLS=$(echo "$TM3_OUTPUT" | sed -n '2p')
|
|
TM3_LEDGER=$(echo "$TM3_OUTPUT" | sed -n '3p')
|
|
echo " Git: $TM3_HASH"
|
|
echo " Skills: ${TM3_SKILLS:-0}"
|
|
echo " Ledger: ${TM3_LEDGER:-0} votes"
|
|
echo ""
|
|
|
|
# Check alignment
|
|
echo "=== Alignment Check ==="
|
|
if [ "$TM1_HASH" = "$TM2_HASH" ] && [ "$TM2_HASH" = "$TM3_HASH" ] && [ "$TM1_HASH" != "git-error" ]; then
|
|
echo -e "${GREEN}✅ Triad aligned: $TM1_HASH${NC}"
|
|
ALIGNED=true
|
|
else
|
|
echo -e "${RED}❌ Triad diverged:${NC}"
|
|
echo " TM-1: $TM1_HASH"
|
|
echo " TM-2: $TM2_HASH"
|
|
echo " TM-3: $TM3_HASH"
|
|
ALIGNED=false
|
|
|
|
if [ "$1" = "--fix" ]; then
|
|
echo ""
|
|
echo "=== Auto-Fix Mode ==="
|
|
echo "Pushing TM-1 config to TM-2 and TM-3..."
|
|
scp -i "$SSH_KEY" -o StrictHostKeyChecking=no "$WORKSPACE_ROOT/openclaw.json" "$TM2_HOST:/home/openclaw/.Heretek-AI/openclaw.json" && \
|
|
echo "✅ TM-1 config pushed to TM-2" || echo "❌ TM-2 push failed"
|
|
scp -i "$SSH_KEY" -o StrictHostKeyChecking=no "$WORKSPACE_ROOT/openclaw.json" "$TM3_HOST:/home/openclaw/.Heretek-AI/openclaw.json" && \
|
|
echo "✅ TM-1 config pushed to TM-3" || echo "❌ TM-3 push failed"
|
|
|
|
echo "Restarting gateways..."
|
|
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$TM2_HOST" "cd /home/openclaw/.openclaw && npx openclaw gateway restart" && \
|
|
echo "✅ TM-2 gateway restarted" || echo "❌ TM-2 restart failed"
|
|
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$TM3_HOST" "cd /home/openclaw/.openclaw && npx openclaw gateway restart" && \
|
|
echo "✅ TM-3 gateway restarted" || echo "❌ TM-3 restart failed"
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# Check skill parity
|
|
echo "=== Skill Parity ==="
|
|
if [ "${TM1_SKILLS:-0}" = "${TM3_SKILLS:-0}" ] && [ "$TM1_SKILLS" -gt 0 ]; then
|
|
echo -e "${GREEN}✅ Skill count matches: $TM1_SKILLS${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Skill count diverged:${NC}"
|
|
echo " TM-1: ${TM1_SKILLS:-0}"
|
|
echo " TM-2: ${TM2_SKILLS:-0}"
|
|
echo " TM-3: ${TM3_SKILLS:-0}"
|
|
fi
|
|
echo ""
|
|
|
|
# Log to SQLite
|
|
sqlite3 "$WORKSPACE_ROOT/.aura/consensus.db" \
|
|
"INSERT INTO unity_audits (check_type, tm1_hash, tm2_hash, tm3_hash, aligned, violations)
|
|
VALUES ('full', '$TM1_HASH', '$TM2_HASH', '$TM3_HASH', $ALIGNED, 0)" 2>/dev/null || true
|
|
|
|
echo "🦞 Unity check complete."
|