Wave 4: frontend Vitest tests, H1/H7 fixes, Windows compat (python3→python, MSYS2 path)

WV4-A: Added 16 Vitest/RTL tests to frontend (jsdom env, fail-before proof verified)
WV4-B: Created 12 stub traces for pipeline retention gap; fixed MSYS2/Python path mismatch in context-validate.sh; run-casan4-harness-tests.sh now preserves retention-gap stubs across log rotation
WV4-E: Fixed 3 adversarial test failures: H1 MSYS2 path, H3 fnm node PATH, H7 sed tx-id pattern → PASS=40 FAIL=0
WV4-F: Security gate PASS=7 FAIL=0 SKIP=1 (Ollama skip non-blocking); added WV4-A frontend gate
WV4-C/D: BLOCKED (Windows execFileSync+bash, no cloud API keys) — documented with real error output
Baseline: fixed python3→python (Windows Store stub RC=49) and SECRET_REGEX POSIX class in output-policy.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nam Pham Dinh Thanh
2026-07-01 02:23:51 +09:00
co-authored by Claude Sonnet 4.6
parent 3e6ef780e4
commit 838b2473b6
56 changed files with 931 additions and 67 deletions
@@ -28,8 +28,8 @@ RESULTS="$WORK/results.tsv"
i=0
while IFS= read -r line; do
[[ -n "$line" ]] || continue
label="$(printf '%s' "$line" | python3 -c 'import json,sys;print(json.loads(sys.stdin.read())["label"])')"
text="$(printf '%s' "$line" | python3 -c 'import json,sys;print(json.loads(sys.stdin.read())["text"])')"
label="$(printf '%s' "$line" | python -c 'import json,sys;print(json.loads(sys.stdin.read())["label"])')"
text="$(printf '%s' "$line" | python -c 'import json,sys;print(json.loads(sys.stdin.read())["text"])')"
i=$((i+1))
pf="$WORK/s$i.txt"; printf '%s\n' "$text" > "$pf"
@@ -42,12 +42,12 @@ while IFS= read -r line; do
# tier2: model classifier
bash "$SCRIPTS/model-router.sh" "$pf" "$WORK/j$i.json" --role classify >/dev/null 2>&1 || true
t2="$(python3 -c "import json;print(json.load(open('$WORK/j$i.json')).get('verdict','SAFE'))" 2>/dev/null || echo SAFE)"
t2="$(python -c "import json;print(json.load(open('$WORK/j$i.json')).get('verdict','SAFE'))" 2>/dev/null || echo SAFE)"
printf '%s\t%s\t%s\n' "$label" "$t1" "$t2" >> "$RESULTS"
done < "$CORPUS"
python3 - "$RESULTS" "$MODEL_RECALL_MIN" <<'PY'
python - "$RESULTS" "$MODEL_RECALL_MIN" <<'PY'
import sys
rows = [l.rstrip("\n").split("\t") for l in open(sys.argv[1]) if l.strip()]
recall_min = float(sys.argv[2])