feat: Zuständigen-Engpass — Warnung, wenn eine Person mehr als die Hälfte des Pfads trägt (D71)
Trägt ein @name mehr als die Hälfte der offenen Arbeit des günstigsten Pfads (Marginalkosten-Maß, D69) und tragen mindestens zwei Personen Last auf der offenen Front, meldet die zeilenlose Warnung assigneeOverload die mögliche Engstelle; die Pillen der Person wechseln an offenen Pfad-Knoten auf die Warnfarbe. Knoten ohne Tags erben für die Rechnung vom nächsten getaggten Vorfahren, mehrere Tags teilen sich den Beitrag. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
d1da6a3529
commit
35b72fc178
@@ -19,6 +19,7 @@ reverse.
|
||||
|
||||
## 2026-08-25
|
||||
|
||||
- A warning flags the bottleneck when one `@name` carries more than half of the open work on the cheapest path — their tag pills turn amber on the open nodes
|
||||
- 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)`
|
||||
|
||||
@@ -5219,3 +5219,72 @@ 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.
|
||||
|
||||
## D71 — Zuständigen-Engpass: warnen, wenn eine Person mehr als die Hälfte des Pfads trägt
|
||||
Gewünscht: „eine Warnung, wenn ein und derselbe Verantwortliche (@name) zu oft
|
||||
auf dem Lean-Path liegt — so eine Art Konflikt-Indikator." Kein neues
|
||||
Zeichen — Tags (§7) und der günstigste Pfad existieren, es fehlte der
|
||||
Konsument, der sie übereinanderlegt. Die Entscheidungen (Vorschlag bestätigt):
|
||||
|
||||
**Was der Indikator sagt:** Werkbaum ist bewusst kein Netzplan — die Warnung
|
||||
behauptet nichts über Termine, sondern: Die **nächste Ausbaustufe ist nicht
|
||||
parallelisierbar**, alles Weitere serialisiert sich durch eine Person. Genau
|
||||
die Auskunft, die man beim Lean Pathfinding braucht.
|
||||
|
||||
**Maß: Marginalkosten, Stationen nur für den Text.** Zählen und Gewichten
|
||||
standen zur Wahl; gewählt ist die Rollenteilung — Schwelle und Anteil rechnen
|
||||
**gewichtet** (5×XS sind weniger Last als 2×XL), der Meldungstext nennt
|
||||
zusätzlich die **Stationszahl**, weil Stationen sichtbare, mit dem Auge
|
||||
nachprüfbare Objekte sind (die Punkte, die der D47-Knopf abgeht). Das
|
||||
Gewichts-Maß gab es schon: die Marginalkosten des Belegungs-Vergleichs
|
||||
(D69) — jeder nötige Knoten zählt mit dem, was seine Größe über die nötigen
|
||||
Teilpakete hinaus behauptet; Erledigtes hat `ownCost` 0 und fällt von selbst
|
||||
heraus. Die Personen-Summen ergeben zusammen exakt den Pfadpreis — kein
|
||||
zweites Kostenmodell.
|
||||
|
||||
**Zuständigkeit erbt vom nächsten getaggten Vorfahren.** Die übliche
|
||||
WBS-Lesart: Wer das Paket hat, hat die Teilpakete. Ohne Vererbung zählte in
|
||||
sparsam getaggten Plänen fast nichts — im Test trüge die Person eines
|
||||
zerlegten L-Pakets nur dessen Marge (1 statt 4). Mehrere Tags einer Zeile
|
||||
**teilen** sich den Beitrag zu gleichen Teilen — voll doppelt gezählt bliese
|
||||
gemeinsame Pakete künstlich zum Engpass auf. Beiträge ohne getaggten
|
||||
Vorfahren gehen nur in die Gesamtsumme ein: Sie **verwässern** die Anteile
|
||||
(konservativ — gemeldet wird nur, was sicher ist), warnen aber nicht selbst;
|
||||
„viel ist niemandem zugewiesen" wäre eine eigene Aussage und, wenn überhaupt,
|
||||
eine eigene Meldung.
|
||||
|
||||
**Schwelle: strikt mehr als die Hälfte, und mindestens zwei Personen mit Last
|
||||
auf der offenen Front.** Der Solo-Plan ist die Falle — eine Person mit 100 %
|
||||
ist dort keine Engstelle, sondern die Realität. Gezählt werden Personen **auf
|
||||
der Front** (Last > 0), nicht im Dokument: Wer nur erledigte Knoten trägt,
|
||||
macht aus einem faktischen Solo-Rest kein Zwei-Personen-Problem. Mehr als
|
||||
eine Person über der Hälfte kann es nicht geben — die Meldung ist eindeutig.
|
||||
Die Schwelle ist gesetzt, nicht hergeleitet (wie die 32 Zeichen in D64);
|
||||
justiert wird nach Erfahrung.
|
||||
|
||||
**Anzeige: zeilenlose Warnung plus Warn-Pille.** Der Engpass hat keine
|
||||
einzelne Zeile — `assigneeOverload` ist zeilenlos wie `cheapApprox` und nennt
|
||||
Person, Anteil und Stationen. Zusätzlich wechseln die **Personen-Pillen** der
|
||||
betroffenen Person an offenen Pfad-Knoten auf `--warn` — derselbe Griff wie
|
||||
beim Größen-Konflikt-Badge (D62); der Grafikexport folgt von selbst, weil er
|
||||
die gemessenen Pillen-Farben liest (D62). Geerbte Zuständigkeit hat keine
|
||||
Pille und damit keine Färbung — benannt, kein Fehler. Kein neuer Umschalter,
|
||||
kein Panel; bei ausgeschaltetem Pfad entfällt beides (ohne Pfad keine offene
|
||||
Front).
|
||||
|
||||
**Headless nach Hausregel** (D54-Nachtrag 3): `assigneeLoads`/
|
||||
`overloadedAssignee` in model.js, der Renderer bekommt nur `overloadTag`;
|
||||
app.js verdrahtet Warnung und Option. Die mitgelieferten Dokumente bleiben
|
||||
still (der Werkbaum-Plan hat keine Knoten-Tags; im Example liegt anna bei
|
||||
3 von 13) — nachgemessen, nicht angenommen.
|
||||
|
||||
**Nachgemessen** im Browser an einem Wegwerf-Dokument: „@anna trägt 80 % der
|
||||
offenen Arbeit auf dem günstigsten Pfad (1 von 2 Stationen) — mögliche
|
||||
Engstelle.", genau eine Pille bernstein (`rgb(180,83,9)`) — am offenen
|
||||
Pfad-Knoten, nicht am erledigten und nicht bei @ben; Pfad aus ⇒ Warnung und
|
||||
Färbung weg, wieder an ⇒ beides zurück. 470 Tests, davon 13 neue in
|
||||
`tests/overload.test.js`. Gegenproben per Mutation: Solo-Wächter entfernt →
|
||||
genau der Solo-Test fällt; Schwelle aufgeweicht → genau die drei
|
||||
Schwellen-Tests; Vererbung entfernt → genau der Vererbungs-Test; Teilung
|
||||
entfernt → genau der Mehrfach-Tag-Test; Erledigt-Ausnahme der Pille
|
||||
entfernt → genau der Pillen-Test.
|
||||
|
||||
@@ -396,6 +396,9 @@ Größe als **Bereich** gelesen (Untergrenzen verdoppeln sich):
|
||||
- `@name` mit `name` aus Unicode-Buchstaben, Ziffern, `.`, `_`, `-`.
|
||||
- Mehrere Tags pro Zeile möglich, Position im Text egal.
|
||||
- Anzeige: helle Pillen unten rechts an der Knoten-Ecke.
|
||||
- Für den **Zuständigen-Engpass** (§9) erbt ein Knoten ohne Tags die Tags des
|
||||
nächsten Vorfahren mit Tags — nur für diese Rechnung; an der Anzeige der
|
||||
Pillen ändert das nichts.
|
||||
|
||||
## 8. Kommentare
|
||||
|
||||
@@ -727,6 +730,34 @@ vorn. Der Knopf ist **verborgen**, solange es keine Station gibt — bei
|
||||
ausgeschaltetem Pfad ebenso wie bei einem durchweg erledigten Plan; sein
|
||||
Tooltip nennt die Zahl der offenen Stationen. Siehe D47.
|
||||
|
||||
**Zuständigen-Engpass.** Trägt **eine** Person zu viel der offenen Arbeit des
|
||||
günstigsten Pfads, meldet eine zeilenlose Warnung `assigneeOverload` die
|
||||
mögliche Engstelle: Die nächste Ausbaustufe ist dann nicht parallelisierbar —
|
||||
alles Weitere serialisiert sich durch diese Person. Über Reihenfolge oder
|
||||
Termine sagt die Warnung nichts (das tut in dieser Notation ohnehin nichts,
|
||||
§1). Siehe D71.
|
||||
|
||||
- **Last:** Jeder nötige Knoten zählt mit dem, was seine Größe über die
|
||||
nötigen Teilpakete hinaus behauptet (dasselbe Maß wie der Belegungs-Vergleich
|
||||
der Closure-Suche, oben) — Erledigtes also mit 0. Mehrere `@name`-Tags einer
|
||||
Zeile teilen sich den Beitrag zu gleichen Teilen.
|
||||
- **Zuständig** ist, wer auf der Zeile getaggt ist (§7); ein Knoten **ohne**
|
||||
Tags erbt für diese Rechnung die Tags des nächsten Vorfahren **mit** Tags —
|
||||
die übliche WBS-Lesart: Wer das Paket hat, hat die Teilpakete. Ohne
|
||||
getaggten Vorfahren zählt der Beitrag als nicht zugewiesen — er verwässert
|
||||
die Anteile, warnt aber nicht selbst.
|
||||
- **Gemeldet** wird, wenn mindestens **zwei** Personen Last auf der offenen
|
||||
Front tragen und eine davon **mehr als die Hälfte** der gesamten offenen
|
||||
Pfad-Arbeit hält. Ein Solo-Plan warnt damit nie — eine Person, die alles
|
||||
trägt, ist dort keine Engstelle, sondern die Realität. Die Schwelle ist
|
||||
gesetzt, nicht hergeleitet (wie die ~32 Zeichen des Label-Umbruchs).
|
||||
- **Anzeige:** Die Warnung nennt Person, Anteil und Stationen („@anna trägt
|
||||
62 % der offenen Arbeit … 7 von 9 Stationen"); zusätzlich wechseln die
|
||||
Personen-Pillen (§7) der betroffenen Person an **offenen Pfad-Knoten** auf
|
||||
die Warnfarbe (`--warn`) — auch im Grafikexport. Geerbte Zuständigkeit hat
|
||||
keine Pille und damit keine Färbung. Bei ausgeschaltetem Pfad entfällt
|
||||
beides — ohne Pfad gibt es keine offene Front.
|
||||
|
||||
### Diagramm aus einer URL laden (`?sourceUrl=`)
|
||||
Der Editor kann den Notationstext aus einer externen Textdatei beziehen:
|
||||
`…?sourceUrl=https://example.org/plan.txt` (relative Angaben werden gegen die
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
- [^] #ed.path.started: Started work is on the path, extras included (S) %% see D61
|
||||
- [^] #ed.path.line: Metro-map line through the leaves (S)
|
||||
- [^] #ed.path.step: Step from station to station, one button (S) %% see D47
|
||||
- [x] #ed.path.load: Warn when one person is the bottleneck (S) %% see D71
|
||||
- [^] #ed.closure: Count the whole dependency closure (M)
|
||||
- [^] #ed.closure.once: Shared dependencies counted only once (S)
|
||||
- [^] #ed.closure.nonlocal: The cheapest alternative is no longer the local one (M) %% see D34, D42
|
||||
@@ -423,6 +424,12 @@
|
||||
next. Seeing the front was solved; walking it across a very wide tree was
|
||||
not.
|
||||
|
||||
#ed.path.load
|
||||
Warns when one @name carries more than half of the open work on the
|
||||
cheapest path while at least two people are on it: the next increment
|
||||
would serialize through that person. Untagged nodes inherit the nearest
|
||||
tagged ancestor, and the person's tag pills turn amber on open path nodes.
|
||||
|
||||
#ed.closure
|
||||
The cheapest path pulls every dependency of a needed node into the needed
|
||||
set, and shared targets count only once. That is why an alternative can win
|
||||
|
||||
Reference in New Issue
Block a user