A1 — install.sh wiring for kei-db-contract:
- install/lib-substrate.sh substrate_core_binaries(): add kei-db-contract
to always-copy list. End users now get the binary in ~/.cargo/bin/
immediately after install (no manual cargo install --path needed).
A2 — Wave B follow-up: drop #[path] hack from guard_test_corpus.rs
- tests/guard_test_corpus.rs: #[path = "../src/injection_*"] mod ...
→ use kei_memory::injection_guard::scan
- Now uses Wave B's [lib] target like tests/integration.rs already does.
- 4 tests still pass.
Verified via cargo test: 18 lib + 4 corpus + 3 ingest_guard + 1 injection_unit
+ 4 dedup + 8 integration + 4 ingest_real_trace = 42 tests, all green.
=== STATUS-TRUTH MARKER ===
shipped: functional
stubs: 0
cargo-check: PASS
cargo-test: PASS (42 tests, 0 failures)
behaviour-verified: yes
follow-up-required:
- tests/ingest_guard_tests.rs already migrated (Wave A's earlier work)
- kei-db-contract still requires kit user to have run install.sh; existing
installs need re-run. Kit ledger-validate should add post-install probe.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
95 lines
3.6 KiB
Bash
95 lines
3.6 KiB
Bash
# shellcheck shell=bash
|
|
# lib-substrate.sh — substrate-binary mirror (Wave 39).
|
|
#
|
|
# Always-copy substrate-core binaries (kei-fork, kei-ledger, kei-spawn,
|
|
# kei-agent-runtime, etc.) from the source repo's pre-built target/release/
|
|
# into the agent install dir, so the user gets `kei-fork list` etc.
|
|
# immediately after install — without depending on the scoped workspace
|
|
# build (which only contains the installed-profile subset).
|
|
#
|
|
# Two tiers:
|
|
# substrate_core — always copied (substrate spine + most LBM crates)
|
|
# substrate_cortex — copied only when PROFILE matches cortex|full
|
|
#
|
|
# Requires: say from lib-log.sh.
|
|
# Reads globals: $KIT_DIR, $AGENTS_DIR, $PROFILE.
|
|
|
|
# Echo space-separated names of always-copy substrate binaries.
|
|
substrate_core_binaries() {
|
|
printf '%s\n' \
|
|
kei-fork kei-ledger kei-spawn kei-agent-runtime \
|
|
kei-capability kei-pet kei-shared kei-store kei-memory \
|
|
kei-pipe kei-cache kei-replay kei-runtime \
|
|
kei-atom-discovery kei-task kei-search-core \
|
|
kei-content-store kei-router kei-sage kei-curator \
|
|
kei-auth kei-artifact keisei \
|
|
kei-conflict-scan kei-refactor-engine kei-graph-check \
|
|
kei-diff kei-scheduler kei-watch kei-prune kei-discover \
|
|
kei-brain-view kei-hibernate kei-ledger-sign kei-dna-index \
|
|
kei-entity-store kei-crossdomain kei-social-store \
|
|
kei-chat-store kei-provision kei-changelog kei-migrate \
|
|
kei-db-contract \
|
|
frustration-matrix \
|
|
ssh-check firewall-diff mock-render visual-diff tokens-sync
|
|
}
|
|
|
|
# Echo cortex-profile-only binaries.
|
|
substrate_cortex_binaries() {
|
|
printf '%s\n' kei-cortex kei-mcp kei-tty kei-skill-importer
|
|
}
|
|
|
|
# Install one prebuilt binary src->dst with mode 755. Idempotent.
|
|
# Args: $1=src absolute path, $2=dst absolute path. Uses install(1) when
|
|
# available (POSIX-portable), falls back to cp+chmod.
|
|
# Returns 0 on success, 1 if src missing/unexecutable.
|
|
_install_one_binary() {
|
|
local src="$1" dst="$2"
|
|
[ -f "$src" ] && [ -x "$src" ] || return 1
|
|
mkdir -p "$(dirname "$dst")"
|
|
if command -v install >/dev/null 2>&1; then
|
|
install -m 755 "$src" "$dst" 2>/dev/null && return 0
|
|
fi
|
|
cp -f "$src" "$dst" && chmod 755 "$dst"
|
|
}
|
|
|
|
# Mirror pre-built substrate binaries from $KIT_DIR to ~/.cargo/bin/.
|
|
# Idempotent — re-running after files exist is fine (refreshes content;
|
|
# a newer source will replace an older mirror, never errors).
|
|
# No-op when source dir doesn't exist (release-asset extract pending).
|
|
#
|
|
# Architecture (v0.18+): single canonical install location is ~/.cargo/bin/,
|
|
# present in PATH for any user with rustup. Eliminates dual-location drift
|
|
# (the kei-ledger v9 incident root cause).
|
|
copy_prebuilt_substrate_binaries() {
|
|
local src_dir="$KIT_DIR/_primitives/_rust/target/release"
|
|
local dst_dir="$HOME/.cargo/bin"
|
|
[ -d "$src_dir" ] || return 0
|
|
mkdir -p "$dst_dir"
|
|
local copied=0 missing=0 name profile_match=0
|
|
case "${PROFILE:-}" in
|
|
cortex|full) profile_match=1 ;;
|
|
esac
|
|
while IFS= read -r name; do
|
|
[ -z "$name" ] && continue
|
|
if _install_one_binary "$src_dir/$name" "$dst_dir/$name" 2>/dev/null; then
|
|
copied=$((copied+1))
|
|
else
|
|
missing=$((missing+1))
|
|
fi
|
|
done < <(substrate_core_binaries)
|
|
if [ "$profile_match" = "1" ]; then
|
|
while IFS= read -r name; do
|
|
[ -z "$name" ] && continue
|
|
if _install_one_binary "$src_dir/$name" "$dst_dir/$name" 2>/dev/null; then
|
|
copied=$((copied+1))
|
|
else
|
|
missing=$((missing+1))
|
|
fi
|
|
done < <(substrate_cortex_binaries)
|
|
fi
|
|
if [ "$copied" -gt 0 ]; then
|
|
say " installed $copied substrate binar(y/ies) -> ~/.cargo/bin/"
|
|
elif [ "$missing" -gt 0 ]; then
|
|
say " no pre-built substrate binaries found in $src_dir (rely on cargo build)"
|
|
fi
|
|
}
|