44 lines
1.6 KiB
Bash
44 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# Policy regression: a shared/API/dependency change must never take the Web shortcut.
|
|
set -Eeuo pipefail
|
|
SCRIPT=$(cd "$(dirname "$0")/.." && pwd)/scripts/release-mode.sh
|
|
FIXTURE=$(mktemp -d)
|
|
trap 'rm -rf "$FIXTURE"' EXIT
|
|
cd "$FIXTURE"
|
|
git init -q
|
|
git config user.name 'Codex Bot'
|
|
git config user.email 'codex-bot@gitea.entroia.local'
|
|
mkdir -p src/pages/api src/components src/lib public
|
|
for file in src/pages/index.tsx src/pages/api/feed.ts src/components/Feed.tsx src/lib/model.ts package-lock.json public/llms.txt; do echo initial > "$file"; done
|
|
git add .
|
|
git commit -qm baseline
|
|
BASE=$(git rev-parse HEAD)
|
|
check(){ local expected="$1" actual; actual=$(bash "$SCRIPT" "$BASE"); test "$actual" = "$expected" || { echo "Expected $expected, received $actual"; exit 1; }; }
|
|
echo page >> src/pages/index.tsx
|
|
git commit -qam page
|
|
check web
|
|
# The comparison must include ALL changes since the deployed release, not just HEAD^.
|
|
echo shared >> src/lib/model.ts
|
|
git commit -qam shared
|
|
echo component >> src/components/Feed.tsx
|
|
git commit -qam component
|
|
check full
|
|
git reset -q --hard "$BASE"
|
|
echo api >> src/pages/api/feed.ts
|
|
git commit -qam api
|
|
check full
|
|
git reset -q --hard "$BASE"
|
|
git mv src/lib/model.ts public/model.ts
|
|
git commit -qm rename
|
|
check full
|
|
git reset -q --hard "$BASE"
|
|
echo lock >> package-lock.json
|
|
git commit -qam dependencies
|
|
check full
|
|
git reset -q --hard "$BASE"
|
|
echo markdown >> public/llms.txt
|
|
git commit -qam public-content
|
|
check web
|
|
test "$(bash "$SCRIPT" 0000000000000000000000000000000000000000)" = full
|
|
echo 'Release policy: page/public shortcut, shared/API/dependencies/rename/missing baseline fallback passed'
|