docs: Werkbaum-Plan nutzt die neuen Features selbst (D24: lebende Projektübersicht)
IDs (#scaffold, #docs, #resolve, #closure) und sechs echte Abhängigkeiten — alles Serverseitige zeigt auf :#scaffold und demonstriert damit die geteilte Closure; die Tracker-Wahl ist jetzt eine =-Gruppe (genau einer), 'Update by itself' und das IntelliJ-Kapitel starten per > eingeklappt, < holt die Zweiter-Parser-Warnung hervor; eine "-Kurzbeschreibung am Collaboration-Knoten und zwei Langtexte (#closure, #scaffold) hinter ---. Die in D40-D42 gebauten Knoten stehen auf [x]. Parst mit 165 Knoten ohne Warnung, Pfad exakt, keine Status-Diskrepanzen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
a918c75286
commit
d2ab30b63d
@@ -18,9 +18,9 @@
|
|||||||
- [x] Cycles are legal — they mean "finished together" (XS)
|
- [x] Cycles are legal — they mean "finished together" (XS)
|
||||||
- [x] An id with no node behind it is a warning (XS)
|
- [x] An id with no node behind it is a warning (XS)
|
||||||
- [x] XOR, = — exactly one alternative, not at least one (S)
|
- [x] XOR, = — exactly one alternative, not at least one (S)
|
||||||
- [ ] Node descriptions, shown as a tooltip or pop-up (M)
|
- [x] Node descriptions, shown as a tooltip (M)
|
||||||
- [ ] A short text right at the node (S) %% decided: a " line below the node
|
- [x] A short text right at the node (S) %% a " line below the node
|
||||||
- [ ] A long block at the end, addressed by its id (S) %% decided: behind a --- separator
|
- [x] A long block at the end, addressed by its id (S) %% behind a --- separator
|
||||||
- [-] A separate storage format for the structure (L) %% the text is the format
|
- [-] A separate storage format for the structure (L) %% the text is the format
|
||||||
- [ ] Ticket references (#123) (S)
|
- [ ] Ticket references (#123) (S)
|
||||||
- [?] Benefit per node, not only cost (M)
|
- [?] Benefit per node, not only cost (M)
|
||||||
@@ -33,19 +33,19 @@
|
|||||||
- [^] Horizontal fan (S)
|
- [^] Horizontal fan (S)
|
||||||
- [^] Vertical, transposed (S)
|
- [^] Vertical, transposed (S)
|
||||||
- [^] Compact (S)
|
- [^] Compact (S)
|
||||||
- [?] Cross links for dependencies (M)
|
- [x] Cross links for dependencies (M)
|
||||||
- [?] Visually secondary — the tree carries the message (S)
|
- [x] Visually secondary — the tree carries the message (S)
|
||||||
- [?] Highlight what a selected node needs and feeds (S)
|
- [x] Highlight what a selected node needs and feeds (S)
|
||||||
- [^] Cheapest path (M)
|
- [^] Cheapest path (M)
|
||||||
- [^] Cost model, missing size counts as M (S)
|
- [^] Cost model, missing size counts as M (S)
|
||||||
- [^] Metro-map line through the leaves (S)
|
- [^] Metro-map line through the leaves (S)
|
||||||
- [?] Count the whole dependency closure (M)
|
- [x] Count the whole dependency closure #closure (M)
|
||||||
- [?] Shared dependencies counted only once (S)
|
- [x] Shared dependencies counted only once (S)
|
||||||
- [!] The cheapest alternative is no longer the local one (M) %% see D34
|
- [x] The cheapest alternative is no longer the local one (M) %% see D34, D42
|
||||||
| [?] Search exactly, the trees are small enough (M)
|
| [x] Search exactly, the trees are small enough (M)
|
||||||
- [?] Enumerate the any-of choices (S)
|
- [x] Enumerate the coupled any-of choices (S)
|
||||||
- [?] Cost is the size of the union (S)
|
- [x] Cost is the size of the union (S)
|
||||||
| [ ] Stay greedy, but say so (XS)
|
| [x] Stay greedy, but say so (XS) %% built as the named fallback
|
||||||
- [^] Export (M)
|
- [^] Export (M)
|
||||||
- [^] SVG and PNG download (S)
|
- [^] SVG and PNG download (S)
|
||||||
- [^] PNG to the clipboard (S)
|
- [^] PNG to the clipboard (S)
|
||||||
@@ -76,18 +76,19 @@
|
|||||||
- [-] Deploy through a gh-pages branch (S) %% GitHub Actions instead
|
- [-] Deploy through a gh-pages branch (S) %% GitHub Actions instead
|
||||||
- [-] Fonts from Google (XS) %% self-hosted, no third-party request
|
- [-] Fonts from Google (XS) %% self-hosted, no third-party request
|
||||||
- [ ] Backend (XL)
|
- [ ] Backend (XL)
|
||||||
- [ ] Kotlin and Spring Boot scaffold (M)
|
- [ ] Kotlin and Spring Boot scaffold #scaffold (M)
|
||||||
- [ ] Gradle Kotlin DSL, JDK 21 (S)
|
- [ ] Gradle Kotlin DSL, JDK 21 (S)
|
||||||
- [ ] Health endpoint and CI (S)
|
- [ ] Health endpoint and CI (S)
|
||||||
- [ ] Documents on the server (L)
|
- [ ] Documents on the server #docs (L) :#scaffold
|
||||||
- [ ] Text plus metadata, no structure format (M)
|
- [ ] Text plus metadata, no structure format (M)
|
||||||
- [ ] REST endpoints (S)
|
- [ ] REST endpoints (S)
|
||||||
- [ ] Persistence (S)
|
- [ ] Persistence (S)
|
||||||
- [ ] Share by link (S)
|
- [ ] Share by link (S)
|
||||||
- [?] Accounts and permissions (L)
|
- [?] Accounts and permissions (L) :#docs
|
||||||
| [?] Single user, one token (S)
|
| [?] Single user, one token (S)
|
||||||
| [?] Log in with OIDC (L)
|
| [?] Log in with OIDC (L)
|
||||||
- [~] Collaborating on a Diagram (XL)
|
- [~] Collaborating on a Diagram (XL)
|
||||||
|
" The pad merges concurrent edits, Werkbaum renders the plan.
|
||||||
- [^] Watch a shared Etherpad — it merges, we render (S)
|
- [^] Watch a shared Etherpad — it merges, we render (S)
|
||||||
- [^] Load the pad's plain-text export (XS)
|
- [^] Load the pad's plain-text export (XS)
|
||||||
- [^] Reload on demand (XS) %% a timer only trips Etherpad's rate limit
|
- [^] Reload on demand (XS) %% a timer only trips Etherpad's rate limit
|
||||||
@@ -98,7 +99,7 @@
|
|||||||
| [?] Ask the admin for cookie.sameSite = None (XS)
|
| [?] Ask the admin for cookie.sameSite = None (XS)
|
||||||
| [ ] Live with it: edit in the pad's own tab (XS)
|
| [ ] Live with it: edit in the pad's own tab (XS)
|
||||||
- [^] A shared pointer: !!! focuses a node for everyone (XS)
|
- [^] A shared pointer: !!! focuses a node for everyone (XS)
|
||||||
- [?] Update by itself, within about 2 s (M)
|
- > [?] Update by itself, within about 2 s (M)
|
||||||
| [?] Our own Etherpad beside Werkbaum (M) %% then every setting below is ours
|
| [?] Our own Etherpad beside Werkbaum (M) %% then every setting below is ours
|
||||||
- [ ] Node and a real database in userland (S) %% the flatfile store is not for production
|
- [ ] Node and a real database in userland (S) %% the flatfile store is not for production
|
||||||
- [ ] Book the RAM quota for an own daemon (XS)
|
- [ ] Book the RAM quota for an own daemon (XS)
|
||||||
@@ -107,19 +108,19 @@
|
|||||||
- [!] Keeping a public service patched (S) %% indefinitely, that is the real cost
|
- [!] Keeping a public service patched (S) %% indefinitely, that is the real cost
|
||||||
| [?] Admin raises the export rate limit (XS) %% default is 10 per 90 s
|
| [?] Admin raises the export rate limit (XS) %% default is 10 per 90 s
|
||||||
| [?] Admin installs a plugin that pushes the text (S) %% postMessage to the page
|
| [?] Admin installs a plugin that pushes the text (S) %% postMessage to the page
|
||||||
| [?] Our own backend holds one socket and fans out (XXL)
|
| [?] Our own backend holds one socket and fans out (XXL) :#scaffold
|
||||||
| [ ] Poll inside the budget, at best every 9 s (S) %% legal, but not 2 s
|
| [ ] Poll inside the budget, at best every 9 s (S) %% legal, but not 2 s
|
||||||
| [-] Our own socket straight to the pad (L) %% measured: upgrade refused
|
| [-] Our own socket straight to the pad (L) %% measured: upgrade refused
|
||||||
| [-] Read the pad's HTML instead of the export (M) %% measured: no CORS header
|
| [-] Read the pad's HTML instead of the export (M) %% measured: no CORS header
|
||||||
- [ ] Git as the shared store (L)
|
- [ ] Git as the shared store (L)
|
||||||
| [ ] A file in a repository, changed by pull request (S) %% works today, no code
|
| [ ] A file in a repository, changed by pull request (S) %% works today, no code
|
||||||
| [?] The backend commits every change (L)
|
| [?] The backend commits every change (L) :#scaffold
|
||||||
- [?] History and restore (M)
|
- [?] History and restore (M)
|
||||||
- [?] Diff between two versions (S)
|
- [?] Diff between two versions (S)
|
||||||
- [?] Who changed this line (S)
|
- [?] Who changed this line (S)
|
||||||
- [?] A branch per scenario (S)
|
- [?] A branch per scenario (S)
|
||||||
- [?] Live editing, several people at once (XL)
|
- [?] Live editing, several people at once (XL)
|
||||||
- [ ] Transport over a websocket (S) %% the easy half
|
- [ ] Transport over a websocket (S) :#scaffold %% the easy half
|
||||||
- [!] Merging simultaneous edits (L) %% the actual work
|
- [!] Merging simultaneous edits (L) %% the actual work
|
||||||
| [?] Text CRDT — the plan is plain text, so it fits (L)
|
| [?] Text CRDT — the plan is plain text, so it fits (L)
|
||||||
| [?] Operational transformation (XL)
|
| [?] Operational transformation (XL)
|
||||||
@@ -138,7 +139,7 @@
|
|||||||
- [?] Registration with Mermaid (M)
|
- [?] Registration with Mermaid (M)
|
||||||
| [?] External diagram, self-hosted pages only (M)
|
| [?] External diagram, self-hosted pages only (M)
|
||||||
| [?] Pull request into Mermaid itself (L)
|
| [?] Pull request into Mermaid itself (L)
|
||||||
- [?] IntelliJ IDEA plugin (XL)
|
- > [?] IntelliJ IDEA plugin (XL)
|
||||||
- [?] Show the diagram in the IDE (L)
|
- [?] Show the diagram in the IDE (L)
|
||||||
| [?] Through Mermaid, once Werkbaum is part of Mermaid itself (M)
|
| [?] Through Mermaid, once Werkbaum is part of Mermaid itself (M)
|
||||||
- [?] Fenced werkbaum blocks render in Markdown (S)
|
- [?] Fenced werkbaum blocks render in Markdown (S)
|
||||||
@@ -154,15 +155,27 @@
|
|||||||
- [?] Completion for status, size and tags (S)
|
- [?] Completion for status, size and tags (S)
|
||||||
- [?] Structure view and folding (S)
|
- [?] Structure view and folding (S)
|
||||||
- [?] Kotlin with the Gradle IntelliJ plugin (S)
|
- [?] Kotlin with the Gradle IntelliJ plugin (S)
|
||||||
- [!] A second parser that must not drift from the SPEC (M) %% exactly what D14 warns about
|
- < [!] A second parser that must not drift from the SPEC (M) %% exactly what D14 warns about
|
||||||
| [?] Both parsers test against the same fixtures (S)
|
| [?] Both parsers test against the same fixtures (S)
|
||||||
| [?] Run the one JS parser inside the IDE (M)
|
| [?] Run the one JS parser inside the IDE (M)
|
||||||
- [?] Tracker integration (XL)
|
- [?] Tracker integration (XL) %% exactly one of these, hence =
|
||||||
| [?] Taiga (L) https://taiga.io
|
= [?] Taiga (L) https://taiga.io
|
||||||
- [ ] Resolve "#123" over the REST API (M)
|
- [ ] Resolve "#123" over the REST API #resolve (M)
|
||||||
- [ ] Read title, link and status (S)
|
- [ ] Read title, link and status (S)
|
||||||
- [ ] Map the workflow onto the states (S)
|
- [ ] Map the workflow onto the states (S)
|
||||||
- [?] Write the status back (M)
|
- [?] Write the status back (M) :#resolve
|
||||||
- [-] A plugin inside Taiga itself (L) %% legacy frontend, self-hosted only
|
- [-] A plugin inside Taiga itself (L) %% legacy frontend, self-hosted only
|
||||||
| [?] Tenzu, the successor (XXL) https://tenzu.net
|
= [?] Tenzu, the successor (XXL) https://tenzu.net
|
||||||
| [ ] No tracker, plain text is enough (XS)
|
= [ ] No tracker, plain text is enough (XS)
|
||||||
|
|
||||||
|
---
|
||||||
|
#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 although it looks more expensive locally: its
|
||||||
|
dependencies are already paid for elsewhere (see D34 and D42).
|
||||||
|
|
||||||
|
#scaffold
|
||||||
|
Spring Initializr project with Gradle Kotlin DSL on JDK 21.
|
||||||
|
Everything server-side hangs off this one node — that is what the
|
||||||
|
:#scaffold dependencies across the tree point at.
|
||||||
|
|||||||
Reference in New Issue
Block a user