Some checks failed
gates / quality (push) Has been cancelled
merge-base HEAD main == HEAD (Root-Commit / main an der Spitze) ergab einen leeren Branch-Diff -> STATE.md faelschlich als 'nicht aktualisiert' gewertet. Jetzt: Branch-Diff nur bei echter Divergenz, sonst letzten Commit pruefen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
42 lines
1.6 KiB
Bash
Executable File
42 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Session-Hygiene-Gate (Starter — an Repo anpassen).
|
|
set -uo pipefail
|
|
fail=0
|
|
note(){ echo " - $1"; fail=1; }
|
|
|
|
# Dormant solange das Template nicht initialisiert ist (scripts/init.sh).
|
|
if grep -q '<id / datum>' STATE.md 2>/dev/null; then
|
|
echo "[hygiene] Template noch nicht initialisiert (scripts/init.sh) — uebersprungen."
|
|
echo "GATE: PASS"; exit 0
|
|
fi
|
|
|
|
echo "[hygiene] pruefe Working Tree..."
|
|
[ -z "$(git status --porcelain)" ] || note "Working Tree nicht sauber."
|
|
|
|
echo "[hygiene] STATE.md im aktuellen Branch aktualisiert?"
|
|
base=$(git merge-base HEAD main 2>/dev/null || true)
|
|
head=$(git rev-parse HEAD 2>/dev/null || true)
|
|
if [ -n "$base" ] && [ "$base" != "$head" ]; then
|
|
# echte Divergenz (Feature-Branch): Diff gegen Abzweigpunkt
|
|
git diff --name-only "$base"...HEAD | grep -q '^STATE.md$' || \
|
|
note "STATE.md im aktuellen Branch nicht aktualisiert."
|
|
else
|
|
# auf main/Integration oder Root-Commit: letzten Commit pruefen
|
|
git log -1 --name-only --pretty= | grep -q '^STATE.md$' || \
|
|
note "STATE.md im letzten Commit nicht angefasst."
|
|
fi
|
|
|
|
echo "[hygiene] Session-Log vorhanden?"
|
|
ls sessions/[0-9]*.md >/dev/null 2>&1 || note "Kein Session-Log unter sessions/."
|
|
|
|
echo "[hygiene] Conventional Commits?"
|
|
git log -1 --pretty=%s | grep -Eq '^(feat|fix|docs|test|refactor|chore)(\(.+\))?: ' || \
|
|
note "Letzter Commit nicht conventional."
|
|
|
|
echo "[hygiene] Model-Attribution im letzten Commit?"
|
|
git log -1 --pretty=%B | grep -q 'Co-Authored-By: Claude' || \
|
|
echo " - Hinweis: letzter Commit ohne 'Co-Authored-By: Claude <Modell>' (Pflicht nur fuer Agenten-Commits)."
|
|
|
|
if [ "$fail" -ne 0 ]; then echo "GATE: FAIL"; exit 1; fi
|
|
echo "GATE: PASS"
|