Ctrl K
ComunidadGuías…

scripts/butler-coding-strict-pilot-smoke.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# G2-08 Task 3: Phase A 控型 smoke — 直接调 apply_coding_strict_pilot_gate,
# 不走真实 delegate 链。验 gate 机制在 4 组合下行为。
set -uo pipefail

WFXM_HOME="${WFXM_HOME:-/home/ailearn/projects/WFXM}"
PASS=0
FAIL=0

run_gate() {
    local desc="$1"
    local strict_env="$2"
    local role="$3"
    local category="$4"
    local violated_json="$5"
    local expect_ok="$6"
    local expect_gate="$7"

    set +e
    out=$(cd "$WFXM_HOME" && BUTLER_CODING_STRICT="$strict_env" \
        /home/ailearn/miniconda3/bin/python3 -c "
from butler.dev_engine.b9_delegate_gate import apply_coding_strict_pilot_gate
import json, sys
ck = {'violated': $violated_json}
ok, issues = apply_coding_strict_pilot_gate(
    category='$category', role='$role',
    dev_engine={'coding_knowledge': ck},
    base_success=True,
)
print(json.dumps({'ok': ok, 'issues': issues}))
" 2>&1)
    rc=$?
    set -e

    got_ok=$(echo "$out" | python3 -c "import sys,json; d=json.loads(sys.stdin.read().strip().splitlines()[-1]); print(d['ok'])" 2>/dev/null || echo "")
    got_gate=$(echo "$out" | grep -c "CODING_STRICT_GATE" || true)

    if [ "$got_ok" = "$expect_ok" ] && [ "$got_gate" -eq "$expect_gate" ]; then
        echo "PASS: $desc (ok=$got_ok gate=$got_gate)"
        PASS=$((PASS + 1))
    else
        echo "FAIL: $desc (got ok=$got_ok gate=$got_gate, expected ok=$expect_ok gate=$expect_gate)"
        echo "  output: $out"
        FAIL=$((FAIL + 1))
    fi
}

# Case 1: strict=1 + dev + deep + violated 非空 → 阻断
run_gate "strict=1_dev_deep_violated_blocks" "1" "dev" "deep" "[\"CA4\",\"T8\"]" "False" "1"

# Case 2: strict=0 → 放行
run_gate "strict=0_advisory_passes" "0" "dev" "deep" "[\"CA4\",\"T8\"]" "True" "0"

# Case 3: role=content → 放行
run_gate "role_content_passes" "1" "content" "deep" "[\"CA4\",\"T8\"]" "True" "0"

# Case 4: category=other(不在 pilot set)→ 放行
run_gate "category_other_passes" "1" "dev" "other" "[\"CA4\",\"T8\"]" "True" "0"

echo "Result: $PASS pass / $FAIL fail"
[ "$FAIL" -eq 0 ]