Фронт перенесён в arm-core/web/ из arm-web вместе со своими .claude/, CLAUDE.md, openspec/config.yaml, docs/superpowers/ и .codegraph/. Скрипт удалял их только в корне, поэтому в arm-core их пришлось вычищать вручную (arm-core #73). - prepare-contour-snapshot.sh: удаление и проверка через find по всему дереву; опустевшие docs/ убираются; Dockerfile/.dockerignore — по-прежнему только корень - scripts/test_prepare_contour_snapshot.sh + make test-snapshot (входит в make check): синтетический arm-core с артефактами в корне и в web/ - dev/contour-transfer-guide.md §1–§3 и текст SNAPSHOT.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
54 lines
2.8 KiB
Bash
Executable File
54 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Тест prepare-contour-snapshot.sh на синтетическом репозитории arm-core: артефакты агента вырезаются на любой глубине
|
|
# (в т.ч. во вложенном web/), спецификации и код остаются. Запуск: make test-snapshot (или напрямую из корня docs).
|
|
set -euo pipefail
|
|
|
|
SCRIPT="$(cd "$(dirname "$0")" && pwd)/prepare-contour-snapshot.sh"
|
|
WORK=$(mktemp -d)
|
|
trap 'rm -rf "$WORK"' EXIT
|
|
|
|
git init -q --bare "$WORK/origin.git"
|
|
git clone -q "$WORK/origin.git" "$WORK/src/arm-core" 2>/dev/null
|
|
R="$WORK/src/arm-core"
|
|
|
|
put() { mkdir -p "$(dirname "$R/$1")"; printf '%s\n' "${2:-x}" > "$R/$1"; }
|
|
|
|
# платформенные файлы, без которых проверка снимка падает
|
|
printf 'venv:\n\tuv venv api/.venv\n' > "$R/Makefile"
|
|
for p in raisa_config.yml setup/setup.sh setup/pip.conf api/run_server.py api/requirements.txt api/.env.test \
|
|
api/contracts/schema.json; do put "$p"; done
|
|
# корень: артефакты агента и локальная сборка
|
|
for p in .claude/skills/a/SKILL.md CLAUDE.md openspec/config.yaml docs/superpowers/plans/p.md Dockerfile .dockerignore; do
|
|
put "$p" "/Users/someone/projects"
|
|
done
|
|
put openspec/specs/osv/spec.md
|
|
# вложенный фронт (как web/ из arm-web): те же артефакты на второй глубине
|
|
for p in web/.claude/commands/opsx/apply.md web/.codegraph/.gitignore web/CLAUDE.md web/openspec/config.yaml \
|
|
web/docs/superpowers/plans/2026-10-08-demo.md; do
|
|
put "$p" "/Users/someone/projects"
|
|
done
|
|
put web/openspec/specs/osv-ui/spec.md
|
|
put web/openspec/changes/archive/2026-10-08-demo/design.md
|
|
put web/src/App.tsx
|
|
put web/docs/notes.md # прочее содержимое вложенного docs/ остаётся
|
|
|
|
git -C "$R" add -A
|
|
git -C "$R" -c user.name=t -c user.email=t@t commit -qm init
|
|
git -C "$R" push -q origin HEAD:main 2>/dev/null
|
|
git -C "$R" fetch -q origin
|
|
|
|
"$SCRIPT" "$R" "$WORK/out" origin/main >/dev/null
|
|
D="$WORK/out/arm-core"
|
|
|
|
fail=0
|
|
for p in .claude CLAUDE.md openspec/config.yaml docs Dockerfile .dockerignore \
|
|
web/.claude web/.codegraph web/CLAUDE.md web/openspec/config.yaml web/docs/superpowers; do
|
|
if [ -e "$D/$p" ]; then echo "FAIL: в снимке остался $p" >&2; fail=1; fi
|
|
done
|
|
for p in openspec/specs/osv/spec.md web/openspec/specs/osv-ui/spec.md web/openspec/changes/archive/2026-10-08-demo/design.md \
|
|
web/src/App.tsx web/docs/notes.md SNAPSHOT.md; do
|
|
if [ ! -e "$D/$p" ]; then echo "FAIL: из снимка пропал $p" >&2; fail=1; fi
|
|
done
|
|
[ "$fail" = 0 ] || exit 1
|
|
echo "ok: prepare-contour-snapshot.sh вырезает артефакты агента на любой глубине"
|