Alle Kapitel
Kapitel 16

Kapitel 16 — Das Feld `fair`

7 min Lesezeit1.383 Wörter

Kapitel 16 — Das Feld fair

Nias Satz aus dem Freitext-Thread ist nicht weggegangen. Ihr braucht eine Regel dafür, was die Zahl darf. Sonst schreibt sie eine. Er stand zwei Wochen im Kanal wie ein offenes , und dann hat Finn ihn angenommen, so wie er alles annimmt: als Auftrag, etwas zu bauen.

Man kann eine Regel nicht in einen Chat schreiben. Man muss sie dorthin legen, wo das System sie liest, und der einzige Ort, den unsere Systeme lesen, ist ein — ein Formular für Daten: was erlaubt ist und was nicht. Also wird aus Nias Forderung, wie fast alles bei uns, eine Feldfrage. Nicht: Ist das ? Sondern: Welchen Datentyp hat fair, welche Werte sind erlaubt, und wann ist eine Eingabe ungültig.

Ich merke, wie absurd das klingt, während ich es aufschreibe, und wie normal es sich anfühlt. Wir haben Verlässlichkeit zu einem Wort in einer Copy-Datei gemacht, Confidence zu einer Ziffer zwischen null und eins. Jetzt ist Ethik dran. Als Feld.

Aktenlage
{"ts":"2026-04-07T09:41:22+02:00","actor":"Finn","channel":"#product","msg":"Nia will eine Regel für die Confidence. Gut. Dann validieren wir gegen ein Ethik-Feld. Draft liegt im PR."}
{"ts":"2026-04-07T09:44:05+02:00","actor":"Nia","channel":"#product","msg":"Ich wollte eine Regel, keinen Enum."}
{"ts":"2026-04-07T09:46:38+02:00","actor":"Finn","channel":"#product","msg":"Ein Enum IST die Regel. Erlaubte Werte, alles andere wird abgelehnt. Sauberer geht Fairness nicht."}

Finn hat den Entwurf schon geschrieben, natürlich hat er das. Ich öffne den PR und lese die Felddefinition, und für einen Moment sieht sie beruhigend aus, so wie jede saubere Struktur, bevor man fragt, was sie wegräumt.

{
  "field": "fair",
  "type": "string",
  "enum": ["equitable", "conditional", "unfair", "unknown"],
  "default": "unknown",
  "required": true,
  "validation": {
    "rule": "reject_if_not_in_enum",
    "on_low_confidence": "coerce_to:unknown",
    "min_confidence": 0.6
  },
  "description": "Bewertet, ob eine geteilte Essenz Menschen unterschiedlich behandelt, ohne dass der Unterschied benannt wird.",
  "note": "content not stored; classification runs locally on essence; only the enum value leaves the island"
}

Vier Werte. equitable, conditional, unfair, unknown. Alles, was sich nicht in einen dieser Kästen sortieren lässt, wird abgelehnt oder auf unknown gezogen. Darunter die Schwelle: Unter 0.6 Confidence traut das System sich kein Urteil zu und schreibt unknown — dieselbe Confidence-Zahl aus dem Freitext-Feld, jetzt als Türsteher vor einem Wort, das früher eine Überzeugung war.

Ich lese die vier Werte dreimal, und die ganze Zeit fehlt mir derselbe. Es gibt kein Feld für das kommt darauf an, wen du fragst. conditional ist es nicht; das heißt „fair unter Bedingungen“, nicht „strittig“. Ein Enum kennt keinen Dissens. Es kennt nur Werte, die drin sind, und Werte, die es ablehnt. Wir bauen ein Feld für Fairness, das die einzige ehrliche Antwort darauf nicht speichern kann: dass niemand sich einig ist.

