This commit is contained in:
Oleg Maslov
2026-09-02 10:14:22 +02:00
parent 0c3e2ead3b
commit b20b138fe4
771 changed files with 161561 additions and 9027 deletions

View File

@@ -1,140 +1,16 @@
#!/usr/bin/env bash
#
# Local-dev parity check for memory substrate (waggle-os ↔ hive-mind).
# RETIRED 2026-04-30 — the memory substrate moved to
# packages/hive-mind-core/src and the public mirror adopted a curated layout.
# This pre-migration injector cannot prove current parity and must not run.
#
# Mirrors the logic of `.github/workflows/mind-parity-check.yml` so you can
# run the same check locally before pushing. Useful when you're modifying
# `packages/core/src/mind/` or `packages/core/src/harvest/` and want to
# catch parity failures without waiting for CI.
#
# USAGE:
# scripts/parity-check.sh [--keep-injected]
#
# Options:
# --keep-injected Don't clean up CI-injected -hive-mind suffix files
# after the run (useful for inspecting what CI sees).
#
# REQUIREMENTS:
# - hive-mind checked out at one of:
# D:/Projects/hive-mind (default Windows path)
# ~/Projects/hive-mind (default Unix path)
# $HIVE_MIND_PATH (override)
# - npm + Node + a working `npx vitest`
# - The waggle-os repo as the cwd
#
# See `.github/sync.md` for full design rationale and `.parity-allowlist`
# policy.
# Current maintainer workflow:
# 1. Read AGENTS.md §7.5 and packages/hive-mind-core/CONTRIBUTING.md.
# 2. Run scripts/oss-drift-check.sh against a clean OSS checkout.
# 3. Prepare and review a maintainer-curated forward-port.
set -euo pipefail
KEEP_INJECTED=0
for arg in "$@"; do
case "$arg" in
--keep-injected) KEEP_INJECTED=1 ;;
-h|--help)
sed -n '2,28p' "$0" | sed 's/^# \{0,1\}//'
exit 0
;;
*)
echo "Unknown arg: $arg" >&2
echo "Run with --help for usage" >&2
exit 2
;;
esac
done
# Locate hive-mind checkout
if [ -n "${HIVE_MIND_PATH:-}" ]; then
hive_root="$HIVE_MIND_PATH"
elif [ -d "D:/Projects/hive-mind/packages/core/src/mind" ]; then
hive_root="D:/Projects/hive-mind"
elif [ -d "$HOME/Projects/hive-mind/packages/core/src/mind" ]; then
hive_root="$HOME/Projects/hive-mind"
else
echo "::error:: hive-mind checkout not found. Set HIVE_MIND_PATH or clone marolinik/hive-mind to D:/Projects/hive-mind." >&2
exit 1
fi
echo "hive-mind root: $hive_root"
# Verify cwd is waggle-os
if [ ! -f "packages/core/src/mind/db.ts" ]; then
echo "::error:: this script must run from the waggle-os repo root." >&2
exit 1
fi
# Parse .parity-allowlist
allowlist_file=".parity-allowlist"
allowlist_basenames=()
if [ -f "$allowlist_file" ]; then
while IFS= read -r line; do
clean="${line%%#*}"
clean="$(echo "$clean" | tr -d '[:space:]')"
[ -z "$clean" ] && continue
allowlist_basenames+=("$clean")
done < "$allowlist_file"
echo "Allowlist: ${allowlist_basenames[*]:-<none>}"
fi
is_allowlisted() {
local name="$1"
for a in "${allowlist_basenames[@]:-}"; do
[ "$a" = "$name" ] && return 0
done
return 1
}
# Inject — track ONLY files we add new (not overwrite committed ones)
target_dir="packages/core/tests/mind"
source_dir="$hive_root/packages/core/src/mind"
mkdir -p tmp
> tmp/parity-injected.txt
injected=0
overwrote=0
skipped=0
for src in "$source_dir"/*.test.ts; do
[ -e "$src" ] || continue
base="$(basename "$src" .test.ts)"
target_name="${base}-hive-mind.test.ts"
target_path="$target_dir/$target_name"
if is_allowlisted "$target_name"; then
skipped=$((skipped + 1))
continue
fi
if [ -f "$target_path" ]; then
# File is committed (Step 2 port — possibly with bespoke header
# comments documenting port provenance + adaptation rationale).
# Don't overwrite: the committed version IS what CI/local should
# exercise. We track which files we observed already-present so the
# operator sees the count.
overwrote=$((overwrote + 1))
continue
fi
injected=$((injected + 1))
echo "$target_path" >> tmp/parity-injected.txt
cp "$src" "$target_path"
sed -i "s|from \"\\./|from \"../../src/mind/|g" "$target_path"
sed -i "s|from '\\./|from '../../src/mind/|g" "$target_path"
done
echo "Injected: $injected new + $overwrote already-committed-skip + $skipped allowlisted-skip"
# Run the suite
echo ""
echo "## Running combined waggle-os + hive-mind suite..."
exit_code=0
npx vitest run --reporter=default "$target_dir" || exit_code=$?
# Cleanup
if [ $KEEP_INJECTED -eq 0 ]; then
while IFS= read -r f; do
[ -n "$f" ] && rm -f "$f"
done < tmp/parity-injected.txt
echo ""
echo "Cleaned up $(wc -l < tmp/parity-injected.txt) injected files"
else
echo ""
echo "Kept injected files (--keep-injected). Track in tmp/parity-injected.txt"
fi
exit $exit_code
echo "[parity-check] RETIRED: this pre-migration parity injector is disabled." >&2
echo "[parity-check] Use scripts/oss-drift-check.sh and the curated workflow in AGENTS.md §7.5." >&2
exit 2