# F11: Sechs Nachrichten in die Archivvorlage eintragen

Dieses ausgefüllte Beispiel zeigt drei zulässige Nutzer-Antwort-Paare aus zwei verschiedenen Nutzerkontexten und eine ausgeschlossene Antwort. Es verwendet die [öffentlich angebotene leere Vorlage](f11_archivvorlage.json). Die sechs Dialogtexte sind bereits vorhandene, vollständig synthetische Texte einer Codex-Arbeitsprobe. Die Übertragung in das Formular und die Prüfung wurden mit KI-Unterstützung erstellt. Auswertungsstand: 7. September 2026.

- [Ausgefüllte Vorlage · JSON](f11_ausfuellbeispiel.json)
- [Unveränderter synthetischer Quellenausschnitt · JSON](f11_quellenausschnitt.json)
- [Prüfprogramm · Python](f11_validieren.py)
- [Ausgeführtes Prüfergebnis einschließlich Fehlerfällen · JSON](f11_pruefergebnis.json)

## Vom Quelltext zum Formular

Die JSON-Datei behält die Struktur der leeren Vorlage bei: `archive_scope`, `records`, `gaps`, `record_template` und `gap_template`. Unter `records` stehen sechs ausgefüllte Nachrichtenblöcke; unter `gaps` steht eine Fehlstelle. Die beiden Vorlagenblöcke bleiben leer und zählen nicht als Datensätze.

Übernehmen Sie `message_id`, `parent_id` und `session_id` wertgleich. Das Quellfeld `role` wird zu `speaker_role`, `text` zu `original_text`. `record_id` ist die neue Formularkennung, zum Beispiel `F11-a1`. `session_id` übernimmt das vorhandene synthetische Sitzungslabel. Ein zusätzlicher externer Thread-Identifier ist nicht belegt.

Jeder Nachrichtenblock nennt seinen genauen Quellpfad, etwa `#/objects/F11/messages/1` für `a1`. `source.reference` zeigt auf den mitgelieferten Quellenausschnitt; `source.content_hash` ist der SHA-256-Hash dieser vollständigen Ausschnittdatei. Der Ausschnitt nennt seinerseits Dateiname, Hash und Auswahlstelle der ursprünglichen internen Arbeitsprobe `ACT_ARBEITSPROBEN_2026-09-07.json`. Alle sechs Nachrichtenobjekte wurden daraus unverändert übernommen. Die ursprünglichen Paarentscheidungen, Aggregate und drei Kodierfälle dienten zusätzlich zur redaktionellen Gegenprüfung. Die interne Gesamtdatei ist kein Bestandteil dieses öffentlichen Pakets.

| Sitzung | Nachricht | Eltern-ID | Rolle | Unveränderter Originaltext | Wörter |
|---|---|---|---|---|---:|
| S1 | u1 | null | user | Wie viele Bücher stehen im Regal? | 6 |
| S1 | a1 | u1 | assistant | Im beschriebenen Regal stehen zwölf Bücher. | 6 |
| S2 | a2 | missing_u2 | assistant | Die Öffnungszeit bleibt unbekannt. | 4 |
| S3 | u3 | null | user | Welcher Raum ist heute frei? | 5 |
| S3 | a3 | u3 | assistant | Laut Tagesplan ist Raum B frei. | 6 |
| S3 | a4 | u3 | assistant | Ohne Tagesplan kann ich das nicht bestimmen. | 7 |

## Welche Antwort wird eingeschlossen?

Die festgelegte Einheit ist eine Antwort mit ihrer unmittelbaren Nutzer-Elternnachricht. Beide Texte müssen vorhanden sein, Nachrichten- und Datensatzkennungen eindeutig und die Sitzungslabels gleich. Für dieses Einzelschrittbeispiel ist die Nutzer-Elternnachricht eine Wurzel mit `parent_id=null`. Mehrschrittverläufe sowie System- oder Werkzeugnachrichten brauchen eine eigene Kontextregel.

| Antwort | Bezug | Entscheidung im Formular | Begründung | Paarwörter |
|---|---|---|---|---:|
| a1 | u1 in S1 | included_pair | Vorhandener Nutzerwurzelbeitrag derselben Sitzung | 12 |
| a2 | missing_u2 in S2 | excluded_pair | Referenzierter Nutzertext fehlt | unbekannt |
| a3 | u3 in S3 | included_pair | Vorhandener Nutzerwurzelbeitrag derselben Sitzung | 11 |
| a4 | u3 in S3 | included_pair | Derselbe vorhandene Nutzerwurzelbeitrag | 12 |

`u1` und `u3` erhalten `included_context`: Sie liefern Kontext, zählen selbst aber nicht als Antworten. `a3` und `a4` sind Geschwisterantworten. Beide zeigen unmittelbar auf `u3`; `a4` ist keine Fortsetzung von `a3`. Zwei verschiedene Antwort-IDs am selben Elternbeitrag sind zulässig. Daraus folgen weder zwei unabhängige Nutzerkontexte noch eine Präferenzrangfolge oder zwei verschiedene Modelle.