Aktenlage
{"ts":"2026-04-07T14:12:50+02:00","actor":"Nia","channel":"#pr-review","msg":"Wer hat entschieden, dass 'equitable' und 'unfair' auf derselben Achse liegen? Das ist keine Validierung. Das ist eine Definition."}
{"ts":"2026-04-07T14:15:31+02:00","actor":"Finn","channel":"#pr-review","msg":"Die Achse ist neutral. Der Klassifikator vergibt den Wert, nicht wir."}
{"ts":"2026-04-07T14:18:09+02:00","actor":"Nia","channel":"#pr-review","msg":"Für wen ist die Achse neutral? Jemand hat die vier Wörter ausgesucht. Ab da ist 'fair' das, was in die vier Wörter passt. Der Rest heißt jetzt 'unknown'."}
{"ts":"2026-04-07T14:22:44+02:00","actor":"Ich","channel":"#pr-review","msg":"Nia hat recht. Das Feld definiert nicht, ob etwas fair ist. Es definiert, welche Antworten es als Antwort zählt."}

Das ist der Kern, und ich sehe ihn erst, als Nia ihn ausspricht. Ein Validierungsschema tut so, als würde es nur prüfen. In Wahrheit legt es fest, was überhaupt eine gültige Aussage ist. Wer den Enum schreibt, hat „fair“ schon definiert, bevor der erste Klassifikator läuft — nicht durch eine Meinung, sondern durch die Auswahl der Kästen. Und die Frage, wer das darf, welche vier Wörter die Achse bilden, steht in keinem Feld und in keiner Sitzung. Sie ist einfach in einen Entwurf geflossen, den einer von uns geschrieben hat, und ab jetzt ist sie Infrastruktur.

Ich scrolle im PR nach unten, weil ich sehen will, wer welche Zeile geschrieben hat, und bleibe an der Feldbeschreibung hängen. Menschen unterschiedlich behandelt, ohne dass der Unterschied benannt wird. Es ist nicht Finns Ton. Finn schreibt „sauber“, „neutral“, „skaliert“. Das hier ist präziser und leiser, es macht Macht sichtbar, ohne jemanden zu beschämen, und ich kenne genau eine Person, die so formuliert.

Ich schreibe ihr, dass ihre Definition im Feld steht.

Aktenlage
{"ts":"2026-04-07T14:31:02+02:00","actor":"Ich","channel":"#pr-review","msg":"Die description ist von dir. 'ohne dass der Unterschied benannt wird.' Das ist deine Formulierung, wortwörtlich."}
{"ts":"2026-04-07T14:35:47+02:00","actor":"Nia","channel":"#pr-review","msg":"Ist es. Ich erinnere mich an den Satz. Ich erinnere mich nicht, ihn hier freigegeben zu haben."}
{"ts":"2026-04-07T14:37:19+02:00","actor":"Finn","channel":"#pr-review","msg":"Ich hab den Draft aus dem alten Ethik-Memo zusammengezogen. Steht bestimmt da drin. Templates sind dafür da."}
{"ts":"2026-04-07T14:39:55+02:00","actor":"Nia","channel":"#pr-review","msg":"Kann sein. Ich schreibe viel. Ich merke mir nicht, wo alles landet."}

Sie erinnert sich an den Satz, aber nicht an die Freigabe. Und ich lasse es dabei, so wie sie es dabei lässt, weil es drei ruhige Erklärungen gibt und keine eine Untersuchung wert ist. Finn hat den Satz aus einem alten Memo kopiert; ihre Sprache liegt verstreut in unseren Dokumenten, und Templates ziehen zusammen, was einmal irgendwo stand. Oder wir haben die Beschreibung gemeinsam entworfen, in einem Call, den keiner mehr vor sich hat. Oder sie hat ihn selbst hineingeschrieben und vergessen — sie sagt es ja, sie schreibt viel und merkt sich nicht, wo alles landet. Jede Erklärung ist wahr genug, um die Frage zu schließen, und keine macht mir Angst. Nur die Summe fühlt sich einen Moment lang kühl an, dann läuft das Ticket weiter, weil Tickets weiterlaufen.

