Zum Inhalt

Bekannte Probleme

Übersicht aller bekannten Issues im CC-Sprint System.

Kritische Probleme

ID Problem Schweregrad Status Beschrieben in
P-001 Edit-Tool scheitert bei Backlog.md 🔴 Kritisch Workaround vorhanden edit-tool-failure.md
P-002 rebuild_database löscht Daten ohne Rollback 🔴 Kritisch Offen data-loss-risks.md
P-003 Hash wird nach Write gespeichert 🟠 Hoch Offen data-loss-risks.md
P-004 Kein Rollback bei Parse-Fehler 🟠 Hoch Offen data-loss-risks.md
P-005 Race Condition: FileWatcher vs AutoSave 🟡 Mittel Selten race-conditions.md

P-001: Edit-Tool scheitert bei Backlog.md

Symptom: Claude Code's Edit tool meldet "String to replace not found"

Ursachen: 1. Timestamp in Header ändert sich zwischen Read und Edit 2. Unicode-Encoding (ä,ö,ü,ß) Mismatches 3. Line-Ending Unterschiede (CRLF vs LF) 4. File zu groß für Context-Fenster (85+ Items = 3900+ Zeilen)

Impact: - Claude Code kann Backlog.md nicht direkt editieren - Workaround nötig: safe_backlog_edit.py (Full-File-Rewrite) - Ineffizient und riskant bei großen Files

Workaround:

# Statt Edit-Tool:
python scripts/safe_backlog_edit.py --write "$(cat <<'EOF'
[kompletter neuer Inhalt]
EOF
)"

Siehe: Detaillierte Analyse

P-002: rebuild_database löscht Daten ohne Rollback

Symptom: Bei External-Change wird DB komplett gelöscht, dann re-importiert

Problem: DELETE vor INSERT → Bei Fehler: Leere DB

Code (src-tauri/src/commands/project.rs:459-462):

conn.execute("DELETE FROM backlog_items WHERE project_id = ?", params![project_id])?;
conn.execute("DELETE FROM dependencies WHERE project_id = ?", params![project_id])?;
conn.execute("DELETE FROM acceptance_criteria WHERE project_id = ?", params![project_id])?;
// Wenn jetzt Fehler → Alle Daten weg!

for item in items {
    items_repo::insert(&mut conn, &project_id, &item)?;
}

Impact: - Datenverlust-Risiko bei Parse-Fehler - Keine Möglichkeit zum Rollback

Lösung (Konzept):

BEGIN TRANSACTION;
CREATE TEMP TABLE backup AS SELECT * FROM backlog_items;
DELETE FROM backlog_items;
INSERT INTO backlog_items ...;
IF error THEN ROLLBACK; ELSE COMMIT;

Siehe: Detaillierte Analyse

P-003: Hash wird nach Write gespeichert

Symptom: Window zwischen File-Write und Hash-Speicherung

Problem (src-tauri/src/commands/items.rs:395-400):

// 1. Schreibe File
std::fs::write(&backlog_path, &content)?;

// 2. Berechne Hash
let hash = calculate_hash(&content);

// 3. Speichere Hash
store_hash(&mut conn, &project_id, &hash)?;

// Wenn zwischen 1 und 3 ein Crash → Hash falsch

Impact: - Bei Crash: Hash stimmt nicht mit File-Inhalt überein - Permanenter Konflikt-Zustand - FileWatcher denkt immer "External Change"

Lösung (Konzept):

// 1. Berechne Hash VORHER
let hash = calculate_hash(&content);

// 2. Schreibe File
std::fs::write(&backlog_path, &content)?;

// 3. Speichere Hash (bereits berechnet)
store_hash(&mut conn, &project_id, &hash)?;

Siehe: Detaillierte Analyse

P-004: Kein Rollback bei Parse-Fehler

Symptom: Bei Parse-Fehler nach DELETE → Leere DB

Problem: rebuild_database löscht Items, dann parsen. Wenn Parser fehlschlägt:

1. DELETE FROM backlog_items  ✓ (alles weg)
2. Parse Backlog.md           ✗ (Fehler!)
3. INSERT INTO ...            (wird nie ausgeführt)
→ Ergebnis: Leere DB

Impact: - Schwerwiegender Datenverlust - User hat ungespeicherte App-Änderungen verloren - Nur Backup kann helfen

