feat: Die geschätzte Größe bepreist den Rest — Erledigtes fällt aus der Schätzung (D70)

Die D66-Schätzung war status-blind: Ein größenloses Paket mit [x] (L) und
[ ] (S) wurde als L geschätzt, obwohl nur S offen ist. Erledigte Kinder
fallen jetzt heraus, eine erledigte realisierte Alternative stellt ihre
Gruppe fertig, und sind alle benannten Kinder erledigt, gilt XS (der eigene
Rest — M-Rückfall erhöhte den Preis beim Fertigwerden). Angegebene Größen
bleiben unangetastet (D69).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-25 11:04:26 +02:00
co-authored by Claude Fable 5
parent 4d80feb4e8
commit 0de7f5f24e
6 changed files with 140 additions and 3 deletions
+1
View File
@@ -19,6 +19,7 @@ reverse.
## 2026-08-25
- The estimated size of an unsized node now prices the remaining work — done sub-packages drop out, and a subtree with everything named done counts as XS
- The fold chip is solid white with an ink glyph now — the translucent box vanished on the pastel node colours
- A size prices its whole subtree on the cheapest path — sub-packages no longer add on top, so a carefully decomposed `(S)` beats a coarse `(L)`
- The size is now the last free-standing `(L)`-style token of the line — earlier ones stay in the title, and `"(L)"` or `((L))` mention a size literally
+49
View File
@@ -5170,3 +5170,52 @@ fallen; Vereinigungs-Maß auf schlichte Summe zurück → genau der eine
Marginal-Test (dessen erste Fassung nicht unterschied, weil Wurzeln immer
nötig sind — der Testbaum musste die Ziele unter einen unangetasteten
`+`-Zweig legen).
## D70 — Die geschätzte Größe bepreist den Rest: Erledigtes fällt aus der Schätzung
Nachgefragt vom Nutzer zum benannten D69-Verlust (erledigte Teilpakete
senken den Preis eines offenen Knotens nicht mehr): „Wenn der Überknoten
keine explizite, sondern nur eine implizit berechnete Größe hat, dann ist
das doch kein Problem?" Die Prüfung ergab: **Es war eines** — die
D66-Schätzung war status-blind. Ein größenloses Paket mit `[x] (L)` und
`[ ] (S)` wurde als L geschätzt (Preis 4), obwohl nur noch S offen ist.
**Die Unterscheidung des Nutzers ist genau die tragfähige Linie:** Eine
**angegebene** Größe ist die Aussage des Autors — D69 erklärt sie für
maßgeblich, dort bleibt der Verlust bewusst bestehen (anteilige Restkosten
hat D46 verworfen). Die **geschätzte** Größe ist dagegen eine Kostenannahme
des Werkzeugs, und der Pfad fragt seit D46 „was ist noch offen?" — eine
Annahme, die Erledigtes einpreist, beantwortet die falsche Frage.
Die Regeln:
- **Erledigte Kinder (`[x]`/`[^]`, intrinsisch) fallen aus der Schätzung**
wie verworfene — geschätzt wird die noch offene Arbeit, auch für die
Stufe-ab-drei-Regel zählen nur die offenen.
- **Disjunktiv stellt eine erledigte realisierte Alternative die Gruppe
fertig.** Kein eigener Sonderfall, sondern die Wahl des Pfads
nachvollzogen: Unter mehreren realisierten entscheidet die Kostenregel
(D61), und die erledigte kostet 0 — sie würde gewählt, die Gruppe trägt
nichts mehr bei. Das gilt auch neben einer angefangenen zweiten
Alternative.
- **Alles Benannte erledigt, der Knoten selbst offen → `XS`**, nicht der
M-Rückfall. Die Restarbeit ist dann seine eigene Abschlussarbeit (er ist
die Station, D46) — und der M-Rückfall erzeugte eine Absurdität: Das
Fertigstellen des letzten S-Kindes *erhöbe* den Preis von S auf M. Die
Schätzung muss beim Fertigwerden monoton sinken; XS ist der Boden der
Skala. Nur der echte Blattknoten ohne Kinder bleibt beim M-Rückfall —
dort gibt es keine Information.
**Sichtbare Nebenwirkung, gewollt:** Das invertierte Größen-Badge zeigt an
solchen Knoten die **Rest**-Schätzung. Der Tooltip sagt ohnehin „für die
Kostenschätzung mindestens {size} angenommen" — die Aussage bleibt wahr.
Größen-Konflikt (D62) und Falt-Voreinstellung (D44) arbeiten nur mit
angegebenen Größen und bleiben unberührt.
**Nachgemessen:** 457 Tests, davon 7 neue in `tests/assumed.test.js`
(darunter die Monotonie und die Zusicherung, dass eine ANGEGEBENE Größe
trotz erledigter Kinder stehen bleibt). Gegenproben per Mutation:
Done-Filter entfernt → genau die drei danach benannten Zusicherungen
fallen; XS-Boden auf M zurück → genau die drei XS-Tests; „Gruppe fertig"
entfernt → genau die zwei disjunktiven. Der mitgelieferte Plan ist
unberührt (sein einziger größenloser Knoten ist ein Blatt): weiterhin
0 Warnungen, 137 Pfadknoten, 57 Stationen, exakt gerechnet.
+10
View File
@@ -648,6 +648,16 @@ werden die für die günstigste Realisierung **nötigen** Knoten:
Größe zählen hier mit, ihre Größe wird nach derselben Regel **rekursiv**
mitgeschätzt — geschätzt wird ohnehin. Ein Knoten ohne Größe und ohne
zählende Kinder wird weiterhin als `M` gewertet.
**Erledigte Kinder zählen nicht mit** (D70): Die Schätzung ist eine
Kostenannahme des Werkzeugs, keine Autoren-Aussage — anders als eine
angegebene Größe (die bleibt, wie sie geschrieben ist) schätzt sie die
noch **offene** Arbeit. Kinder mit `[x]`/`[^]` (intrinsisch) fallen
heraus wie verworfene; in einer disjunktiven Gruppe stellt eine
**erledigte** realisierte Alternative die Gruppe fertig — sie trägt
nichts mehr bei. Gibt es zählende Kinder, sind aber **alle** erledigt,
wird **`XS`** angenommen: Die Restarbeit ist dann die eigene des
Elternknotens (er ist die Station, oben) — ein `M`-Rückfall hieße, dass
das Fertigstellen des letzten Kindes den Preis *erhöht*.
**Mit Abhängigkeiten (§1) zählt die Dependency Closure.** Jeder nötige Knoten
zieht seine `:#…`-Ziele samt deren Realisierung in die nötige Menge; gemeinsam