solcom / docs / plans / 2026-05-11-001

Karpathy-Wiki-Audit & docs/-Pflicht via Pre-Commit-Hook

Treue-Audit gegen Karpathys LLM-Wiki-Gist: welche Karpathy-Mechaniken sind in docs/ implementiert, welche fehlen, welche werden nicht durchgesetzt. Plus: Mechanik, mit der die identifizierten Lücken nicht nur dokumentiert, sondern per Git-Pre-Commit-Hook erzwungen werden.

Stand: 2026-05-11  ·  Status: proposed  ·  Related ADRs: 0006, 0015, 0022

1. Ausgangslage: Karpathy vs. solcom

Karpathy beschreibt ein dreischichtiges Wissens-System (Raw / Wiki / Schema) mit drei Operationen (Ingest / Query / Lint) plus zwei Spezialfiles (index.md, log.md). Im solcom-Repo ist die Grundstruktur bereits da — siehe CLAUDE.md → Karpathy-Wiki-Adaption.

Karpathy-Schicht solcom-Realität Status
Raw sourcesdocs/context/ + docs/design/implementiert
Schema / ConventionsCLAUDE.md + .claude/skills/implementiert
Ingest-OperationAgent solcom-docs-ingestionpartiell
Query-OperationAgent solcom-docs-explorerpartiell
Lint-OperationSkill solcom-docs-lint (6 deterministische Regeln)partiell
index.mddocs/index.htmlimplementiert
log.mddocs/LOG.htmlimplementiert
Wiki-Layerdocs/wiki/ (3 Entities)dünn

Drei Karpathy-Mechaniken sind nicht (oder nur teilweise) abgebildet: Multi-Page-Updates beim Ingest, Refile von Query-Antworten als Wiki-Pages, und der Suggestion-Style-Anteil des Lints (Karpathy-Regeln 1, 4, 5, 6). Zusätzlich: keinerlei Pflicht-Durchsetzung — alles ist opt-in pro Skill-Goodwill.

2. Lücken-Befunde (Grilling 2026-05-11)

# Karpathy-Lücke Heutiges Verhalten Konsequenz
L1Ingest "touches 10–15 wiki pages"Ingest schreibt nur Snapshot + context/INVENTORY + LOG-ZeileWiki-Entities veralten, related-context-Meta-Tags driften
L2Query-Antworten "filed back into the wiki"Explorer ist read-only, Reports verschwinden in Chat-HistorySynthese kompoundiert nicht — Karpathys Kern-Promise verloren
L3Lint: missing-entitiesfehltWiki-Wachstum wird nicht aktiv getriggert
L4Lint: missing-cross-refsfehltWiki-related-adrs-Meta vs. Body-Mentions driftet unentdeckt
L5Lint: contradictionsfehltADRs widersprechen sich, niemand bemerkt es
L6Lint: data-gapsfehltWiki-Gaps wachsen schweigend
L7LOG-Parseability (grep "^## [")HTML-Tabelle, anderes grep-Patternkosmetisch — Funktionalität existiert
L8Pflicht-DurchsetzungSkills sind goodwill-basiert, kein Hook prüftDrift sammelt sich zwischen manuellen solcom-docs-lint-Läufen

3. Entscheidungen aus dem Grilling

# Frage Entscheidung
E1Ingest-Multi-Pass-MechanikIngest sucht passende Wiki-Entities, schlägt Updates pro Entity vor — User confirmt pro Vorschlag, nichts wird ohne OK geschrieben. Conservative.
E2Query-Refile-MechanikBeide: Explorer schlägt am Report-Ende eine Wiki-Promotion vor (Erkennen). html-doc-authoring bekommt einen Wiki-Promote-Sub-Workflow (Schreiben). Trennt Discovery von Authoring sauber.
E3Lint-Erweiterung deterministischZwei neue Regeln in solcom-docs-lint: missing-entities + missing-cross-refs.
E4Lint-Erweiterung LLM-pflichtSeparater Skill solcom-docs-curator für contradictions + data-gaps. Andere Modalität, andere Kosten — eigener Trigger.
E5LOG-ParseabilityStatus quo + Bash-Snippets im LOG-Header dokumentieren (z. B. grep '<td class="date">' docs/LOG.html | head -5). Kein JSON-Mirror.
E6qmd / SearchWarten. Bei ≈64 docs/-Files reicht docs/index.html + grep. qmd ist cross-platform via npm/bun lauffähig, aber Node-Toolchain ist im Repo bislang nicht etabliert — ROI-Mismatch.
E7Wiki-AusbauKandidaten-Liste in diesem Plan-Doc (Sektion 6).
E8Pflicht-DurchsetzungGit-Pre-Commit-Hook (kein Claude PostToolUse). Bestehender .hooks/pre-commit (Bash, core.hooksPath=.hooks) wird um STAGED_DOCS-Block erweitert. Blockend für Strukturpflicht (orphan, log-gap, last-synced-Drift, status-drift). Warnen für Synthese-Hinweise (missing-cross-refs, wiki-drift).

