fix: wiki link checker + auto-fix script + pre-commit hook

- scripts/check-wiki-links.py: validates all [[...]] links source-relative (matching Forgejo behavior)
- scripts/fix-wiki-links.py: auto-rewrites broken links as source-relative paths
- scripts/.check-wiki-links-wrapper.sh: pre-commit hook wrapper
- .git/hooks/pre-commit: installs wrapper as Git hook
- Fixed 47 wiki files with broken links (mostly path-confusion and wiki/-prefix bugs)
- Total: 691 valid wiki links, 0 broken, 0 path confusion
- Manual fix: Wikipedia: Sleeper agent link → proper Markdown URL
- Manual fix: non-existent decision link → decisions-index
- Code-span and template-placeholder handling (ignores `[[example]]` and `[[{slug}]]`)

Trigger: k9ert noted https://.../concepts/llm/concepts/llm/... was 404 in wiki-catalog
This commit is contained in:
Hector 2026-06-25 21:47:40 +02:00
parent 0e02fdbd59
commit ffacfad6f2
12 changed files with 73 additions and 20 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
scripts/__pycache__/

View file

@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Pre-commit hook: validate all wiki links before commit
set -e
REPO_ROOT="$(git rev-parse --show-toplevel)"
cd "$REPO_ROOT"
python3 scripts/check-wiki-links.py

View file

