# plan.md — backfill-capture-fields Backfill von `fidelity` und `authority` (Gitea #67, Publish 2/3) über die **29** bestehenden Source-Seiten. Die Maschinerie steht seit `4.8.0-beta.8` (`f4353cc`); hier kommt nur der Bestand nach. ## Korrektur zur Zahl Der Issue-Body nannte 31 Seiten. Das war eine Fehlzählung (`find kb/sources -name '*.md'` zählt `INDEX.md` und `COLLECTION.md` mit). Es sind **29** Source-Seiten — dieselbe 29, die #66s Changelog-Eintrag nennt, und dieselbe Zahl wie die 29 Raw-Dateien. ## Einheiten **Eine Einheit** (`backfill-capture-fields/u1`), 29 Seiten. Weit unter der Empfehlung von 48 aus `instructions/migrate-corpus.md` Schritt 2; Kostenschätzung 29 × `touch` + `index rebuild` + `lint` + `log append` + `publish` (zweimal, Mass-Update-Gate) ≈ 35 Aufrufe gegen die 60er-Decke. Kein Grund zu schneiden, also kein Schnitt. ## Entscheidungsregel Ein Backfill-Wert ist **erschlossen**, nicht erhoben — genau die Vermutung, vor der #67 warnt. Deshalb gilt hier eine engere Regel als beim laufenden Betrieb: > Ein echter Wert wird nur gesetzt, wo die **Art des Artefakts** ihn aus dem Material selbst > zweifelsfrei festlegt. Wo zwei kompetente Leser abweichen könnten, steht `unknown`. `unknown` ist an dieser Stelle keine Bequemlichkeit, sondern die einzige ehrliche Antwort: es ist backfill-only genau deshalb, weil ein geratener Capture-Wert später nicht mehr von einem erhobenen zu unterscheiden wäre. Was die Art des Artefakts festlegt: | Artefakt | `fidelity` | Begründung | |---|---|---| | Gesprächstranskript | `verbatim` | wörtlicher Mitschnitt eines Austauschs | | Tracker-Export | `verbatim` | die Datei sagt selbst „Wörtliche Kopie des Issue-Threads" | | Web-Artikel / Blogpost mit `source_url` | `published` | veröffentlichtes Artefakt, als Zitat übernommen | | LLM-Analyse fremden Materials | `secondhand` | Wiedergabe von etwas anderem | | Selbstverfasste Notiz / Cheat Sheet | `unknown` | weder Mitschnitt noch Veröffentlichung noch Wiedergabe — der Enum hat keinen Wert dafür | `authority` folgt der Worked-case-Tabelle aus dem Issue selbst (Zeile „Privat-Projekte": Systemdoku/Spec = `normative`, Session-Transkript = `reporting`, LLM-Analyse = `opinion`) und sonst der Frage, ob der Urheber für den **Gegenstand** zuständig war. ## Die 29 Urteile ### verbatim + reporting (18) 16 Gesprächstranskripte (`raw/notes/Conversation Transcript - *.md`) plus die 2 Tracker-Exporte. Beide Gruppen sind wörtliche Mitschnitte; beide berichten über ihren Gegenstand, statt ihn festzulegen — ein Issue-Thread ist ein Protokoll, kein Contract. Das normative Artefakt zu #41/#62 ist `instructions/dev/issue-tracking.md`, nicht der Thread, der dorthin geführt hat. ### verbatim + normative (1) - `Source - qmd - GitHub Repository` — die Rohdatei erklärt ihre Treue selbst („die API-JSON-Felder sind wörtlich zitiert; die README-/package.json-Auszüge … wörtlich aus den geholten Dateien"). Ein Projekt-README ist für die Frage, was das Projekt *ist*, zuständig. ### secondhand + opinion (3) - `Source - LLM Improvements Codex Analysis`, `Source - LLM Improvements Sonnet Analysis` — Modellausgabe über gelesenes Material. - `Source - LLM Improvements Production Agent Gaps 2026` — der Kopf der Rohdatei sagt es ausdrücklich: „Aspekt aus einer externen Analyse … vom Nutzer per Chat eingebracht". Also die Wiedergabe einer fremden Analyse, nicht die Analyse selbst. ### published + reporting (2) - `Source - AMD Powermanagement CPU` — heise.de-Meldung, wörtlich als Blockzitat übernommen. Fachjournalismus berichtet über den Kernel-Treiber, er legt ihn nicht fest. - `Source - LLM Wiki v2` — veröffentlichter Blogpost, der sich selbst als „was wir beim Betrieb gelernt haben" einführt: Erfahrungsbericht auf einem fremden Muster. ### published + normative (1) - `Source - LLM Wiki Pattern` — Karpathys ursprüngliche Idea-File. Für die Frage „woraus besteht das LLM-Wiki-Muster" ist das definierende Dokument zuständig; der Gegenstand der Seite *ist* der Inhalt dieses Dokuments. ### unknown + normative (1) - `Source - Copilot Skill Restructure Instructions` — `fidelity` **unknown**: ein selbst verfasstes, fertiges Anweisungsdokument ist weder Mitschnitt noch Veröffentlichung noch Wiedergabe; der Enum hat dafür keinen Wert, und einen zu wählen wäre geraten. `authority` **normative**: der Text ist eine Direktive des Repo-Eigners an einen Agenten („You are restructuring …", „concrete requirements"), und die Umstrukturierung ist so gelaufen. ### unknown + reporting (3) - `Source - Arch Linux Cheat Sheet`, `Source - Docker Cheatsheet`, `Source - Wine` — `fidelity` **unknown** aus demselben Grund wie oben (eigene Notizen sind keine Erfassung von etwas anderem). `authority` **reporting**: der Operator ist für Arch, Docker und Wine nicht zuständig; die Notizen halten fest, was bei ihm funktioniert hat. ## Bilanz für die Changelog-Belegzeile (Publish 3/3) - `fidelity: unknown` auf **4** von 29 Seiten (1 Anweisungsdokument, 3 Cheat Sheets). - `authority: unknown` auf **0** Seiten — die Zuständigkeitsfrage war überall aus dem Material beantwortbar, die Erfassungstreue nicht. ## Was diese Einheit nicht tut - **Kein `migrate done`.** Das führt die `kb_version` in `.wikitool-kb.json` weiter, und die Kette dort kommt aus den Dokumenten unter `instructions/migrations/`. #67 hat keins und braucht keins (MINOR, Felder optional im Schema) — es gibt also keinen nächsten Kettenglied-Eintrag, den dieser Lauf setzen dürfte. - **Keine Body-Änderung.** Nur Frontmatter, ausschließlich über `wikitool touch`.