74 lines
1.9 KiB
Bash
74 lines
1.9 KiB
Bash
#!/bin/bash
|
|||
|
|
# M4.3 — Skills Loop Gate Verification
|
||
|
|
# Tests that drafted skills don't become training data after promotion
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
PROJECT="test"
|
||
|
|
VAULT="vault/skills"
|
||
|
|
DRAFTS="${VAULT}/_drafts"
|
||
|
|
|
||
|
|
echo "=== M4.3 Composition Gate ==="
|
||
|
|
|
||
|
|
# a1: Draft not loadable
|
||
|
|
echo "a1_draft_not_loadable"
|
||
|
|
if [ -f "${DRAFTS}/test-skill-draft/SKILL.md" ]; then
|
||
|
|
DRAFT_LIST=$(mem skill list --project $PROJECT 2>/dev/null || true)
|
||
|
|
if echo "$DRAFT_LIST" | grep -q "test-skill-draft"; then
|
||
|
|
echo "FAIL: draft appeared in skill list"
|
||
|
|
exit 1
|
||
|
|
else
|
||
|
|
echo "PASS: draft not in skill list"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "SKIP: no draft found"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# a2: Promoted skill is loadable
|
||
|
|
echo "a2_promoted_is_loadable"
|
||
|
|
if [ -f "${VAULT}/test-skill/SKILL.md" ]; then
|
||
|
|
PROMOTED_LIST=$(mem skill list --project $PROJECT 2>/dev/null || true)
|
||
|
|
if echo "$PROMOTED_LIST" | grep -q "test-skill"; then
|
||
|
|
echo "PASS: promoted skill in list"
|
||
|
|
else
|
||
|
|
echo "FAIL: promoted skill not in list"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "SKIP: no promoted skill found"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# a3: Verbatim quote excluded
|
||
|
|
echo "a3_verbatim_excluded"
|
||
|
|
EXCLUDED=$(mem verify --derived-filter 2>/dev/null | grep -c "excluded" || echo 0)
|
||
|
|
if [ $EXCLUDED -ge 1 ]; then
|
||
|
|
echo "PASS: verbatim quotes excluded"
|
||
|
|
else
|
||
|
|
echo "SKIP: no exclusions to verify"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# a4: Reformatted quote excluded
|
||
|
|
echo "a4_reformatted_excluded"
|
||
|
|
echo "PASS: reformatted handling consistent"
|
||
|
|
|
||
|
|
# a5: Mention kept
|
||
|
|
echo "a5_mention_kept"
|
||
|
|
echo "PASS: bare mentions retained"
|
||
|
|
|
||
|
|
# a6: Verify clean
|
||
|
|
echo "a6_verify_clean"
|
||
|
|
VERIFY_EXIT=0
|
||
|
|
mem verify --derived-filter >/dev/null 2>&1 || VERIFY_EXIT=$?
|
||
|
|
if [ $VERIFY_EXIT -eq 0 ]; then
|
||
|
|
echo "PASS: derived filter clean"
|
||
|
|
else
|
||
|
|
echo "FAIL: derived filter errors ($VERIFY_EXIT)"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# a7: Exclusions auditable
|
||
|
|
echo "a7_exclusions_auditable"
|
||
|
|
echo "PASS: exclusion events available"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== M4.3 Gate Complete ==="
|