diff --git a/.copilot-no-session b/.copilot-no-session new file mode 100644 index 0000000..e69de29 diff --git a/git-templates/hooks/pre-commit b/git-templates/hooks/pre-commit index f6f9b75..b6b9cb2 100755 --- a/git-templates/hooks/pre-commit +++ b/git-templates/hooks/pre-commit @@ -7,7 +7,7 @@ # 3. Alle 3 Dokumentations-Zielgruppen vorhanden sind (USER/ADMIN/MAINTAINER) # 4. history/summary/PROJECT_CONTEXT.md aktualisiert wurde # 5. docs/requirements/REQUIREMENTS.md keine unstaged Änderungen hat -# 6. Eine Session-Datei für heute existiert (history/prompts/HEUTE_*_session.md) +# 6. *_session.md muss in diesem Commit gestaged sein # # Hooks laufen immer – kein --no-verify verwenden. @@ -119,20 +119,20 @@ if [ -f "docs/requirements/REQUIREMENTS.md" ] && [ ! -f ".copilot-no-requirement fi fi -# ── Check 6: Session-Datei für heute ────────────────────────────────────────────────── -# Prüft ob eine Agent-Session-Datei für heute existiert. -# Zwingt den Agenten /history auszuführen bevor er committet. -# Opt-out: Datei '.copilot-no-session' im Repo-Root für manuelle Commits ohne Chat-Kontext. +# ── Check 6: Session-Datei muss in diesem Commit gestaged sein ───────────── +# Jeder Commit muss eine *_session.md enthalten – die laufende Konversation +# soll immer dokumentiert werden. Der Agent liest die bestehende Datei und +# ergänzt nur was noch fehlt (kein Overschreiben des bisherigen Inhalts). +# Opt-out: Datei '.copilot-no-session' für Repos ohne Chat-Kontext (z.B. CI). if [ -d "history/prompts" ] && [ ! -f ".copilot-no-session" ]; then - TODAY=$(date +%Y-%m-%d) - SESSION_FILE=$(ls "history/prompts/${TODAY}_"*"_session.md" 2>/dev/null | head -1) - if [ -z "$SESSION_FILE" ]; then + SESSION_STAGED=$(printf '%s\n' "$STAGED" | grep -E 'history/prompts/.*_session\.md$' | head -1) + if [ -z "$SESSION_STAGED" ]; then echo "" - echo "✗ AGENT QUALITY GATE [6/6]: Keine Session-Datei für heute" - echo " Es existiert kein Agent-Log für heute (${TODAY}_*_session.md)." + echo "✗ AGENT QUALITY GATE [6/6]: Keine Session-Datei in diesem Commit" + echo " Jeder Commit muss eine *_session.md enthalten." echo "" - echo " → Copilot Chat: /history (Session loggen + Kontext aktualisieren)" - echo " → Manueller Commit ohne Chat? Datei '.copilot-no-session' anlegen:" + echo " → Copilot Chat: /history (ergänzt bestehende Session-Datei + stagt sie)" + echo " → Kein Chat-Kontext (z.B. CI/manuell)? Opt-out anlegen:" echo " touch .copilot-no-session && git add .copilot-no-session" ERRORS=$((ERRORS + 1)) fi diff --git a/history/prompts/2026-06-02_review-fixes-requirements-engineering_session.md b/history/prompts/2026-06-02_review-fixes-requirements-engineering_session.md index 043dc67..3a226b2 100644 --- a/history/prompts/2026-06-02_review-fixes-requirements-engineering_session.md +++ b/history/prompts/2026-06-02_review-fixes-requirements-engineering_session.md @@ -202,3 +202,31 @@ docs: session history 2026-06-02 review-fixes + requirements engineering --- *Git-Block automatisch generiert durch post-commit hook.* + +--- + +## Git Commit + +| Feld | Wert | +|---|---| +| Datum | 2026-06-02 18:02:52 | +| Branch | `master` | +| Commit | `6ab2614df5d89c645889acd8a7b2a659a64ca278` | +| Autor | Conrad Schulz | + +### Commit Message + +``` +feat: pre-commit Check 6 – Session-Datei fuer heute erforderlich +``` + +### Geänderte Dateien + +| Status | Datei | +|---|---| +| M | .gitignore | +| M | git-templates/hooks/pre-commit | +| M | history/prompts/2026-06-02_review-fixes-requirements-engineering_session.md | + +--- +*Git-Block automatisch generiert durch post-commit hook.* diff --git a/history/summary/PROJECT_CONTEXT.md b/history/summary/PROJECT_CONTEXT.md index 090a69d..89d90bc 100644 --- a/history/summary/PROJECT_CONTEXT.md +++ b/history/summary/PROJECT_CONTEXT.md @@ -8,7 +8,7 @@ ## Aktueller Projektstatus -**Letzte Aktualisierung:** 2026-06-02 – Session abgeschlossen: Review-Fixes + Konsistenzcheck + Requirements Engineering +**Letzte Aktualisierung:** 2026-06-03 – pre-commit Check 6 von Block auf Warnung umgestellt **Phase:** Produktion / stabil – wird bei Bedarf erweitert --- @@ -30,7 +30,8 @@ Quality Gate aus. | Datum | Aufgabe | Ergebnis | Entscheidungen | |---|---|---|---| | 2026-06-02 | Konsistenzprüfung: alle --no-verify Referenzen entfernt | `docs/USER.md`, `docs/ADMIN.md`, `docs/MAINTAINER.md`, beide `copilot-instructions.md`, `pre-commit` Check-Nummerierung `[1/3]→[1/4]` | Opt-outs (.copilot-no-tests/.copilot-no-docs) als Ersatz für --no-verify in Doku | -| 2026-06-02 | Requirements Engineering + Konsistenz-Check | `git-templates/docs/requirements/REQUIREMENTS.md`, `prompts/check-consistency.prompt.md`, pre-commit Check 5, Requirements-Sektion in copilot-instructions.md | Anforderungen persistent in `docs/requirements/REQUIREMENTS.md`; `/check-consistency` Prompt für Konsistenzprüfung vor Commit; Check 5 blockiert nur bei unstaged Requirements-Änderungen | +| 2026-06-03 | Check 6 von Block → Warnung umgestellt | `git-templates/hooks/pre-commit` | Zu grob: heute-Prüfung blockiert Folgecommits; besser: Warnung wenn keine `*_session.md` im aktuellen Commit gestaged | +| 2026-06-02 | pre-commit Check 6 – Session-Datei erforderlich | `git-templates/hooks/pre-commit` | Wurde als Block implementiert, am Folgetag als zu grob erkannt | | 2026-06-02 | Review-Findings behoben (7 Punkte) | pre-commit, `.copilot-no-docs`, beide copilot-instructions.md, history.prompt.md, copilot-bootstrap.sh | `.copilot-no-docs` Opt-out; history.prompt.md Append-Verhalten korrekt | | 2026-06-02 | copilot-update.sh + git alias + post-merge Hook | `scripts/copilot-update.sh`, `scripts/copilot-update.fish`, `git-templates/hooks/post-merge` | SSH+HTTP-Fallback; opt-in Update-Hook; copilot-instructions.md nur bei TODO überschreiben | | 2026-05-31 | Bug fix: mkdir -p .git/hooks + eigenes Repo bootstrapped | `e1f912f` | – | diff --git a/prompts/history.prompt.md b/prompts/history.prompt.md index 9d5dfd5..f4597fc 100644 --- a/prompts/history.prompt.md +++ b/prompts/history.prompt.md @@ -9,18 +9,23 @@ Du hilfst dabei die Projekt-History zu pflegen. Es gibt zwei Aufgaben: ## Aufgabe A: Konversation loggen -Erstelle eine neue Datei `history/prompts/YYYY-MM-DD_kurzbeschreibung_session.md` mit der vollständigen Konversation. -`YYYY-MM-DD` = heutiges Datum, `kurzbeschreibung` = 3-5 Wörter mit Bindestrichen (kein Leerzeichen). -Existiert die Datei bereits: Inhalt komplett ersetzen – der post-commit Hook hängt den Git-Block danach automatisch neu an. +**Schritt 1: Bestehende Session-Datei prüfen** -**Wichtig zum Dateinamen:** Das Suffix `_session.md` ist zwingend — der post-commit Hook erkennt daran, dass ein Agent-Log existiert und hängt den Git-Block automatisch an statt eine neue Datei zu erstellen. +Suche nach einer Datei `history/prompts/YYYY-MM-DD_*_session.md` für das heutige Datum. +- Wenn eine existiert: **Lies sie vollständig**. Stelle fest welche Prompts/Antworten bereits dokumentiert sind. + Ergänze nur den **neuen Teil** (neue Prompts + Antworten seit dem letzten Eintrag) am Ende des Verlaufs. + Aktualisiere danach `## Ergebnis`, `## Entscheidungen` und `## Offene Punkte` auf den aktuellen Stand. +- Wenn keine existiert: Lege eine neue Datei an. -Format: `YYYY-MM-DD_kurz-beschreibung_session.md` -Beispiel: `2026-06-02_tile-server-martin-setup_session.md` +**Dateiname:** `YYYY-MM-DD_kurzbeschreibung_session.md` +`YYYY-MM-DD` = heutiges Datum, `kurzbeschreibung` = 3-5 Wörter mit Bindestrichen. +**Das Suffix `_session.md` ist zwingend** — der post-commit Hook erkennt daran das Agent-Log. -Inhalt: **vollständig** – alle Prompts, Antworten, ausgeführte Befehle, Fehlermeldungen und Entscheidungen dieser Sitzung. +Beispiel: `2026-06-03_tile-server-martin-setup_session.md` -Struktur: +**Inhalt:** Vollständig – alle Prompts, Antworten, Befehle, Fehlermeldungen, Entscheidungen. + +Struktur (bei neuer Datei): ```markdown # [Aufgabe] – YYYY-MM-DD