154 lines
4.3 KiB
Bash
Executable File
154 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Daily Review Script — Clavitor Agent Handbook Part 4
|
|
# Run this every morning before any new feature work.
|
|
# Any failure = foundation alert. Fix before proceeding.
|
|
|
|
set -e
|
|
|
|
FAILED=0
|
|
PASSED=0
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo "=== Clavitor Daily Review ==="
|
|
echo "Checking against CLAVITOR-AGENT-HANDBOOK.md Part 4"
|
|
echo ""
|
|
|
|
# Function to run a check
|
|
check() {
|
|
local name="$1"
|
|
local cmd="$2"
|
|
local expected="$3"
|
|
|
|
echo -n "Checking $name... "
|
|
|
|
if eval "$cmd" > /dev/null 2>&1; then
|
|
if [ "$expected" = "fail" ]; then
|
|
echo -e "${RED}❌ FAIL${NC} (should have failed but passed)"
|
|
FAILED=$((FAILED + 1))
|
|
else
|
|
echo -e "${GREEN}✅ PASS${NC}"
|
|
PASSED=$((PASSED + 1))
|
|
fi
|
|
else
|
|
if [ "$expected" = "fail" ]; then
|
|
echo -e "${GREEN}✅ PASS${NC} (correctly failed)"
|
|
PASSED=$((PASSED + 1))
|
|
else
|
|
echo -e "${RED}❌ FAIL${NC}"
|
|
FAILED=$((FAILED + 1))
|
|
fi
|
|
fi
|
|
}
|
|
|
|
echo "--- Section A: Server Hard Veto Checks ---"
|
|
|
|
# A1: Server never receives master_key
|
|
check "A1: No master_key on server" \
|
|
"grep -rn 'master_key\|MasterKey\|masterKey' clavis-vault/api/ clavis-vault/lib/ --include='*.go' | grep -v '_test.go' | head -1" \
|
|
"fail"
|
|
|
|
# A2: No DeriveP1 on server
|
|
check "A2: No DeriveP1 on server" \
|
|
"grep -rn 'DeriveP1\|derive_p1\|deriveP1' clavis-vault/lib/ clavis-vault/api/ | head -1" \
|
|
"fail"
|
|
|
|
# A3: No L2 credential functions
|
|
check "A3: No L2 credential functions" \
|
|
"grep -rn 'MintCredential\|ParseCredential\|CredentialToWire' clavis-vault/api/ clavis-vault/lib/ | head -1" \
|
|
"fail"
|
|
|
|
echo ""
|
|
echo "--- Section F: Test Posture ---"
|
|
|
|
# F1: Tests pass
|
|
echo -n "F1: Go tests pass... "
|
|
cd clavis/clavis-vault
|
|
if go test ./lib/... ./api/... > /tmp/test-output.log 2>&1; then
|
|
echo -e "${GREEN}✅ PASS${NC}"
|
|
PASSED=$((PASSED + 1))
|
|
else
|
|
echo -e "${RED}❌ FAIL${NC}"
|
|
echo " See: /tmp/test-output.log"
|
|
FAILED=$((FAILED + 1))
|
|
fi
|
|
cd ../..
|
|
|
|
# F2: Build succeeds
|
|
echo -n "F2: Build succeeds... "
|
|
cd clavis/clavis-vault
|
|
if go build -o /tmp/clavitor-test ./cmd/clavitor/ > /tmp/build-output.log 2>&1; then
|
|
echo -e "${GREEN}✅ PASS${NC}"
|
|
PASSED=$((PASSED + 1))
|
|
else
|
|
echo -e "${RED}❌ FAIL${NC}"
|
|
echo " See: /tmp/build-output.log"
|
|
FAILED=$((FAILED + 1))
|
|
fi
|
|
cd ../..
|
|
|
|
# F3: Check for test files (basic check)
|
|
echo -n "F3: Recent Go changes have tests... "
|
|
# Get files changed in last commit
|
|
CHANGED=$(git diff --name-only HEAD~1 2>/dev/null | grep '\.go$' | grep -v '_test.go' || true)
|
|
if [ -z "$CHANGED" ]; then
|
|
echo -e "${YELLOW}⚠️ SKIP${NC} (no Go changes in last commit)"
|
|
else
|
|
# Check each changed file has corresponding test
|
|
MISSING_TESTS=0
|
|
for f in $CHANGED; do
|
|
testfile="$(dirname $f)/$(basename $f .go)_test.go"
|
|
if [ ! -f "$testfile" ]; then
|
|
echo ""
|
|
echo -e " ${YELLOW}⚠️ WARNING: $f has no test file${NC}"
|
|
MISSING_TESTS=$((MISSING_TESTS + 1))
|
|
fi
|
|
done
|
|
if [ $MISSING_TESTS -eq 0 ]; then
|
|
echo -e "${GREEN}✅ PASS${NC}"
|
|
PASSED=$((PASSED + 1))
|
|
else
|
|
echo -e "${YELLOW}⚠️ PARTIAL${NC} ($MISSING_TESTS files without tests)"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "--- Section G: Dead Code ---"
|
|
|
|
# G1: Empty directories
|
|
echo -n "G1: No empty directories... "
|
|
EMPTY=$(find . -type d -empty 2>/dev/null | grep -v ".git" | grep -v "vendor" | head -5)
|
|
if [ -z "$EMPTY" ]; then
|
|
echo -e "${GREEN}✅ PASS${NC}"
|
|
PASSED=$((PASSED + 1))
|
|
else
|
|
echo -e "${RED}❌ FAIL${NC}"
|
|
echo "$EMPTY" | while read dir; do
|
|
echo " $dir"
|
|
done
|
|
FAILED=$((FAILED + 1))
|
|
fi
|
|
|
|
# G2: No orphaned HTML (with exceptions)
|
|
echo -n "G2: No orphaned production files... "
|
|
# This is a simplified check - manual review still needed
|
|
ORPHANED=0
|
|
echo -e "${YELLOW}⚠️ MANUAL${NC} (see handbook for full G2 check)"
|
|
|
|
echo ""
|
|
echo "=== Summary ==="
|
|
echo -e "${GREEN}Passed: $PASSED${NC}"
|
|
if [ $FAILED -gt 0 ]; then
|
|
echo -e "${RED}Failed: $FAILED${NC}"
|
|
echo ""
|
|
echo -e "${RED}FOUNDATION ALERT: Fix failures before any new feature work.${NC}"
|
|
exit 1
|
|
else
|
|
echo -e "${GREEN}All checks passed. Ready for feature work.${NC}"
|
|
exit 0
|
|
fi
|