feat: Link-Taxonomie u5 - Restkanten gelabelt, migrate done 4.0.0, Workshop geschlossen
CI / verify (push) Successful in 51s
CI / verify (push) Successful in 51s
Files changed: - .wikitool-kb.json - kb/entities/technologies/Arch Linux.md - kb/entities/technologies/Disk Encryption.md - kb/entities/technologies/Wine-Staging.md - kb/entities/tools/AUR.md - kb/entities/tools/GPG.md - kb/entities/tools/Lutris.md - kb/entities/tools/NotebookLM.md - kb/entities/tools/Obsidian.md - kb/entities/tools/OpenAI Codex.md - kb/entities/tools/OpenCode.md - kb/entities/tools/Pi.md - kb/entities/tools/Proton.md - kb/entities/tools/Steam.md - kb/entities/tools/Wine.md - kb/entities/tools/gdeploy.md - kb/entities/tools/makepkg.md - kb/entities/tools/pascalandy schema.md - kb/log.md - work/link-taxonomy-migration/README.md - work/link-taxonomy-migration/glossary.md - work/link-taxonomy-migration/plan.md
This commit is contained in:
+6
-1
@@ -1,11 +1,16 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"kb_version": "3.0.0",
|
||||
"kb_version": "4.0.0",
|
||||
"applied": [
|
||||
{
|
||||
"migration": "3.0.0-authoring-conventions",
|
||||
"at": "2026-09-02",
|
||||
"pages": 0
|
||||
},
|
||||
{
|
||||
"migration": "4.0.0-link-taxonomy",
|
||||
"at": "2026-09-02",
|
||||
"pages": 153
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ modified: 2026-08-29
|
||||
related:
|
||||
- runs-on: Docker
|
||||
- part-of: Gitea Actions
|
||||
- AUR
|
||||
- see-also: AUR
|
||||
- uses: makepkg
|
||||
- GPG
|
||||
- LVM
|
||||
- uses: GPG
|
||||
- see-also: LVM
|
||||
sources: [Source - Arch Linux Cheat Sheet]
|
||||
confidence: 0.90
|
||||
confidence_base: 0.90
|
||||
@@ -143,8 +143,8 @@ Konzept
|
||||
|
||||
- **runs-on:** [[Docker]]
|
||||
- **part-of:** [[Gitea Actions]]
|
||||
- [[AUR]]
|
||||
- **see-also:** [[AUR]]
|
||||
- **uses:** [[makepkg]]
|
||||
- [[GPG]]
|
||||
- [[LVM]]
|
||||
- **uses:** [[GPG]]
|
||||
- **see-also:** [[LVM]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [encryption, storage, security, dm-crypt, luke, linux]
|
||||
created: 2026-07-31
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- LVM
|
||||
- see-also: LVM
|
||||
- see-also: Arch Linux
|
||||
sources: [Source - Arch Linux Cheat Sheet]
|
||||
confidence: 0.90
|
||||
@@ -161,6 +161,6 @@ Ansatz
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[LVM]]
|
||||
- **see-also:** [[LVM]]
|
||||
- **see-also:** [[Arch Linux]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -7,7 +7,7 @@ modified: 2026-08-29
|
||||
related:
|
||||
- depends-on: Wine
|
||||
- see-also: Proton
|
||||
- Wine GE
|
||||
- see-also: Wine GE
|
||||
- see-also: Arch Linux
|
||||
sources: [Source - Wine]
|
||||
confidence: 0.85
|
||||
@@ -68,6 +68,6 @@ Wine-Staging-Patches enthalten typischerweise:
|
||||
|
||||
- **depends-on:** [[Wine]]
|
||||
- **see-also:** [[Proton]]
|
||||
- [[Wine GE]]
|
||||
- **see-also:** [[Wine GE]]
|
||||
- **see-also:** [[Arch Linux]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,8 +5,8 @@ tags: [arch-linux, packaging, repository]
|
||||
created: 2026-07-31
|
||||
modified: 2026-09-01
|
||||
related:
|
||||
- Arch Linux
|
||||
- Aura
|
||||
- part-of: Arch Linux
|
||||
- see-also: Aura
|
||||
- depends-on: makepkg
|
||||
- uses: GPG
|
||||
sources: [Source - Arch Linux Cheat Sheet]
|
||||
@@ -99,8 +99,8 @@ aura -A $(pacman -Qqm | xargs -I {} pacman -Ql {} | grep "/usr/lib/python3.12/si
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Arch Linux]]
|
||||
- [[Aura]]
|
||||
- **part-of:** [[Arch Linux]]
|
||||
- **see-also:** [[Aura]]
|
||||
- **depends-on:** [[makepkg]]
|
||||
- **uses:** [[GPG]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,9 +5,9 @@ tags: [encryption, security, signing, verification]
|
||||
created: 2026-07-31
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- AUR
|
||||
- Aura
|
||||
- makepkg
|
||||
- see-also: AUR
|
||||
- see-also: Aura
|
||||
- see-also: makepkg
|
||||
- runs-on: Arch Linux
|
||||
sources: [Source - Arch Linux Cheat Sheet]
|
||||
confidence: 0.85
|
||||
@@ -131,8 +131,8 @@ gpg --keyserver hkps://keys.openpgp.org --send-keys KEY_ID
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[AUR]]
|
||||
- [[Aura]]
|
||||
- [[makepkg]]
|
||||
- **see-also:** [[AUR]]
|
||||
- **see-also:** [[Aura]]
|
||||
- **see-also:** [[makepkg]]
|
||||
- **runs-on:** [[Arch Linux]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -6,7 +6,7 @@ created: 2026-08-01
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- uses: Wine
|
||||
- Bottles
|
||||
- see-also: Bottles
|
||||
- uses: Proton
|
||||
- uses: Wine-Staging
|
||||
- see-also: Wine GE
|
||||
@@ -79,7 +79,7 @@ Lutris-Wine-Builds sind als Runtimes in [[Bottles]] verfügbar:
|
||||
## Beziehungen
|
||||
|
||||
- **uses:** [[Wine]]
|
||||
- [[Bottles]]
|
||||
- **see-also:** [[Bottles]]
|
||||
- **uses:** [[Proton]]
|
||||
- **uses:** [[Wine-Staging]]
|
||||
- **see-also:** [[Wine GE]]
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [google, ai, rag, knowledge-management]
|
||||
created: 2026-07-26
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- ChatGPT
|
||||
- see-also: ChatGPT
|
||||
- implements: RAG
|
||||
- exemplifies: LLM Wiki Pattern
|
||||
sources: [Source - LLM Wiki Pattern]
|
||||
@@ -76,7 +76,7 @@ NotebookLM ist Googles KI-gesteutertes Wissensmanagementsystem, das Retrieval Au
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[ChatGPT]]
|
||||
- **see-also:** [[ChatGPT]]
|
||||
- **implements:** [[RAG]]
|
||||
- **exemplifies:** [[LLM Wiki Pattern]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,10 +5,10 @@ tags: [note-taking, knowledge-management, markdown, visualization, export]
|
||||
created: 2026-07-26
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- Obsidian Web Clipper
|
||||
- Dataview
|
||||
- Marp
|
||||
- qmd
|
||||
- required-by: Obsidian Web Clipper
|
||||
- hosts: Dataview
|
||||
- hosts: Marp
|
||||
- see-also: qmd
|
||||
- exemplifies: LLM Wiki Pattern
|
||||
sources: [Source - LLM Wiki Pattern]
|
||||
confidence: 0.95
|
||||
@@ -93,9 +93,9 @@ Dieser Workflow ist besonders nützlich für:
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Obsidian Web Clipper]]
|
||||
- [[Dataview]]
|
||||
- [[Marp]]
|
||||
- [[qmd]]
|
||||
- **required-by:** [[Obsidian Web Clipper]]
|
||||
- **hosts:** [[Dataview]]
|
||||
- **hosts:** [[Marp]]
|
||||
- **see-also:** [[qmd]]
|
||||
- **exemplifies:** [[LLM Wiki Pattern]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [openai, ai, coding, agent]
|
||||
created: 2026-07-26
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- Claude Code
|
||||
- see-also: Claude Code
|
||||
- see-also: OpenCode
|
||||
- see-also: Pi
|
||||
- exemplifies: LLM Wiki Pattern
|
||||
@@ -66,7 +66,7 @@ OpenAI Codex wird als einer der LLM-Agenten erwähnt, der das LLM-Wiki-Pattern i
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Claude Code]]
|
||||
- **see-also:** [[Claude Code]]
|
||||
- **see-also:** [[OpenCode]]
|
||||
- **see-also:** [[Pi]]
|
||||
- **exemplifies:** [[LLM Wiki Pattern]]
|
||||
|
||||
@@ -5,8 +5,8 @@ tags: [ai, coding, agent, open-source]
|
||||
created: 2026-07-26
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- Claude Code
|
||||
- OpenAI Codex
|
||||
- see-also: Claude Code
|
||||
- see-also: OpenAI Codex
|
||||
- see-also: Pi
|
||||
- exemplifies: LLM Wiki Pattern
|
||||
sources: [Source - LLM Wiki Pattern]
|
||||
@@ -63,8 +63,8 @@ OpenCode wird als einer der LLM-Agenten erwähnt, die folgende Aufgaben ausführ
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Claude Code]]
|
||||
- [[OpenAI Codex]]
|
||||
- **see-also:** [[Claude Code]]
|
||||
- **see-also:** [[OpenAI Codex]]
|
||||
- **see-also:** [[Pi]]
|
||||
- **exemplifies:** [[LLM Wiki Pattern]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,9 +5,9 @@ tags: [ai, coding, agent]
|
||||
created: 2026-07-26
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- Claude Code
|
||||
- OpenAI Codex
|
||||
- OpenCode
|
||||
- see-also: Claude Code
|
||||
- see-also: OpenAI Codex
|
||||
- see-also: OpenCode
|
||||
- exemplifies: LLM Wiki Pattern
|
||||
sources: [Source - LLM Wiki Pattern]
|
||||
confidence: 0.80
|
||||
@@ -65,8 +65,8 @@ Pi wird als einer der LLM-Agenten erwähnt, die folgende Aufgaben ausführen kö
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Claude Code]]
|
||||
- [[OpenAI Codex]]
|
||||
- [[OpenCode]]
|
||||
- **see-also:** [[Claude Code]]
|
||||
- **see-also:** [[OpenAI Codex]]
|
||||
- **see-also:** [[OpenCode]]
|
||||
- **exemplifies:** [[LLM Wiki Pattern]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -6,10 +6,10 @@ created: 2026-08-01
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- depends-on: Wine
|
||||
- Bottles
|
||||
- Wine-Staging
|
||||
- Wine GE
|
||||
- Lutris
|
||||
- see-also: Bottles
|
||||
- see-also: Wine-Staging
|
||||
- see-also: Wine GE
|
||||
- see-also: Lutris
|
||||
- part-of: Steam
|
||||
sources: [Source - Wine]
|
||||
confidence: 0.85
|
||||
@@ -79,9 +79,9 @@ Diese Runtimes ermöglichen die Verwendung von Proton-Gaming-Optimierungen auße
|
||||
## Beziehungen
|
||||
|
||||
- **depends-on:** [[Wine]]
|
||||
- [[Bottles]]
|
||||
- [[Wine-Staging]]
|
||||
- [[Wine GE]]
|
||||
- [[Lutris]]
|
||||
- **see-also:** [[Bottles]]
|
||||
- **see-also:** [[Wine-Staging]]
|
||||
- **see-also:** [[Wine GE]]
|
||||
- **see-also:** [[Lutris]]
|
||||
- **part-of:** [[Steam]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -4,7 +4,9 @@ entity_type: tool
|
||||
tags: []
|
||||
created: 2026-08-02
|
||||
modified: 2026-08-29
|
||||
related: [Lutris, Proton]
|
||||
related:
|
||||
- see-also: Lutris
|
||||
- see-also: Proton
|
||||
sources: []
|
||||
confidence: 0.50
|
||||
confidence_base: 0.50
|
||||
@@ -43,3 +45,10 @@ TODO
|
||||
## Siehe auch
|
||||
|
||||
- TODO
|
||||
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- **see-also:** [[Lutris]]
|
||||
- **see-also:** [[Proton]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
+10
-10
@@ -5,11 +5,11 @@ tags: [compatibility, windows, linux, gaming]
|
||||
created: 2026-08-01
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- Bottles
|
||||
- Proton
|
||||
- Wine-Staging
|
||||
- Wine GE
|
||||
- Lutris
|
||||
- see-also: Bottles
|
||||
- required-by: Proton
|
||||
- see-also: Wine-Staging
|
||||
- see-also: Wine GE
|
||||
- see-also: Lutris
|
||||
- runs-on: Arch Linux
|
||||
sources: [Source - Wine, Source - Arch Linux Cheat Sheet]
|
||||
confidence: 0.95
|
||||
@@ -80,10 +80,10 @@ Wine dient als Grundlage für mehrere [[Bottles]]-Runtimes, einschließlich:
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Bottles]]
|
||||
- [[Proton]]
|
||||
- [[Wine-Staging]]
|
||||
- [[Wine GE]]
|
||||
- [[Lutris]]
|
||||
- **see-also:** [[Bottles]]
|
||||
- **required-by:** [[Proton]]
|
||||
- **see-also:** [[Wine-Staging]]
|
||||
- **see-also:** [[Wine GE]]
|
||||
- **see-also:** [[Lutris]]
|
||||
- **runs-on:** [[Arch Linux]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [deployment, cli, go, automation]
|
||||
created: 2026-07-25
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- Go
|
||||
- uses: Go
|
||||
- see-also: plugnburn-edl
|
||||
sources: []
|
||||
confidence: 0.75
|
||||
@@ -103,6 +103,6 @@ Falls es den typischen Go CLI-Mustern folgt:
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[Go]]
|
||||
- **uses:** [[Go]]
|
||||
- **see-also:** [[plugnburn-edl]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -6,8 +6,8 @@ created: 2026-07-31
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- part-of: Arch Linux
|
||||
- AUR
|
||||
- Aura
|
||||
- see-also: AUR
|
||||
- see-also: Aura
|
||||
- uses: GPG
|
||||
sources: [Source - Arch Linux Cheat Sheet]
|
||||
confidence: 0.95
|
||||
@@ -136,7 +136,7 @@ CI/CD-Infrastruktur
|
||||
## Beziehungen
|
||||
|
||||
- **part-of:** [[Arch Linux]]
|
||||
- [[AUR]]
|
||||
- [[Aura]]
|
||||
- **see-also:** [[AUR]]
|
||||
- **see-also:** [[Aura]]
|
||||
- **uses:** [[GPG]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [schema, taxonomy, external, farzaa-gist]
|
||||
created: 2026-08-03
|
||||
modified: 2026-08-29
|
||||
related:
|
||||
- farzaa gist
|
||||
- see-also: farzaa gist
|
||||
- see-also: AGENTS.md
|
||||
- evidenced-by: Source - LLM Improvements Sonnet Analysis
|
||||
sources: [Source - LLM Improvements Sonnet Analysis]
|
||||
@@ -79,7 +79,7 @@ Dies sind handlungsfähige Empfehlungen, die in der Sonnet-Analyse als wertvoll
|
||||
<!-- wikitool:links -->
|
||||
## Beziehungen
|
||||
|
||||
- [[farzaa gist]]
|
||||
- **see-also:** [[farzaa gist]]
|
||||
- **see-also:** [[AGENTS.md]]
|
||||
- **evidenced-by:** [[Source - LLM Improvements Sonnet Analysis]]
|
||||
<!-- /wikitool:links -->
|
||||
|
||||
@@ -115,3 +115,9 @@ Einheit u2 der Link-Taxonomie-Migration: 16 Seiten (people 4, projects 12 inkl.
|
||||
Einheit u3 der Link-Taxonomie-Migration: alle 80 Seiten unter kb/concepts/ von Prosa-Beziehungen auf gelabelte related:-Kanten umgestellt, ca. 250 Kanten. Wegen Groesse (246 unlabelled edges gemessen) als sieben Sub-Sessions gefahren (u3, u3-b2..u3-b7, Abschluss u3-close), inklusive einer vom Iteration Budget Gate erzwungenen Pause nach 61 Aufrufen in Batch 2 - mit Nutzerfreigabe in u3-b2 fortgesetzt. Eigenfehler entdeckt und behoben: 14 Seiten, bei denen eine Kante fälschlich als 'schon von der Gegenseite abgedeckt' übersprungen wurde, blieben unlabelled statt see-also zu bekommen - durch lint --full nach dem ersten Durchlauf aufgefallen und nachgetragen. 11 TODO-Stub-Seiten hatten 'Source - LLM Wiki v2' unlabelled in related: statt sources: - mit evidenced-by aufgelöst. Ein echter Content-Verlust bei der Prosa-Bereinigung: Personalization Plane.md verlor eine zitierte, inhaltlich eigenständige Verwandte-Concepts-Zeile samt Fussnotenmarker beim Entfernen eines vermeintlich bloßen Wikilink-Bullets - von migrate verify (cite-refs 2->1) gefangen und wiederhergestellt. Bestätigter Mechanismus (siehe glossary.md): xref add ist immer sicher (nur A betroffen, upsert), xref remove ist die einzige riskante, bidirektionale Operation - deshalb in u3 fast nie verwendet; ein Ziel, das nicht die woertlichste Bedeutung seines Labels verdient, wird stattdessen mit dem naechstbesten Label (oft see-also) neu belegt statt entfernt. migrate verify --from 177c7e9 --path kb/concepts zeigt 218 Befunde (exit 1 unter --fail-on-error), nach Korrektur ausschliesslich wikilinks/markers/frontmatter-Diffs aus der Migration - keine H1-, Zitat- oder Strukturbefunde mehr. lint --full zeigt 0 broken_links/malformed_edges/unbalanced_markers/citation_drift/schema_validation_errors; alle verbleibenden unlabelled edges liegen in kb/entities/ (technologies/tools), vorbestehend aus u1 und außerhalb dieser Einheit.
|
||||
|
||||
---
|
||||
|
||||
## [2026-09-02] update | link-taxonomy-migration u5: Abschluss, migrate done 4.0.0, Workshop geschlossen
|
||||
|
||||
Abschluss der Korpus-Migration auf die Link-Taxonomie (Gitea #40, Abschnitte 2 und 3). Zuvor uebersehene Restmenge nachgeholt: 37 unlabelled edges in kb/entities/technologies und kb/entities/tools, die u1 nach dem damaligen 'protect, don't remove'-Muster bewusst unbelegt gelassen hatte - mit der u3-Erkenntnis, dass xref add nur die Quellseite anfasst, waren sie gefahrlos nachlabelbar (Wine-/Arch-/Agent-CLI-Cliquen ueberwiegend see-also, dazu echte Kanten: AUR part-of Arch Linux, Arch Linux uses GPG, Obsidian hosts Dataview/Marp, Obsidian required-by Obsidian Web Clipper, Wine required-by Proton, gdeploy uses Go). Erst damit erfuellt der Korpus das Abschlusskriterium des Migrationsdokuments (Schritt 6: unlabelled_edges und unauthorised_labels muessen 0 sein) - vorher waere migrate done eine unbelegte Behauptung gewesen. Endstand: lint meldet 0 unlabelled_edges, 0 unauthorised_labels, 0 malformed_edges, 0 unbalanced_markers, 0 broken_links, 0 dangling_frontmatter_refs, 0 schema_validation_errors; lint --fail-on-error und docs verify beide exit 0. migrate done 4.0.0 --pages 153 gesetzt, kb_version steht auf 4.0.0. VERSION stand bereits auf 4.0.0 (Bump erfolgte mit dem Mechanismus in u0, Commit 177c7e9), ein zweiter Bump entfaellt daher, und CHANGES.md dokumentiert 4.0.0 bereits vollstaendig. Workshop work/link-taxonomy-migration/ nach work/CONTRACT.md geschlossen und geloescht; die dauerhafte Ausgabe ist der gelabelte Korpus selbst. Eine Notiz aus glossary.md hat sich beim Abschluss als Rueckschritt erwiesen: die dort als Erkenntnis notierte Asymmetrie zwischen xref add (einseitig) und xref remove (bidirektional) steht seit jeher woertlich in tools/CONTRACT.md Zeilen 43-44 - sie war nachzulesen, nicht zu entdecken. Offen und an #40 gemeldet: im Katalog fehlt ein Label fuer Urheberschaft (Person erstellt Entity oder Concept); alle solchen Kanten stehen jetzt auf see-also.
|
||||
|
||||
---
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
# Workshop: link-taxonomy-migration
|
||||
|
||||
- **Run key:** `link-taxonomy-migration` (this directory's name - there is no other identifier)
|
||||
- **Input:** none - this run is not an ingest
|
||||
- **Started:** 2026-09-02
|
||||
- **Session id form:** `WIKITOOL_SESSION_ID="link-taxonomy-migration/u<N>"`, one per unit
|
||||
- **Issue:** Gitea #40, sections *Label werden Enum* and *Toolgeführte Blöcke*
|
||||
|
||||
## Goal
|
||||
|
||||
Move every relationship in `kb/` from free-text German prose in a body bullet to a machine
|
||||
value in `related:`, and every tool-owned body region from heading-matching to a marker pair.
|
||||
Afterwards the compiler contains no heading text and no relationship label, and `lint` can
|
||||
enforce the vocabulary because there is one.
|
||||
|
||||
## Why this is `assisted` and not `mechanical`
|
||||
|
||||
Measured on 2026-09-02, against the corpus rather than against the documentation:
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| Pages | 180 |
|
||||
| Distinct relationship labels in body bullets | **152** |
|
||||
| Labelled bullets | 337 |
|
||||
| Labels occurring exactly once | 102 |
|
||||
| Top 20 labels cover | 167 of 337 |
|
||||
| Bare `- [[X]]` bullets under `## Siehe auch` | 555 |
|
||||
| ...of those, provably redundant (a labelled edge already exists) | 353 |
|
||||
| ...of those, the only connection between the two pages | **202**, across 63 target pages |
|
||||
|
||||
`kb/CONVENTIONS.md` documents thirteen labels. Nothing ever checked that, and the corpus does
|
||||
not follow it - so there is no mapping table to apply, and roughly 539 edges need a judgment
|
||||
call each. A large minority are reverse directions (`Verwendet von` 20x, `implementiert durch`,
|
||||
`Ersetzt durch`), which under authored directional edges are exactly the edges that stop being
|
||||
stored and start being rendered.
|
||||
|
||||
Rejected alternative, recorded so it is not re-proposed: map the top 20 mechanically and set
|
||||
everything else to `see-also`. That would start the new taxonomy with ~370 of ~539 edges on its
|
||||
weakest label - the `verwandt mit` sediment this whole change exists to end, re-created as the
|
||||
documented initial state.
|
||||
|
||||
## Closes when
|
||||
|
||||
Every unit in `plan.md` is published, and:
|
||||
|
||||
- `wikitool lint` reports zero unlabelled edges and zero labels outside the authorising
|
||||
collection's `outbound:` block
|
||||
- `wikitool migrate verify --from <pre-migration rev>` reports no wikilink or citation count
|
||||
change, and no unbalanced marker
|
||||
- `wikitool migrate done 4.0.0 --pages <N>` has run
|
||||
|
||||
## Checklist
|
||||
|
||||
- [x] u0 mechanism - taxonomy, `links.py`, `blocks.py`, `xref` rewrite, lint checks,
|
||||
`links show` for the inbound view, deletion of the matching layer. No page touched.
|
||||
- [x] u1 `kb/entities/` (systems, tools, technologies) - 57 pages, 199 edges, run as five
|
||||
sub-sessions (`u1`, `u1-technologies`, `u1-technologies-2`, `u1-tools-1`, `u1-tools-2`,
|
||||
`u1-close`) against one 60-call-per-session ceiling; published together as commit
|
||||
`b137359`. Deferred cross-collection edges recorded in `glossary.md` for u2/u3.
|
||||
- [x] u2 `kb/entities/` (projects, people) + `kb/comparisons/` - 16 pages, ~45 edges, single
|
||||
session (`link-taxonomy-migration/u2`, closed as `u2-close`). Discovered comparisons pages
|
||||
carry no `related:` field at all (only `entities:`, unlabelled by the type spec); labelled
|
||||
the prose by hand instead. Confirmed taxonomy gap for person-authored/extended
|
||||
relationships, resolved as `see-also` throughout - see `glossary.md`.
|
||||
- [x] u3 `kb/concepts/` - 80 pages, ~250 edges, run as seven sub-sessions (`u3`, `u3-b2`..`u3-b7`,
|
||||
close `u3-close`) against the 60-call ceiling, including one gate-forced pause mid-batch
|
||||
resumed with explicit user approval. Two self-caught defects: 14 pages left unlabelled
|
||||
after a wrong "already covered elsewhere" call (fixed via `lint --full`'s unlabelled-edges
|
||||
report), and one real content loss - a cited, substantive `Verwandte Concepts` line deleted
|
||||
alongside a bare wikilink during prose cleanup, caught by `migrate verify`'s `cite-refs`
|
||||
diff and restored. Published as commit `a35c94e`. See `glossary.md` for the
|
||||
add-is-safe/remove-is-risky mechanism note this unit established.
|
||||
- [x] u4 `kb/sources/` - zero page edits needed. `types/source.md` declares no `related:` field
|
||||
(only `entities:`/`concepts:`, same structural gap as comparisons), and all 27 source pages
|
||||
already had those fields correctly populated via `xref link-source` at ingest time - there
|
||||
was never an unlabelled edge here to fix. `migrate verify --from 177c7e9 --path kb/sources`:
|
||||
0 findings. No commit, no session id spent beyond the check itself. See `glossary.md`.
|
||||
- [ ] u5 close-out - `migrate done`, version bump, `CHANGES.md`, workshop close
|
||||
|
||||
## Measured after u0
|
||||
|
||||
`lint` against the corpus, with the machinery in place and no page touched:
|
||||
|
||||
| Finding | Count |
|
||||
|---|---|
|
||||
| `unlabelled_edges` | **480** - every `related:` entry, since none carries a label yet |
|
||||
| `unauthorised_labels` | 0 - nothing declares a label at all, so nothing can be unauthorised |
|
||||
| `malformed_edges` | 0 |
|
||||
| `unbalanced_markers` | 0 |
|
||||
| `orphan_pages` | 1 (`GRUB`, pre-existing) |
|
||||
| `broken_links`, `dangling_frontmatter_refs`, `schema_validation_errors` | 0 |
|
||||
|
||||
480 is the number u1-u4 have to bring to zero. It is larger than the 337 labelled body bullets
|
||||
because `related:` also holds entries whose bullet was lost or never written - which is itself a
|
||||
finding: the frontmatter and the body had already drifted apart under the old model, and nothing
|
||||
could see it while the label lived only in the prose.
|
||||
|
||||
## Open decisions
|
||||
|
||||
- **Settled 2026-09-02:** edges are directional; the reverse edge is authored only when it is a
|
||||
primary statement on its own page. The inbound view is rendered, not stored.
|
||||
- **Settled 2026-09-02:** the 353 provably-redundant `## Siehe auch` edges are dropped
|
||||
mechanically. The 202 that are the only connection get a real label each, or are dropped with
|
||||
a reason - never converted to `see-also` in bulk.
|
||||
- **Settled 2026-09-02:** labels are not localized. `- **depends-on:** [[Hermes]]` is what a
|
||||
German page carries.
|
||||
@@ -1,114 +0,0 @@
|
||||
# Glossary: link-taxonomy-migration
|
||||
|
||||
Vocabulary decided while processing one page, carried forward so u3 (concepts) and u2
|
||||
(projects/people/comparisons) do not re-decide it. Add to this file before dispatching the next
|
||||
unit or sub-session.
|
||||
|
||||
## Mechanism correction, discovered in u3 (concepts): `xref add` is always safe
|
||||
|
||||
`xref add --a A --b B --rel X` **only ever touches page A** - it upserts (idempotent by target),
|
||||
so calling it on a pair that already has an unlabelled or even a differently-labelled entry just
|
||||
relabels it in place. `xref remove` is the only bidirectional, destructive call (strips the pair
|
||||
from **both** pages' `related:` and matching body lines). u1 already learned to sequence removes
|
||||
before adds per pair; u3 goes further and mostly **stops calling `xref remove` at all** for
|
||||
drift-only entries. Standing policy for the rest of this migration: when a frontmatter `related:`
|
||||
entry does not deserve its most literal label, relabel it with the best authorised fit - `see-also`
|
||||
if truly nothing fits - via `xref add`, rather than removing it. Only remove when the entry is a
|
||||
misplaced mention with nothing worth keeping on either side, and only after confirming (grep) that
|
||||
the target page carries no reciprocal reference that a bidirectional strip would destroy. This
|
||||
avoided several near-misses in u3 (`CPPC`/`amd-pstate` already carried `amd-pstate implements
|
||||
CPPC` from u1 - removing would have destroyed it; relabelled as `CPPC mechanism amd-pstate`
|
||||
instead).
|
||||
|
||||
## Unit sizing correction (2026-09-02)
|
||||
|
||||
u1 as written in `plan.md` (`kb/entities/systems, tools, technologies`, estimated ~45 pages) is
|
||||
actually **57 pages carrying 199 `related:` entries** (systems 6/19, technologies 20/69,
|
||||
tools 31/111). At one `wikitool` call per edge (no bulk mode exists for `xref add`/`xref
|
||||
remove`), that is far past the 60-call session ceiling. Decided with the user: run u1 as planned
|
||||
in scope (all three areas, one eventual publish), but as **per-area sub-sessions**, each under
|
||||
its own `WIKITOOL_SESSION_ID`, holding `index rebuild`/`lint`/`log append`/`publish` until every
|
||||
area is done:
|
||||
|
||||
- `link-taxonomy-migration/u1` - systems (done, see below)
|
||||
- `link-taxonomy-migration/u1-technologies` - technologies
|
||||
- `link-taxonomy-migration/u1-tools` - tools
|
||||
|
||||
## Recurring pattern: reverse-reading edge, correct statement already elsewhere
|
||||
|
||||
Several old bullets read true only backwards, and the *correct* forward statement already exists
|
||||
(as still-unmigrated prose) on the other page - sometimes in a collection this unit does not
|
||||
touch. Rule applied: drop the backward one from the current page's `related:` (via `xref
|
||||
remove`, so it stops showing as an unlabelled edge) and note the correct edge here for whichever
|
||||
unit owns the other page. Never invert the label to fake the direction.
|
||||
|
||||
Deferred edges for later units, discovered while processing systems:
|
||||
|
||||
- **u3 (concepts):** `Denylist over Allowlist` invokes-or-operates-on `AGENTS.md` (its own body
|
||||
already says "beruft sich auf: AGENTS.md" - pick the label when concepts' outbound set is in
|
||||
front of you).
|
||||
- **u3 (concepts):** `LLM Wiki Pattern` derived-from-or-abstracted-from `Memex` (Memex's old
|
||||
"Geistiger Vorgänger von" bullet reads backwards from Memex's side).
|
||||
- **u2 (people):** `Vannevar Bush` owns `Memex` (Memex's "Erfunden von" bullet is `owns`'s
|
||||
unlabelled inverse; `owns` has no catalogue inverse, so it must be authored from Bush's page).
|
||||
- **u2 (people):** `E3DC GmbH` owns `E3DC` (same reasoning: `owns` has no inverse to assert from
|
||||
the owned entity's side).
|
||||
- **u2 (projects):** no action needed on `ha-core`/`hacs-e3dc` - E3DC's page independently
|
||||
asserts `required-by` (a real pair with a genuine inverse), which already covers the
|
||||
relationship without needing anything written on the project pages.
|
||||
|
||||
## Label choices worth reusing
|
||||
|
||||
- A file that is normative *because* a tool enforces it (`AGENTS.md` vs. `wikitool`) is
|
||||
`depends-on`, not `implements`/`mechanism` - those realization labels are entities-to-concepts
|
||||
only, and these pages are both entities.
|
||||
- An optional dependency that the source tolerates the absence of (`CLAUDE.md`'s `@ENVIRONMENT.md`
|
||||
import) is `uses`, not `depends-on` - the catalogue's own test ("does removing the target break
|
||||
this thing?") answers no.
|
||||
- A root file that another root file's own prose defines the rules for (`AGENTS.md` defines what
|
||||
`ENVIRONMENT.md` is and is allowed to contain) is `owns` from the defining page, not asserted
|
||||
back from the defined one (no inverse exists).
|
||||
- A hardware/software pairing where the dependent side is a specific integration package, not the
|
||||
general platform (E3DC vs. `ha-core`/`hacs-e3dc` vs. Home Assistant broadly): assert
|
||||
`required-by` from the depended-upon entity's page, and do not manufacture an edge to the broad
|
||||
platform if no specific claim holds there.
|
||||
- A device supporting a communication standard: `implements` reads fine even outside pure
|
||||
software (E3DC implements Modbus).
|
||||
- Two entities in the same wiki cited as parallel real-world examples of the same concept, with
|
||||
no sharper label fitting: `see-also` is correct and not a cop-out (Memex/Tolkien Gateway).
|
||||
- **Taxonomy gap, confirmed while processing u2 (people):** there is no "created by" / "authored"
|
||||
/ "extends the work of" label for a person-entity pointing at another entity or at a concept.
|
||||
`owns` covers a person being *accountable for* an entity going forward (used for `Vannevar
|
||||
Bush owns Memex`, `Rohit Gupta owns Agent Memory`, `E3DC GmbH owns E3DC`), but a one-time
|
||||
historical act of creating/originating a *concept* (Karpathy authoring the LLM Wiki Pattern,
|
||||
Bush originating Memex-the-idea) or of one person's work building on another's (Gupta extending
|
||||
Karpathy) has nothing in Realization or Lineage that is authorised for a person: those
|
||||
registers are concept-to-concept or concept-to-entity, never entity-to-entity or
|
||||
entity-to-concept for authorship. Resolved as `see-also` in every such case on Karpathy's,
|
||||
Gupta's and Bush's own pages, checked against every register first - not a stretch, a genuine
|
||||
gap. Worth proposing a label (`originates`/`authored-by`?) if this recurs in u3/u4.
|
||||
- **`kb/sources/` pages carry no `related:` field either, same as comparisons.**
|
||||
`types/source.md` declares only `page_ref_fields: [entities, concepts]` - `xref add` refuses
|
||||
there with the identical "type does not declare a related: field" error. Unlike comparisons,
|
||||
though, there is nothing left to migrate by hand: every one of the 27 source pages already had
|
||||
`entities:`/`concepts:` correctly populated via `xref link-source` at ingest time, and their
|
||||
prose "Verwandte Entities"/"Verwandte Concepts" sections already just mirror those fields -
|
||||
there was never a labelled-vs-unlabelled distinction to fix here. `migrate verify --from
|
||||
177c7e9 --path kb/sources` returns 0 findings against baseline. u4 closes with zero page edits.
|
||||
- **comparisons pages carry no `related:` field at all.** `types/comparison.md` declares only
|
||||
`entities` (`page_ref_fields: [entities]`) - unlabelled by the schema, like `sources:`. `xref
|
||||
add`/`xref remove` refuse on this type ("type does not declare a related: field"). The
|
||||
`compares-with` label from `kb/comparisons/COLLECTION.md`'s `outbound:` block is documentational
|
||||
only for this type: it is written into the `## Beziehungen` prose by hand (there is no marker
|
||||
region either), never into machine data. Confirmed on `amd-pstate vs acpi-cpufreq.md`.
|
||||
- A dependent-side project whose own page only names the platform vaguely ("Kernintegrationsbibliothek
|
||||
für E3DC-Systeme") while a specific downstream package (a HACS component, an automation
|
||||
blueprint) explicitly wraps it: assert `required-by` from the depended-upon project's page for
|
||||
each specific downstream package, mirroring `depends-on` asserted on each dependent's own page -
|
||||
the same genuine two-sided pair as `E3DC`/`ha-core` from u1, one level up the stack
|
||||
(`ha-core`/`hacs-e3dc`, `ha-core`/`hacs-integration-blueprint`).
|
||||
- An external, out-of-wiki reference project cited only as "look how someone else solved this" (a
|
||||
GitHub repo mentioned as a structural analogue, no functional dependency): `see-also` asserted
|
||||
from the external project's own page toward the project it inspired, not the reverse - matches
|
||||
"reads correctly from the source page" even though nothing here is a stretch, just weak by
|
||||
nature (`wiki-skills`, `wiki-skills-vanillaflava`, `llm-wiki-skills` -> `Chemenu`).
|
||||
@@ -1,48 +0,0 @@
|
||||
# Plan: link-taxonomy-migration
|
||||
|
||||
One unit is one session id and one `publish`, sized against the 60-call iteration budget.
|
||||
Per-page cost here is roughly `1 touch` + the edges on it; the corpus-wide commands
|
||||
(`index rebuild`, `sources rebuild-index`, `log append`, `publish` twice for the gate) are
|
||||
per unit, not per page. That puts the ceiling near 45 pages and the target at 40.
|
||||
|
||||
| # | Unit | Pages | Job | Done when |
|
||||
|---|------|------:|-----|-----------|
|
||||
| u0 | mechanism | 0 | Taxonomy catalogue, `links.py`, `blocks.py`, `outbound:` in every `COLLECTION.md`, `xref` rewritten to one directional edge, lint checks, `links show` for the inbound view, `migrate verify` marker invariant, deletion of `sections.py` and the matching layer | Suite green; `lint` reports the corpus's unlabelled edges as findings rather than crashing |
|
||||
| u1 | `kb/entities/systems`, `tools`, `technologies` | ~45 | Label every edge, drop redundant see-also, wrap markers | `migrate verify --path kb/entities --fail-on-error` clean |
|
||||
| u2 | `kb/entities/projects`, `people`, `kb/comparisons` | ~40 | as u1 | as u1 |
|
||||
| u3 | `kb/concepts` | ~45 | as u1 | `migrate verify --path kb/concepts --fail-on-error` clean |
|
||||
| u4 | `kb/sources` | ~50 | as u1, plus `entities:`/`concepts:` on source pages | `migrate verify --path kb/sources --fail-on-error` clean |
|
||||
| u5 | close-out | 0 | `migrate done 4.0.0`, `version bump --major`, `CHANGES.md` body, promote nothing, close workshop | `docs verify` + `lint --fail-on-error` green, workshop deleted |
|
||||
|
||||
Unit boundaries are written down here *before* the run so that publishing several units
|
||||
together stays a planned batch rather than a way around a Mass-Update Gate refusal - see
|
||||
`instructions/gates.md`.
|
||||
|
||||
## Per-page procedure
|
||||
|
||||
1. Read the page's `## Beziehungen` and `## Siehe auch` blocks.
|
||||
2. For each labelled bullet: say the sentence `[this page] <label> [target]`. Pick the catalogue
|
||||
label that makes it true. If it only reads true backwards, the edge belongs on the other
|
||||
page - move it, do not invert the label into something the catalogue does not have.
|
||||
3. For each bare `## Siehe auch` bullet: drop it if a labelled edge already connects the pair
|
||||
(the tooling lists these). Otherwise decide - a real label, or dropped with the reason
|
||||
recorded in the unit's notes.
|
||||
4. Write the edges with `xref add --rel`, never by hand.
|
||||
5. The body blocks are then *generated*: no hand-editing inside a marker pair.
|
||||
|
||||
## Vocabulary carried between units
|
||||
|
||||
`glossary.md` in this directory. A mapping decided in u1 and re-decided in u3 is the failure the
|
||||
file exists to prevent - add to it **before** dispatching the next unit.
|
||||
|
||||
## Deliberately excluded from this run
|
||||
|
||||
- **Commonplace's articulation test and the `connect` report workflow.** They change how ingest
|
||||
proposes links, not how links are stored. Separate question, separate issue.
|
||||
- **Promoting the lint checks to hard errors.** During this run an unlabelled edge is a finding,
|
||||
because that is precisely the migration window `.wikitool-kb.json` exists to represent. The
|
||||
promotion is a later version's change, once the corpus can pass it.
|
||||
- **`sources:` and `[^cite-id]`.** The provenance path is unlabelled by construction and is not
|
||||
part of the link taxonomy.
|
||||
- **Any change to page prose.** This run restates relationships in a new form; it learns
|
||||
nothing new, and a body edit outside a marker pair is out of scope.
|
||||
Reference in New Issue
Block a user