4. Phasen-Plan

Fünf Phasen, eine PR pro Phase. Reihenfolge so, dass jede Phase ihre Vorgänger nutzt — der Hook (P2) braucht das CLI-Script aus P1, der Curator-Skill (P5) baut auf die Wiki-Stitch-Mechanik aus P3.

Phase 1 — .hooks/docs-lint.sh (Lint-CLI)

Fokussiertes Bash-Script, das staged docs/-Files gegen vier deterministische Regeln prüft. Kein voller CLI-Port von solcom-docs-lint — nur die Regeln, die Pre-Commit-relevant sind.

Script läuft auf bestehenden 64 docs/-Files, false-positive-Rate < 10% pro Klasse.

Phase 2 — .hooks/pre-commit erweitern

Bestehender Hook bekommt einen STAGED_DOCS-Block — analog zu STAGED_PHP, STAGED_TWIG, STAGED_COMPOSER. Keine neue Toolchain, kein Husky.

Test-Commit mit absichtlich kaputtem Snapshot wird geblockt. Test-Commit mit konformem Snapshot geht durch.

Phase 3 — solcom-docs-ingestion: Wiki-Stitch-Schritt

Agent-Workflow um Schritt 7.5 erweitern: nach Snapshot-Draft passende Wiki-Entities matchen, pro Entity einen Edit-Vorschlag zeigen, User-Confirm pro Vorschlag.

Ein neuer Test-Snapshot mit Tag „mittwald" wird vom Ingest-Agent als Update-Kandidat für wiki/mittwald-stack.html erkannt und vorgeschlagen.

Phase 4 — Query-Refile (Explorer + Authoring)

Ein Explorer-Lauf mit ≥3 Strang-Verweisen produziert einen konkreten Wiki-Promote-Vorschlag mit Slug-Kandidat.

Phase 5 — solcom-docs-curator Skill + Wiki-Kandidaten

Curator-Lauf produziert ≥1 brauchbaren Hinweis (manuell verifiziert).

5. Spec-Schärfungen für die neuen Lint-Regeln

Regel missing-entities (deterministisch)

Threshold N=3 kongruent zu wiki/INVENTORY.html-Boundary („drei oder mehr Strang-Verweise rechtfertigen eine Wiki-Page").

Regel missing-cross-refs (deterministisch)

6. Wiki-Entity-Kandidaten

Aktuell: 3 Entities (mittwald-stack, card-family, canvas-integration). Karpathys impliziter Ziel-Range: 10–20+ bei vergleichbarer Source-Anzahl. Erste Kandidaten — pro Kandidat: aggregierte Refs + 1-Satz-Begründung. Reihenfolge ist Vorschlag, nicht Pflicht.

Slug-Kandidat Tags Aggregierte Refs Begründung
freelancer-feeds integration, feed, projektpartnerportal stories/F-280, F-340, F-360 Drei externe Plattformen mit ähnlicher Mechanik (XML-Feed-Push/Pull) — Cross-Strand-Lookup wiederkehrend.
salesforce-bullhorn-integration integration, crm, ats stories/F-290 + (vermutlich) context/tbd Eigener Integrations-Strang mit REST-Pull, separater Auth/Mapping-Logik — verdient eigene Synthese.
analytics-stack analytics, tracking, gtm stories/F-200, F-310, F-320 GTM + Matelso + Analytics-Konfig hängen funktional zusammen; Devs werden wiederholt fragen, wo was lebt.
cookie-consent-privacy privacy, consent, dsgvo stories/F-210, F-220 (a11y) Compliance-relevant, häufig in Code/PRDs referenziert.
solcom-content-types content-type, cms stories/F-140, F-150, F-170, F-240 Blog, Personen/Team, Publishing-Workflow, Meta-Tags — ein Content-Type-Querschnitt.
Hinweis: Diese Liste ist absichtlich nicht-erschöpfend. Sobald die Lint-Regel missing-entities aktiv ist (Phase 1), wird sie automatisch weitere Kandidaten vorschlagen. Karpathy: „the wiki keeps getting richer with every source you add."

7. Out-of-Scope

8. Offene Fragen