docs: Belegzeile zum fidelity/authority-Backfill, Lauf geschlossen (schliesst #67)
CI / verify (push) Successful in 51s

Files changed:
- CHANGES.md
- kb/log.md
- work/backfill-capture-fields/README.md
- work/backfill-capture-fields/plan.md
This commit is contained in:
2026-09-09 06:51:17 +02:00
parent 00220f8b07
commit 46dfee0ea9
4 changed files with 38 additions and 159 deletions
+32 -4
View File
@@ -494,10 +494,38 @@ Fill-once), `tools/chemenu/type_resolver.py` (`get_capture_fields`),
`instructions/bootstrap.md`, `instructions/wiki-ingest/SKILL.md` (Schritt 1 und 6), zugehörige
Tests.
Absichtlich nicht in diesem Publish: der Backfill über die 31 bestehenden Source-Seiten (eigener
`work/`-Lauf nach `instructions/migrate-corpus.md`, eigenes Mass-Update-Gate) und die
Beleg-/Fundzeile im Changelog dazu — #67 bleibt bis dahin offen, dieser Bump deckt Schritt 1 der
im Issue festgehaltenen Drei-Publish-Abfolge.
Der Backfill über den Bestand lief als eigener `work/`-Lauf (`backfill-capture-fields`,
Commit `00220f8`) hinterher, nach `instructions/migrate-corpus.md` und durch das
Mass-Update-Gate: **29 Source-Seiten**, nicht 31 wie zwischenzeitlich im Issue notiert die
höhere Zahl zählte `INDEX.md` und `COLLECTION.md` mit.
Die Regel dieses Laufs war enger als die des laufenden Betriebs, weil ein nachgetragener
Capture-Wert *erschlossen* ist und nicht *erhoben*: ein echter Wert nur dort, wo die Art des
Artefakts ihn aus dem Material selbst festlegt, sonst `unknown`. Ergebnis: `verbatim`+`reporting`
18 (16 Gesprächstranskripte, 2 Tracker-Exporte — beide wörtliche Mitschnitte, beide Protokoll
statt Festlegung), `secondhand`+`opinion` 3 (LLM-Analysen), `published`+`reporting` 2,
`published`+`normative` 1 (Karpathys Idea-File, das definierende Dokument seines eigenen
Gegenstands), `verbatim`+`normative` 1 (das qmd-README, dessen Rohdatei ihre Treue selbst
deklariert), `unknown`+`normative` 1, `unknown`+`reporting` 3.
**`fidelity: unknown` steht auf 4 der 29 Seiten, `authority: unknown` auf keiner.** Die
Asymmetrie ist der interessante Teil: wer für einen Gegenstand zuständig war, ließ sich überall
aus dem Material beantworten — wie treu ein selbstverfasstes Cheat Sheet oder ein Anweisungsdokument
„erfasst", nicht, weil der Enum für ein originär geschriebenes Artefakt keinen Wert hat. Das ist
kein Backfill-Fehler, sondern genau die Grenze, die `unknown` markieren soll.
Und der `lint`-Befund hat einen Fall — 67 sogar: nach dem Backfill melden **67 von 152 Seiten**
mit `confidence_base` mehr Konfidenz, als die Quellenlage trägt (47 gegen die 0.8-Grenze für
`reporting`, 20 gegen die 0.6-Grenze für `opinion`). Das ist kein Fehlalarm und auch keine
Nacharbeit dieses Eintrags: der Korpus ist zu gut der Hälfte aus Gesprächstranskripten kompiliert,
und die Rubrik in `kb/CONVENTIONS.md` lässt Quellenzahl und Aktualität allein bis 0.95 laufen,
während der Autoritätsterm der kleinste Summand ist. Ob daraus folgt, dass 67 Seiten überbewertet
sind oder dass die 0.8-Grenze für einen selbstdokumentierenden Korpus zu eng ist, ist eine
Entscheidung und keine Korrektur — sie hängt als Messung am Stub #60, der genau diesen Verdacht
ohne Zahlen aufgeschrieben hatte. Die Transkripte wurden ausdrücklich **nicht** auf `normative`
hochgestuft, nur damit der Report leiser wird.
Schließt #67.
---
+6
View File
@@ -197,3 +197,9 @@ ueberall aus dem Material beantwortbar, die Erfassungstreue nicht.
Kalibrierungsfrage dazu geht als eigenes Issue auf das Board, nicht in diesen Lauf.
---
## [2026-09-09] update | Lauf backfill-capture-fields geschlossen (#67)
Alle Checklistenpunkte erledigt: 29 Seiten getouched, `migrate verify` 0 findings, `lint` Exit 0, Publish 00220f8 gelandet. Die dauerhaften Schluesse stehen in den 29 Source-Seiten selbst (fidelity/authority) und in CHANGES.md; die Entscheidungsregel des Laufs ist dort zusammengefasst, das Workshop-Verzeichnis daher geloescht. Die Kalibrierungsfrage aus dem 67er-lint-Befund liegt als Notiz an Issue #60, das `status/incoming` bleibt.
---
-46
View File
@@ -1,46 +0,0 @@
# Workshop: backfill-capture-fields
- **Run key:** `backfill-capture-fields` (this directory's name - there is no other identifier)
- **Input:** none - this run is not an ingest
- **Started:** 2026-09-08
- **Session id form:** `WIKITOOL_SESSION_ID="backfill-capture-fields/u<N>"`, one per unit
## Goal
Gitea #67, Publish 2/3: `fidelity` und `authority` auf allen 29 bestehenden Source-Seiten
nachtragen, nach der Entscheidungsregel in `plan.md` — echter Wert nur, wo die Art des
Artefakts ihn festlegt, sonst `unknown`.
Die Maschinerie dafür steht seit `4.8.0-beta.8` (`f4353cc`). Dieser Lauf ändert **nur**
Frontmatter, ausschließlich über `wikitool touch --set`, keine Bodies.
## Closes when
Alle 29 Seiten tragen beide Felder, `migrate verify --from HEAD --path kb/sources
--fail-on-error` ist grün (0 findings außerhalb der beabsichtigten Frontmatter-Änderungen),
`lint` läuft durch, und der Publish ist nach Mass-Update-Gate-Freigabe gelandet.
Danach bleibt für #67 nur noch Publish 3/3: die Belegzeile im Changelog (wie viele Seiten
`unknown` tragen, und ob der `confidence_exceeds_source_standing`-Befund einen echten Fall
findet). Die Zahlen dafür stehen in `plan.md` § Bilanz.
## Checklist
- [ ] u1 — 29 Seiten `touch --set fidelity=… --set authority=…` nach `plan.md`
- [ ] u1 — `migrate verify --from HEAD --path kb/sources --fail-on-error`
- [ ] u1 — `index rebuild`, `sources rebuild-index`, `lint` (ganzen Report lesen, nicht nur die
Abschnitte, die dieser Lauf plausibel berührt hat)
- [ ] u1 — `log append`, dann `publish` (exit 42 erwartet, Freigabe einholen)
- [ ] Workshop schließen (Verzeichnis löschen), sobald der Publish gelandet ist
## Open decisions
- Keine. Die vier Entscheidungen des Pakets (3a/3b/5a/Versionsteil) sind am 2026-09-08 im Issue
gefallen; die Backfill-Regel selbst steht in `plan.md` und braucht keine weitere Freigabe.
## Notizen
- `date:` der Source-Seiten wird **nicht** angefasst: das ist das Veröffentlichungsdatum des
Rohmaterials, nicht der Zeitpunkt dieser Bearbeitung (`touch` bewegt es ohne explizites
`--date` ohnehin nicht).
- Kein `migrate done` — Begründung in `plan.md` § Was diese Einheit nicht tut.
-109
View File
@@ -1,109 +0,0 @@
# 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`.