From 4bded129cec0ff986432ef330aea644a2422ae57 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Sat, 30 May 2026 23:45:41 +0200 Subject: [PATCH] =?UTF-8?q?Docs:=20lessons.md=20=E2=80=94=20Hung-Chat=20fo?= =?UTF-8?q?rtsetzen=20via=20reflog-Recovery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- tasks/lessons.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tasks/lessons.md b/tasks/lessons.md index 0e9758b..3aeefbe 100644 --- a/tasks/lessons.md +++ b/tasks/lessons.md @@ -1,5 +1,23 @@ # Lessons +## 2026-05-30 — Abgestürzten/„aufgehängten" Chat fortsetzen: zuerst reflog lesen + +**Muster:** User bat, einen anderen, aufgehängten Chat-Strang „zu Ende zu bringen". +Der Working Tree sah harmlos aus (nur untracked), aber der eigentliche Fortschritt lag +in einem per `reset --hard HEAD~1` weggesetzten Commit, der nur noch im **reflog** +(dangling) lebte. + +**Regel:** Bei „mach weiter wo es hing": +1. `git reflog` + `git log --oneline -20` zuerst — Ground Truth, NICHT der + (evtl. stale) gitStatus-Snapshot oder Konversations-interne Annahmen. +2. Reset-weggesetzte/dangling Commits (`git fsck --lost-found`, reflog) inspizieren + (`git show `) — dort steckt oft die unfertige Arbeit. +3. **Verstehen WARUM weggesetzt**, bevor man blind cherry-picked: hier brach ein + bestehender Test (`.toBe(signal)`-Identitätscheck), den der Fix zwingend ändert. + Der Reset war die Reaktion darauf, nicht „Fix war falsch". Erst die Reset-Ursache + beheben (Test auf Verhalten umstellen), dann den Fix recovern. +4. Eigene Memory (`project_*`) lesen — sie dokumentierte Bug + intendierten Fix exakt. + ## 2026-05-30 — Release verifizieren BEVOR "fertig" gesagt wird; curl -F mit Leerzeichen im Pfad **Muster A (Edit ins Leere + trotzdem released):** Ein Edit schlug fehl ("String not