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 `instructions/bootstrap.md`, `instructions/wiki-ingest/SKILL.md` (Schritt 1 und 6), zugehörige
Tests. Tests.
Absichtlich nicht in diesem Publish: der Backfill über die 31 bestehenden Source-Seiten (eigener Der Backfill über den Bestand lief als eigener `work/`-Lauf (`backfill-capture-fields`,
`work/`-Lauf nach `instructions/migrate-corpus.md`, eigenes Mass-Update-Gate) und die Commit `00220f8`) hinterher, nach `instructions/migrate-corpus.md` und durch das
Beleg-/Fundzeile im Changelog dazu — #67 bleibt bis dahin offen, dieser Bump deckt Schritt 1 der Mass-Update-Gate: **29 Source-Seiten**, nicht 31 wie zwischenzeitlich im Issue notiert die
im Issue festgehaltenen Drei-Publish-Abfolge. 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. 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`.