compactor.js · Abweichung 1 von 4
Jeder Eintrag zeigt mit ref auf den älteren Eintrag, auf den er
antwortet — neu zeigt auf alt. findClosedStrand() folgt genau
dieser Richtung: von einem Eintrag aus zu seinem ref-Ziel und von
dort weiter zurück.
Nur beantwortet das keine der Fragen, die die Regeln 2 und 3 stellen. Ob ein Strang geschlossen ist, hängt nicht davon ab, worauf ein Eintrag selbst zeigt, sondern davon, ob etwas Neueres noch auf ihn zeigt. Das ist die umgekehrte Richtung — und die prüft der Code nirgends.
ref zeigt immer von neu nach alt (dünne Pfeile unten). Links
wählst du den Strang, rechts die Prüfung: Code-Pfad spielt ab, was
findClosedStrand() tatsächlich tut — den eigenen
ref rückwärts verfolgen. Eigentliche Frage prüft
stattdessen jeden neueren Eintrag: Zeigt er hierher?
Für die letzten zwei Sitzungen sollen zusammenhängende Stränge zu einem
Block zusammengezogen werden, Zeitstempel bleiben erhalten — dafür muss
der Strang geschlossen sein: Niemand Neueres baut noch auf
ihm auf. Weil findClosedStrand() die falsche Richtung prüft,
findet die Funktion nie einen geschlossenen Strang. Die Regeln 2 und 3
feuern deshalb nie.
Offen für das Gespräch mit Richard (siehe checkliste-richard.md,
Abschnitt 2):
ref tatsächlich immer neu → alt? Dann ist es ein
Zeilen-Fix: findClosedStrand() müsste eingehende statt
ausgehende Verweise prüfen.runCompaction vorher eine
Sicherung?