0a72fced28
El SDK CI - dev / build-and-test (pull_request) Failing after 13m17s
Establish lang/runtime/ as the ONE canonical el runtime (from the active runtime that carries hebb/emb persistence + the new WAL); repoint the el CI publish, engram build, elb default, and in-repo build scripts to it; delete the el-compiler/runtime + lang/releases/ forks; add scripts/check-single-runtime.sh drift guard. Fixes a live prod bug: the el CI published el-runtime-c/-h from the LAGGING el-compiler fork (0 hebb refs), so the shipped soul never persisted Hebbian edge weights — learned co-activation was wiped on every restart. Publishing from canonical ships the stranded 'learning that cannot outlive the process' fix. WAL storage engine + integrity fixes (DELETE->tombstone + store-layer protection, safe data-dir default) ride in behind ENGRAM_WAL (default off = byte-identical to today). Verified: engram elb per-module build clean, WAL gate 66/66, native smoke ok, drift-guard green.
51 lines
1.5 KiB
Bash
Executable File
51 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# El pre-commit hook: compile and run native tests before commit.
|
|
# Install once per clone: git config core.hooksPath .githooks
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="$(git rev-parse --show-toplevel)"
|
|
LANG_DIR="$ROOT/lang"
|
|
RUNTIME="$LANG_DIR/runtime"
|
|
ELC="$LANG_DIR/dist/platform/elc"
|
|
|
|
# If elc isn't built yet, skip with a warning rather than blocking
|
|
if [ ! -x "$ELC" ]; then
|
|
echo "⚠ elc not found at lang/dist/platform/elc — skipping pre-commit tests"
|
|
echo " Build it first: cd lang && gcc -O2 -I runtime dist/elc-bootstrap.c runtime/el_runtime.c -lcurl -lpthread -o dist/elc-gen2 && ./dist/elc-gen2 el-compiler/src/compiler.el > /tmp/elc.c && gcc -O2 -I runtime /tmp/elc.c runtime/el_runtime.c -lcurl -lpthread -o dist/platform/elc"
|
|
exit 0
|
|
fi
|
|
|
|
echo "→ Running El native tests..."
|
|
PASS=0
|
|
FAIL=0
|
|
FAILED_TESTS=""
|
|
|
|
for test_file in "$LANG_DIR"/tests/native/test_*.el; do
|
|
name=$(basename "$test_file" .el)
|
|
tmp_c="/tmp/el_hook_${name}.c"
|
|
tmp_bin="/tmp/el_hook_${name}"
|
|
|
|
if "$ELC" --test "$test_file" > "$tmp_c" 2>/dev/null \
|
|
&& gcc -O2 -I "$RUNTIME" "$tmp_c" "$RUNTIME/el_runtime.c" \
|
|
-lcurl -lpthread -lm -o "$tmp_bin" 2>/dev/null \
|
|
&& "$tmp_bin" 2>/dev/null; then
|
|
PASS=$((PASS + 1))
|
|
else
|
|
echo " ✗ $name"
|
|
FAIL=$((FAIL + 1))
|
|
FAILED_TESTS="$FAILED_TESTS $name"
|
|
fi
|
|
done
|
|
|
|
echo " $PASS passed, $FAIL failed"
|
|
|
|
if [ "$FAIL" -gt 0 ]; then
|
|
echo ""
|
|
echo "✗ Pre-commit failed. Fix these tests before committing:$FAILED_TESTS"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✓ All tests passed"
|
|
exit 0
|