#!/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 вырезает артефакты агента на любой глубине"