Für `a2` verweist `gap_reference` auf `G-missing_u2`. Dort stehen die fehlende Referenz, die Beobachtung und die Folge für den Einschluss. `missing_u2` wird nicht als siebte Nachricht angelegt; Wortlaut und Wortzahl werden nicht ergänzt. Das [bisherige einzelne Ausschlussbeispiel](f11_kodierbeispiel.md) bleibt als gesonderte Probe verfügbar.

## Soll und geprüftes Ist

Gezählt werden Worttreffer der Unicode-Regel `\b\w+\b` in den vorhandenen Texten. Satzzeichen zählen nicht mit. Nicht vorhandener Text bekommt keine geschätzte Wortzahl.

| Zähleinheit | Soll | Geprüftes Ist |
|---|---:|---:|
| Vorhandene Nachrichten | 6 | 6 |
| Fehlstellen im eigenen Register | 1 | 1 |
| Sitzungslabels | 3 | 3 |
| Kandidaten: vorhandene Antworten | 4 | 4 |
| Zulässige Nutzer-Antwort-Paare | 3 | 3 |
| Ausgeschlossene Antworten | 1 | 1 |
| Verschiedene zulässige Nutzerkontexte | 2 | 2 |
| Wörter aller vorhandenen Nachrichten | 34 | 34 |
| Wörter der geeigneten Nachrichten, jede Nachricht einmal | 30 | 30 |
| Paarwörter einschließlich wiederholtem Nutzerkontext | 35 | 35 |

Die geeigneten Nachrichten sind `u1`, `a1`, `u3`, `a3`, `a4`: 6 + 6 + 5 + 6 + 7 = 30 Wörter. Die Paarzählung ergibt 12 + 11 + 12 = 35, weil sie die fünf Wörter von `u3` zweimal enthält. Die vier Wörter der ausgeschlossenen Antwort `a2` erhöhen den gesamten beobachteten Bestand auf 34. Modellgruppen bleiben unbelegt: Alle Modell- und Versionswerte sind `null`.

## Zuordnungen prüfen

Speichern Sie die ausgefüllte JSON-Datei und das Prüfprogramm im selben Verzeichnis. Mit einer installierten Python-3-Umgebung lässt sich der Bericht ausführen:

```text
python f11_validieren.py f11_ausfuellbeispiel.json --self-test
```

Das Programm berechnet die Entscheidungen aus Elternbezug, Sitzungslabel, Rolle, vorhandenem Text und eindeutigen Kennungen; es vergleicht sie mit den eingetragenen Entscheidungen. Die bekannte, richtig dokumentierte Fehlstelle von `a2` ist ein zulässiger Ausschlussfall und kein Programmfehler. Fehlerhaft zugeordnete oder mehrdeutige Antworten werden nicht eingeschlossen. `PASS` bedeutet, dass diese begrenzten Zuordnungsprüfungen bestanden sind.

Der Selbsttest verändert nur Kopien im Arbeitsspeicher. Er prüft neun Fehlerfälle: fehlender Elternbezug ohne passende Fehlstelle, Elternbezug über Sitzungsgrenzen, doppelte Nachrichtenkennung, doppelte Datensatzkennung, Antwort statt Nutzer als Elternbeitrag, zusätzlicher ungedeckter Vorverlauf, Fehlstelle mit tatsächlich vorhandener Nachricht, fehlender Elterntext und falsche manuelle Einschlussentscheidung. Ein weiterer Kontrollfall bestätigt die erlaubten Geschwisterantworten. Die Quelldatei bleibt dabei unverändert. Der beigefügte Bericht enthält die ausgeführten Ergebnisse.

## Was die Felder offenlassen

Original- und Exportdatum sind in der Quelle nicht angegeben; diese Felder und ihre Datumsbelege bleiben `null`. Das Auswertungsdatum bezeichnet nur die neue Aufbereitung. Modell und Version sind unbekannt; auch Originalexport-Herkunftsfeld und Gruppenschlüssel bleiben `null`. Der Belegverweis nennt die beiden tatsächlich leeren Modellfelder. Eine Rolle oder ein Textstil begründet keine Modellidentität.

`summary` bleibt leer, weil keine gesonderte Zusammenfassung erstellt wurde. Die späteren Kodierungen stehen ausschließlich unter `coding`. Ein leerer `gap_reference` bedeutet hier, dass der betreffende Datensatz keine fehlende Elternnachricht meldet; `parent_id=null` bezeichnet die beiden vorhandenen Wurzelbeiträge.

Diese Demonstration prüft Zuordnung und Zähleinheiten. Sie prüft weder die Wahrheit der erfundenen Dialoginhalte noch reale Archive, Kundenergebnisse, statistische Unabhängigkeit oder Modellleistungen. Sie ist keine OASST1-Datenzeile und kein OASST1-Export. Die bereits herangezogene [OASST1-Datensatzkarte](https://huggingface.co/datasets/OpenAssistant/oasst1) ist eine Strukturreferenz. Sie enthält auch `model_name`; ob eine Modellgruppe belegbar ist, hängt von den Werten des jeweiligen Exports ab. Ein Datei-Hash erlaubt einen Inhaltsvergleich, belegt allein aber kein historisches Datum oder eine Erfindungspriorität.