Lösung (Konzept):

// 1. Parse ZUERST (vor DELETE)
let items = parser::parse_backlog(&content)?;

// 2. Validiere
validator::validate(&items)?;

// 3. Erst DANN löschen + einfügen (in Transaction)
BEGIN TRANSACTION;
DELETE FROM backlog_items;
INSERT INTO backlog_items ...;
COMMIT;

Siehe: Detaillierte Analyse

P-005: Race Condition: FileWatcher vs AutoSave

Symptom: Seltener Konflikt, wenn externe Änderung während AutoSave-Debounce

Szenario:

t=0ms:    User ändert Item in App
t=10ms:   AutoSave Timer startet (2s)
t=500ms:  Claude Code schreibt Backlog.md
t=1000ms: FileWatcher erkennt Änderung (nach 500ms debounce)
t=1001ms: App lädt externe Version (User-Änderung noch nicht gespeichert)
t=2010ms: AutoSave triggert (überschreibt externe Version!)

Impact: - Externe Änderungen gehen verloren - Selten (Timing-abhängig) - User merkt es möglicherweise nicht

Workaround: Modified_in_app Flag prüfen vor Reload

Lösung (Konzept): AutoSave canceln bei External Change Detection

Siehe: Detaillierte Analyse

Mittlere Probleme

ID Problem Schweregrad Status
P-006 Context-Overflow bei großen Backlog.md 🟡 Mittel Workaround
P-007 Kein Incremental Parsing 🟡 Mittel Enhancement
P-008 Full-File-Rewrite ineffizient 🟡 Mittel Enhancement

P-006: Context-Overflow bei großen Backlog.md

Symptom: Claude Code verlangsamt sich, Edit-Tool scheitert

Ursache: Backlog.md mit 85+ Items = 3900+ Zeilen = Context voll

Impact: - Edit-Tool nicht verwendbar - Langsame Responses - Wiederholungen

Workaround: - Nur relevante Items mit Script lesen - Context regelmäßig clearen (/clear) - Neue Session für große Tasks

Siehe: Prozesse: Context-Management

P-007: Kein Incremental Parsing

Problem: Bei External-Change wird immer komplettes File geparst

Impact: - Ineffizient bei Änderung eines einzigen Items - ~100ms für 1000 Items (auch wenn nur 1 geändert)

Enhancement: Streaming Parser mit Line-Range Tracking

Siehe: Lösungskonzepte: Scripts Design

P-008: Full-File-Rewrite ineffizient

Problem: safe_backlog_edit.py schreibt komplettes File

Impact: - Git-Diffs zeigen komplettes File als geändert - Merge-Konflikte wahrscheinlicher - Ineffizient bei kleinen Änderungen

Enhancement: Surgical Editing (nur betroffene Zeilen)

Siehe: Lösungskonzepte: Scripts Design

Niedrige Probleme

ID Problem Schweregrad Status
P-009 Keine Progress-Bar bei großen Imports 🟢 Niedrig Enhancement
P-010 Konflikt-Banner verschwindet zu schnell 🟢 Niedrig UX
P-011 Keine Backup-Größen-Anzeige 🟢 Niedrig Enhancement

Status-Legende

  • Offen: Problem identifiziert, keine Lösung implementiert
  • Workaround vorhanden: Temporäre Lösung existiert
  • In Arbeit: Fix wird entwickelt
  • Selten: Tritt nur unter spezifischen Bedingungen auf
  • Enhancement: Verbesserungswunsch, kein kritischer Bug

Priorisierung

Kurzfristig (Kritisch)

  1. P-002: Transaktionales rebuild_database
  2. P-003: Hash-Timing Fix
  3. P-001: Granulare Item-Operationen (backlog_item.py)

Mittelfristig (Wichtig)

  1. P-004: Parse-vor-Delete
  2. P-005: AutoSave Race Condition Fix
  3. P-007: Incremental Parsing

Langfristig (Nice-to-Have)

  1. P-006: Context-Management Tools
  2. P-008: Surgical Editing
  3. P-009-P-011: UX Improvements

Nächste Schritte

Detaillierte Analysen: - Edit-Tool Fehler - Race Conditions - Datenverlust-Risiken

Lösungskonzepte: - Scripts Design - App-Fixes Design - Workflow Design