Wir ändern den Enum nicht. Wir ändern die Beschreibung, damit sie sagt, was das Feld wirklich tut, und nicht, was wir gern hätten. Nia besteht darauf, dass in der Doku steht, wer die Achse gewählt hat und dass sie strittig ist — eine Zeile Zweifel, damit später niemand die vier Wörter für Natur hält. Das ist der Kompromiss: Wir bauen das Feld, aber wir schreiben hinein, dass es ein Bau ist.

Dann steht der Merge an. Die eigentliche Entscheidung ist nicht der Enum und nicht die Beschreibung. Es ist der Klick, der aus einem Entwurf ein Schema macht, gegen das ab dem nächsten Rollout jede geteilte Essenz geprüft wird. Danach ist „fair“ kein Wort mehr, das wir benutzen, sondern ein Wert, den das System vergibt.

Der Cursor steht auf dem grünen Feld, Merge pull request, und blinkt, als hätte er alle Zeit der Welt. Er wartet nicht auf mich. Er wartet auf das, was ich gleich zulasse: dass Ethik ab jetzt ein Datentyp ist, den man validieren kann.

Ich merge.

Aktenlage
{
  "t": "schema.field.merge",
  "at": "2026-04-07T13:02:11Z",
  "pr": "ethics-schema/pr-231",
  "field": "fair",
  "type": "string",
  "enum": ["equitable", "conditional", "unfair", "unknown"],
  "validation": "reject_if_not_in_enum; coerce_to:unknown if confidence<0.6",
  "reviewers": ["nia", "finn"],
  "approved_by": "ich",
  "review_state": "approved_with_reservation",
  "reservation_note": "reviewer nia: enum encodes a contested definition; documented, not resolved",
  "content_stored": false,
  "note": "schema metadata only; no classification of any user, no analysis of intent; enum applies to shared essence"
}

Das Merge-Log ist ehrlicher als wir. Es speichert, wer freigegeben hat und dass ein Reviewer einen Vorbehalt hatte, und es hält fest, was es nicht tut: keine Einordnung eines Menschen, keine Analyse einer Absicht. Nur ein Feld, das prüft, ob eine Essenz in vier Wörter passt. Kein Log kann festhalten, was mich stört, weil es kein Ereignis ist, sondern eine Abwesenheit: der fünfte Wert, den es nicht gibt.

Draußen ziehen dünne Spuren am Fenster nach unten, gleichmäßig, als wäre das längst ein Prozess.

Nia hat ihre Regel bekommen, und sie ist unglücklicher als vorher. Ich verstehe erst jetzt, warum. Sie wollte eine Grenze für die Zahl, etwas, das die Confidence am stillen Urteil hindert. Bekommen hat sie eine zweite Zahl, die dasselbe tut, nur mit einem schöneren Wort davor. Das Feld hält die Confidence nicht auf. Es adelt sie. Ab einem Schwellenwert wird aus „das System war sich ziemlich sicher“ ein Etikett, das „fair“ heißt, und Etiketten reisen weiter als Wahrscheinlichkeiten.

Und ich weiß schon, wohin es reist. Ein Feld, das misst, ob eine Insel fair miteinander umgeht, will nicht in einer Essenz allein bleiben. Es will addiert werden, will Teil einer Zahl werden, die den Zustand einer ganzen Insel beschreibt. fair ist der erste ethische Begriff, der ein Datentyp geworden ist. Er wird nicht der letzte sein, der in eine Bewertung wandert, gegen die man sich nicht wehren kann, weil sie so aussieht, als würde sie nur prüfen. Wir haben heute nur das Feld gebaut. Die Zahl, in die es später einfließt, hat noch keinen Namen. Aber sie wartet schon auf das erste Feld, das ihr sagt, was eine Insel wert ist.