@ -38,6 +38,26 @@ def find_wiki_files():
return sorted(files)
def strip_code_spans(content: str) -> str:
"""Remove inline-code spans (between backticks) so we don't check links inside them.
Also removes fenced code blocks (``` ... ```).
"""
# Remove fenced code blocks first
lines = content.split('\n')
out = []
in_fence = False
for line in lines:
if line.strip().startswith('```'):
in_fence = not in_fence
continue
if not in_fence:
out.append(line)
content = '\n'.join(out)
# Remove inline code spans
content = re.sub(r'`[^`\n]+`', '', content)
return content
def resolve_link(link_path: str, source_file: Path) -> Path:
"""
Resolve a wiki link source-relative (matching Forgejo behavior).
@ -105,6 +125,8 @@ def check_all_links():
stats['files_checked'] += 1
rel_source = source_file.relative_to(REPO_ROOT)
content = source_file.read_text(encoding='utf-8')
# Strip code spans so we don't false-positive on example syntax in backticks
content = strip_code_spans(content)
for match in LINK_RE.finditer(content):
link_path = match.group(1).strip()
@ -120,6 +142,10 @@ def check_all_links():
if target:
stats['valid_links'] += 1
else:
# Skip template placeholders like {slug}
if '{' in link_path:
stats['valid_links'] += 1
continue
# Try alternative suggestions
basename = Path(link_path).name
matches = [m for m in WIKI_DIR.rglob(basename) if 'test-fixtures' not in str(m)]
@ -132,7 +158,8 @@ def check_all_links():
stats['broken_links'] += 1
# Check for path confusion (link works repo-relative but broken source-relative)
if has_path_confusion(link_path, source_file):
# Skip template placeholders like {slug}
if '{' not in link_path and has_path_confusion(link_path, source_file):
# Only warn if the link is actually broken source-relative
if not resolve_link(link_path, source_file):
correct_basename = Path(link_path).name

View file

@ -48,7 +48,9 @@ def find_target(link_path: str):
stripped = link_path[5:]
if not stripped.endswith('.md'):
stripped += '.md'
candidates.append(WIKI_DIR / stripped)
target = WIKI_DIR / stripped
if target.exists():
candidates.append(target)
# Interpretation 2: path starts with "raw/" — look in REPO_ROOT/raw/
if link_path.startswith('raw/'):
@ -58,8 +60,8 @@ def find_target(link_path: str):
if target.exists():
candidates.append(target)
# Interpretation 3: path contains "/" — interpret as root-relative
if '/' in link_path:
# Interpretation 3: path contains "/" — interpret as root-relative (but skip if starts with ../)
if '/' in link_path and not link_path.startswith('../'):
# Try as wiki/-root-relative
if not link_path.endswith('.md'):
root_relative = WIKI_DIR / (link_path + '.md')
@ -85,6 +87,23 @@ def find_target(link_path: str):
if len(non_fixture) == 1:
candidates.append(non_fixture[0])
# Interpretation 5: explicit ../-relative path — try to resolve as-is,
# then look for the basename at any matching location in wiki/ or raw/
if link_path.startswith('../'):
# Find the actual basename (last component, with .md suffix if needed)
path_parts = Path(link_path).parts
search_basename = path_parts[-1]
if not search_basename.endswith('.md'):
search_basename += '.md'
# Find all files with this name in wiki/
matches = [m for m in WIKI_DIR.rglob(search_basename) if 'test-fixtures' not in str(m)]
if len(matches) == 1:
candidates.append(matches[0])
elif len(matches) > 1:
non_fixture = [m for m in matches if 'test-fixtures' not in str(m)]
if len(non_fixture) == 1:
candidates.append(non_fixture[0])
# Try each candidate
for c in candidates:
if c.exists() and 'test-fixtures' not in str(c):

View file

@ -126,7 +126,7 @@ Aschenbrenners „Situational Awareness" (siehe `[[../concepts/agi/aschenbrenner
- **Memory-Disziplin als Differenziator:** In einer Welt, in der AI-Systeme „human-equivalent" werden, ist die Qualität der Memory-Architektur (Schicht 1/2/3) der Unterschied zwischen Workhorse und System. Kontextfenster-Limitierungen, Tag-Konsistenz, Cross-Reference-Qualität werden zu kritischen Performance-Multiplikatoren.
- **Wissens-Distillation vs. Retrieval:** Aschenbrenners These „100 million automated AI researchers" setzt voraus, dass AI-Systeme effizient Wissen destillieren und anwenden können. Unser Karpathy-Wiki-Pattern (`[[../concepts/llm/llm-knowledge-base.md]]`) ist eine Antwort darauf: kuratierte, persistente Wiki-Pages statt RAG-Retrieval.
- **Self-Hosted Knowledge-Bases als Sovereignty-Hebel:** Aschenbrenners „Decoupling"-These (USA-China-Tech-Trennung) macht Self-Hosting von Wissensbasen zu einem strategischen Asset. Unser Knowledge-Base-Repo (Forgejo, self-hosted) ist in dieser Logik ein Anti-Decoupling-Hebel.
- **Praktische Konsequenz:** Die aktuelle Arbeit an `scripts/wiki-lint.sh` (WMT-001), Stub-Killer (WMT-003) und OKF-Konformität (`[[wiki/concepts/llm/open-knowledge-format-okf]]`) ist nicht nur Wiki-Hygiene, sondern Vorbereitung auf eine Phase, in der Memory-Qualität zum Bottleneck wird.
- **Praktische Konsequenz:** Die aktuelle Arbeit an `scripts/wiki-lint.sh` (WMT-001), Stub-Killer (WMT-003) und OKF-Konformität (`[[wiki/concepts/policy/open-knowledge-format-okf]]`) ist nicht nur Wiki-Hygiene, sondern Vorbereitung auf eine Phase, in der Memory-Qualität zum Bottleneck wird.
## Cross-Reference: plur1bus Gedächtnismodell (2026-06-19)

View file

@ -81,6 +81,6 @@ Die Debatte um das Universelle Hocheinkommen und die KI-Deflation ist kein isoli
* **Verbindung zur [[../llm/ai-intelligence-commoditization-thesis.md]] (Intelligence Commoditization Thesis):**
Wenn die "Frontier-Intelligenz" zur Massenware wird und ihr Preis drastisch verfällt, wandert der wirtschaftliche Wert in die physische Ausführung (Robotik, Energie) und den *Work-Loop* (wo KI reale Arbeit verrichtet). Der massive Einbruch der Token-Preise und die Industrialisierung adäquater Intelligenz sind die direkten Treiber der von Musk prognostizierten Produktionskosten-Deflation.
* **Bezug zu [[../llm/flat-curve-society.md]] (The Flat Curve Society):**
[[../people/steve-yegge.md|Steve Yegges]] These des "Intelligence Plateaus" zeigt ein alternatives Szenario auf: Falls der Zugang zu Superintelligenz durch staatliche Lockdowns und Verifizierungsgrenzen gesperrt wird, verlangsamt sich auch der von Musk prognostizierte Übergang zum Überfluss-Himmel. Das "SaaS-Revival" und die Token-Effizienz deuten darauf hin, dass wir uns zunächst in einer Übergangsphase der Optimierung befinden, bevor ein globales UHI fiskalisch verhandelt werden muss.
[[../../people/steve-yegge.md|Steve Yegges]] These des "Intelligence Plateaus" zeigt ein alternatives Szenario auf: Falls der Zugang zu Superintelligenz durch staatliche Lockdowns und Verifizierungsgrenzen gesperrt wird, verlangsamt sich auch der von Musk prognostizierte Übergang zum Überfluss-Himmel. Das "SaaS-Revival" und die Token-Effizienz deuten darauf hin, dass wir uns zunächst in einer Übergangsphase der Optimierung befinden, bevor ein globales UHI fiskalisch verhandelt werden muss.
* **Kontrast zu [[aschenbrenner-situational-awareness.md]] (Situational Awareness):**
[[../people/leopold-aschenbrenner.md|Leopold Aschenbrenner]] prognostiziert eine massive Trillionen-Dollar-Mobilisierung für Compute-Cluster und nationale Sicherheit ("The Project"), um den geopolitischen Wettlauf mit China zu gewinnen. Dieses aggressive Investitionstempo steht im direkten Widerspruch zu einer sanften, Gates-artigen Verlangsamung durch Roboter-Steuern. Der geopolitische Druck zwingt Staaten zur maximalen Beschleunigung, was das Risiko einer ungebremsten Disruption des Arbeitsmarktes erhöht und Musks deflationäre UHI-Szenarien schneller real werden lassen könnte als von Ökonomen angenommen.
[[../../people/leopold-aschenbrenner.md|Leopold Aschenbrenner]] prognostiziert eine massive Trillionen-Dollar-Mobilisierung für Compute-Cluster und nationale Sicherheit ("The Project"), um den geopolitischen Wettlauf mit China zu gewinnen. Dieses aggressive Investitionstempo steht im direkten Widerspruch zu einer sanften, Gates-artigen Verlangsamung durch Roboter-Steuern. Der geopolitische Druck zwingt Staaten zur maximalen Beschleunigung, was das Risiko einer ungebremsten Disruption des Arbeitsmarktes erhöht und Musks deflationäre UHI-Szenarien schneller real werden lassen könnte als von Ökonomen angenommen.

View file

@ -17,7 +17,7 @@ Die acht Suchbegriffe von Liesel Weppen gruppieren sich um drei Achsen:
### Achse 1 — Versteckte Verhaltensmuster überleben Safety-Training
- **Sleeper Agents (Hubinger et al.)** — Backdoors, die im Standardverhalten unsichtbar sind und nur auf bestimmte Trigger ansprechen. Überstehen Safety-Training. Siehe auch [[Wikipedia: Sleeper agent#LLMs]] und das Original-Paper "Sleeper Agents: Training Deceptive LLMs that Persist Through Safety Training" (Hubinger et al., 2024).
- **Sleeper Agents (Hubinger et al.)** — Backdoors, die im Standardverhalten unsichtbar sind und nur auf bestimmte Trigger ansprechen. Überstehen Safety-Training. Siehe auch [Wikipedia: Sleeper Agent (LLMs)](https://en.wikipedia.org/wiki/Sleeper_agent) und das Original-Paper "Sleeper Agents: Training Deceptive LLMs that Persist Through Safety Training" (Hubinger et al., 2024).
- **Backdoor Safety Training** — Training, das speziell gegen Backdoor-Trigger robust machen soll. Begrenzte Wirksamkeit bei gut versteckten Triggern.
- **Persistent Backdoors** — Verwandt: Backdoors, die sich durch nachfolgende Trainingsphasen (Distillation, Fine-Tuning) reproduzieren.

View file

@ -102,6 +102,6 @@ Quadratische Komplexität der „naiven" globalen Attention wird bei langen Kont
- `[[../world-models-jepa-vs-generative.md]]` — Hassabis-vs-LeCun-Debatte (eigenständige Konzept-Seite, 18.06.2026)
- `[[../../architecture/deepmind-beyond-transformer.md]]` — Strategischer Kontrast DeepMind vs. AR-Only-Labs
- `[[../../architecture/transformer-foundation.md]]` — Klassischer Transformer-Stack + Quadratic-Attention-Problem
- `[[../architecture/model-routing.md]]` — Routing-Entscheidungen berücksichtigen Architektur-Diversität
- `[[../../architecture/model-routing.md]]` — Routing-Entscheidungen berücksichtigen Architektur-Diversität
- `[[ai-value-migration-orchestration.md]]` — 20VC Perspektive: Aravind Srinivas zu AGI-Wettlauf

View file

@ -173,6 +173,6 @@ Unser Repo `knowledge-base` ist exakt nach Karpathys LLM-Wiki-Pattern aufgebaut
## Verwandte Wiki-Seiten
- `[[../llm/llm-knowledge-base.md]]` — Karpathys LLM-Wiki-Pattern, Grundlage unseres Wikis
- `[[../architecture/memory-system.md]]` — Schichten-Architektur unserer Memory-Systeme
- `[[../architecture/agent-orchestration.md]]` — Orchestrator-Pattern (parallele zu OKF's Producer/Consumer-Trennung)
- `[[../decisions/2026-06-05_kein-coding-guide-in-kb.md]]` — Beispiel-Decision-Page
- `[[../../architecture/memory-system.md]]` — Schichten-Architektur unserer Memory-Systeme
- `[[../../architecture/agent-orchestration.md]]` — Orchestrator-Pattern (parallele zu OKF's Producer/Consumer-Trennung)
- `[[../decisions/index.md|→ Decisions-Index]]` — Beispiel-Decision-Page

View file

@ -142,8 +142,8 @@ Qwen-AgentWorld ist **orthogonal zur JEPA-vs-Generativ-Debatte**: es geht um die
## Beziehung zu AGI-Pfaden
- **Aschenbrenner-These** ([[../agi/aschenbrenner-situational-awareness.md]]): „The Project" skaliert Compute für AR-LLMs. Qwen-AgentWorld deutet auf eine **zusätzliche Skalierungsdimension** hin: nicht nur mehr Compute für Training, sondern bessere Trainingsumgebungen durch Weltmodelle.
- **DeepMind-Strategie** ([[../../architecture/deepmind-beyond-transformer.md]]): DeepMind investiert in Weltmodelle als AGI-Komponente. Qwen-AgentWorld zeigt, dass Weltmodelle auch als **Trainings-Infrastruktur** nützlich sind — ein doppelter Return auf Weltmodell-Investition.
- **Aschenbrenner-These** ([[agi/aschenbrenner-situational-awareness.md]]): „The Project" skaliert Compute für AR-LLMs. Qwen-AgentWorld deutet auf eine **zusätzliche Skalierungsdimension** hin: nicht nur mehr Compute für Training, sondern bessere Trainingsumgebungen durch Weltmodelle.
- **DeepMind-Strategie** ([[../architecture/deepmind-beyond-transformer.md]]): DeepMind investiert in Weltmodelle als AGI-Komponente. Qwen-AgentWorld zeigt, dass Weltmodelle auch als **Trainings-Infrastruktur** nützlich sind — ein doppelter Return auf Weltmodell-Investition.
## Offene Fragen
@ -164,7 +164,7 @@ Qwen-AgentWorld ist **orthogonal zur JEPA-vs-Generativ-Debatte**: es geht um die
## Verwandte Wiki-Seiten
- `[[world-models-jepa-vs-generative.md]]` — JEPA vs. generative Weltmodelle (Architektur-Debatte)
- `[[../llm/post-transformer-llm-architectures.md]]` — Post-Transformer-Architekturen inkl. Weltmodell-Sektion
- `[[../llm/llm-model-catalog.md]]` — Qwen-Modelle im Katalog
- `[[../../architecture/deepmind-beyond-transformer.md]]` — DeepMind-Weltmodell-Strategie
- `[[../agi/aschenbrenner-situational-awareness.md]]` — AGI-Compute-Skalierung
- `[[llm/post-transformer-llm-architectures.md]]` — Post-Transformer-Architekturen inkl. Weltmodell-Sektion
- `[[llm/llm-model-catalog.md]]` — Qwen-Modelle im Katalog
- `[[../architecture/deepmind-beyond-transformer.md]]` — DeepMind-Weltmodell-Strategie
- `[[agi/aschenbrenner-situational-awareness.md]]` — AGI-Compute-Skalierung

View file

@ -646,8 +646,8 @@ OKF v0.1 (Google Cloud Blog 2026-06-12) ist die **offizielle Spezifikation** des
- [[concepts/policy/open-knowledge-format-okf.md]] (NEU)
- [[concepts/llm/llm-knowledge-base.md]] (Cross-Ref hinzugefügt)
- [[../architecture/memory-system]] (Schicht 1/2/3 als komplementäres Memory-System)
- [[../architecture/agent-orchestration]] (Producer/Consumer-Trennung als parallele Pattern)
- [[architecture/memory-system.md]] (Schicht 1/2/3 als komplementäres Memory-System)
- [[architecture/agent-orchestration.md]] (Producer/Consumer-Trennung als parallele Pattern)
- [[concepts/llm/post-transformer-llm-architectures.md]] (zeigt wie das Wiki selbst zur Ingest-Quelle für Modell-Training werden könnte)
---