feat(core,cli): harden install engine and extend skill lint and interview eval
- update only touches the recorded project root; project installs do not follow symlinks or junctions; repeated --force rotates .orig backups; uninstall never deletes outside the recorded root - run npm/npx without a shell on Windows and pin optional tool versions - skip the update check in CI and non-interactive output - lint: cross-document section pointers, preflight row ids, gate rule numbers, per-document size budgets, gate copy equality - eval: scenarios S19-S21, route and read-cost rejudging, interpretation card judging, temp-dir previews and table-form cards no longer fail
This commit is contained in:
parent
ee3bef2ce5
commit
9bcb45cbd3
122 changed files with 5836 additions and 831 deletions
|
|
@ -69,6 +69,22 @@ MSG
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# 이 러너는 PR CI 와 릴리스가 같은 host 를 공유한다. PR 잡이 러너 홈(~/.nvm 등)에 가짜 node 를
|
||||
# 심으면 위 탐색이 그걸 PATH 에 올릴 수 있다. 실제로 쓰는 바이너리의 위치·해시를 항상 남기고,
|
||||
# EXPECTED_NODE_SHA256 이 주어지면(릴리스 잡) 다를 때 멈춘다.
|
||||
node_bin="$(command -v node)"
|
||||
node_real="$(readlink -f "$node_bin" 2>/dev/null || echo "$node_bin")"
|
||||
if command -v sha256sum >/dev/null 2>&1; then
|
||||
node_sum="$(sha256sum "$node_real" | cut -d' ' -f1)"
|
||||
else
|
||||
node_sum="$(shasum -a 256 "$node_real" | cut -d' ' -f1)"
|
||||
fi
|
||||
echo "node 바이너리: $node_real (sha256 $node_sum)"
|
||||
if [ -n "${EXPECTED_NODE_SHA256:-}" ] && [ "$node_sum" != "$EXPECTED_NODE_SHA256" ]; then
|
||||
echo "node 바이너리 해시가 기대값(EXPECTED_NODE_SHA256)과 다르다 — 러너 오염 가능성이 있어 멈춘다" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# pnpm 은 corepack 으로 확보한다 — 러너에 전역 설치를 요구하지 않는다
|
||||
if ! command -v pnpm >/dev/null 2>&1; then
|
||||
corepack enable >/dev/null 2>&1 || true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue