# Koch Laboratory — Moderacja obrazów bez przechowywania obrazów (modwall) · Forschungsportfolio / Portfolio badawcze / Research Portfolio

> **Zasada uczciwości — czytaj najpierw.** To nie jest kierunek badawczy nad modelem. Klasyfikator jest gotowy, otwarty i wymienny; bariera technologiczna po stronie modelu wynosi zero i tak jest tu opisywana. Przedmiotem pracy jest **reżim działania**: czego system nie zapisuje, komu oddaje decyzję i jak zachowuje się wtedy, gdy nie działa. Wyniki pomiarowe własnego modelu nie istnieją — i jest to poniżej powiedziane wprost, a nie zamaskowane.
> **Zasada publikacji.** Publikujemy problem, rozstrzygnięcia projektowe i ich uzasadnienia; wstrzymane pozostają szczegóły operacyjne wdrożenia klienckiego.

---
---

# 🇵🇱 WERSJA POLSKA

## Koch Laboratory — moderacja obrazów bez przechowywania obrazów

Pytanie wyjściowe brzmiało: co dokładnie kupuje ktoś, kto kupuje moderację treści — skoro sam klasyfikator jest darmowy i każdy deweloper owinie go w weekend. Odpowiedź, do której doszliśmy, przesuwa cały problem z celności modelu na **reżim, w jakim model pracuje**: retencję, zachowanie awaryjne i miejsce, w którym zapada decyzja. To są rozstrzygnięcia, których wybór modelu nie przesądza — i to one są tu przedmiotem.

**Metodyka.** Problem → hipoteza → falsyfikowalne kryterium → rozstrzygnięcie z uzasadnieniem. Statusy jawne: „wdrożone" znaczy działające, „prace projektowe" znaczy brak wyniku pomiarowego, „odrzucone" znaczy sprawdzone i porzucone z podanym powodem.

### 1. Kierunek 1 — moderacja bez retencji obrazu
**Pytanie badawcze.** Czy da się prowadzić moderację treści wizualnych, nie przechowując ani jednego moderowanego obrazu — i jednocześnie zostawić ścieżkę dowodową wystarczającą dla regulatora?
**Dlaczego to trudne.** Dwa obowiązki ciągną w przeciwne strony. Minimalizacja danych mówi: nie przechowuj cudzych zdjęć, zwłaszcza tych podejrzanych. Rozliczalność mówi: wykaż, co i kiedy zostało sprawdzone oraz jaka zapadła decyzja. Naturalne rozwiązanie — „zachowajmy obraz na wypadek sporu" — czyni z dostawcy moderacji archiwum najbardziej wrażliwych treści swoich klientów.
**Stan techniki (publikowany).** Usługi moderacji w chmurze zwykle przechowują próbki treści do celów rozwoju modelu; obowiązki dokumentacyjne wynikające z DSA; hash-matching jako oddzielny ekosystem dla materiałów zakazanych.
**Kryterium sukcesu.** Zero zapisu treści: przetwarzanie wyłącznie w pamięci, log ograniczony do metadanych (czas, rozmiar, wynik, decyzja). Ścieżka dowodowa opisuje **decyzję**, nigdy treść.
**Wynik.** Potwierdzony w zakresie kryterium: obraz nie jest zapisywany na żadnym etapie, rejestrowane są wyłącznie metadane zdarzenia moderacji. Warunek brzegowy podany wprost: przy zerowej retencji **nie da się później wrócić do spornego obrazu** — spór rozstrzyga się na zapisie decyzji i na materiale, który pozostał u klienta. Kto potrzebuje archiwum treści, potrzebuje innego produktu.
**Status:** wdrożone.

### 2. Kierunek 2 — wynik liczbowy zamiast werdyktu, próg po stronie klienta
**Pytanie badawcze.** Kto powinien ustalać granicę między „dopuszczone" a „zablokowane" — dostawca klasyfikatora czy operator platformy?
**Dlaczego to trudne.** Koszt pomyłki jest asymetryczny i zależny od kontekstu, którego dostawca nie zna: aplikacja dla dzieci woli sto fałszywych alarmów niż jedno przepuszczenie, forum dla dorosłych — odwrotnie. Zwrócenie samego werdyktu ukrywa tę decyzję i przenosi odpowiedzialność na dostawcę, który nie ma danych, by ją podjąć.
**Stan techniki (publikowany).** Klasyfikatory zwracające etykietę; interfejsy moderacyjne zwracające etykiety kategorii bez surowych wartości.
**Kryterium sukcesu.** Surowy wynik (0.0–1.0) zwracany zawsze; pole decyzji liczone wyłącznie względem progu ustawionego przez klienta i jawnie oznaczone jako pochodna tego progu.
**Wynik.** Potwierdzony: interfejs zwraca wyniki i decyzję policzoną przy progu klienta. Otwarta konsekwencja: uczciwe ustawienie progu wymaga danych o rozkładzie wyników na **rzeczywistym** ruchu klienta, a tych na starcie nie ma — patrz kierunek 5.
**Status:** wdrożone.

### 3. Kierunek 3 — zachowanie w awarii: cisza czy odmowa
**Pytanie badawcze.** Co ma zrobić usługa moderacji wpięta w krytyczny przepływ klienta, gdy jej własna inferencja przestaje odpowiadać?
**Dlaczego to trudne.** Obie odpowiedzi są kosztowne. „Przepuść" (fail-open) utrzymuje płynność serwisu klienta, ale zamienia awarię w cichą zgodę na publikację treści, której nikt nie sprawdził — i to bez śladu, że coś się stało. „Odmów" (fail-closed) zatrzymuje przepływ i przenosi decyzję na klienta w najgorszym możliwym momencie.
**Stan techniki (publikowany).** Wzorce fail-open/fail-closed w systemach bezpieczeństwa; polityki degradacji w usługach zewnętrznych.
**Kryterium sukcesu.** Zachowanie jednoznaczne, udokumentowane przed wdrożeniem, nigdy milczące.
**Wynik.** Rozstrzygnięcie: przy niedostępnej inferencji usługa zwraca błąd 503, a klient decyduje, co z tym zrobić — najczęściej skierować przypadek do kolejki ręcznej. Awaria jest widoczna w odpowiedzi, nie ukryta w wyniku. Warunek brzegowy: klient musi ten przypadek obsłużyć u siebie; usługa, która się do tego nie przyznaje przed wdrożeniem, sprzedaje mu ukryte ryzyko.
**Status:** wdrożone i udokumentowane.

### 4. Kierunek 4 — hipoteza obalona: moderacja reaktywna jako tańszy zamiennik skanu
**Pytanie badawcze.** Czy zamiast sprawdzać każdy upload, wystarczy sprawdzać treść dopiero po zgłoszeniach użytkowników — taniej, przy porównywalnym skutku?
**Dlaczego to kusiło.** Liczba żądań spada o rzędy wielkości, koszt inferencji przestaje rosnąć z ruchem, a społeczność wskazuje przypadki, których model i tak nie rozumie z samego obrazu (treść neutralna w złym kontekście).
**Wynik: hipoteza obalona.** Z dwóch niezależnych powodów. Po pierwsze, mechanizm z definicji przepuszcza treść do publikacji i czeka na zgłoszenia — przy treści groźnej lub nielegalnej to nie jest zgodność z obowiązkami platformy, tylko udokumentowane zaniechanie. Po drugie, warstwa reaktywna wymaga przechowywania odwołań do zgłoszonych, jeszcze niezweryfikowanych materiałów — a to czyni z usługi **rejestr podejrzanych treści**, czyli dokładne przeciwieństwo kierunku 1. Oszczędność była realna; cena okazała się nie do przyjęcia.
**Co z tego zostało.** Zgłoszenia użytkowników zachowane jako **druga warstwa nad** skanem proaktywnym (ponowne sprawdzenie i kolejka ręczna po przekroczeniu progu zgłoszeń), nigdy jako jego zamiennik. Rozdzielenie tych dwóch ról jest głównym wynikiem tego kierunku.
**Status:** odrzucone jako zamiennik, zachowane jako warstwa uzupełniająca (prace projektowe).

### 5. Kierunek 5 — czego jeszcze nie zmierzyliśmy
**Pytanie badawcze.** Czy model dostrojony na rzeczywistym ruchu daje przewagę nad surowym modelem otwartym — i czy da się tę przewagę wykazać publicznie, zamiast ją deklarować?
**Dlaczego to trudne.** Uczciwy benchmark wymaga danych, których przy zerowej retencji (kierunek 1) po prostu nie mamy; każde ich pozyskanie musi być osobno uzgodnione z klientem i osobno rozliczone prawnie. To realne napięcie między dwoma własnymi zasadami i nie zamierzamy go tu wygładzać.
**Kryterium sukcesu.** Publiczny, powtarzalny benchmark „model dostrojony vs surowy model otwarty" na zbiorze opisanym co do pochodzenia, wraz z wynikami negatywnymi, jeśli przewagi nie będzie.
**Wynik.** Brak — **żaden pomiar nie został wykonany**. Na dziś w użyciu jest gotowy model otwarty, kwantyzowany do int8 i wpieczony w obraz kontenera; twierdzenie o jakiejkolwiek przewadze byłoby niczym niepodpartą deklaracją.
**Status:** prace projektowe, wynik nieznany.

### 6. Kierunek 6 — granice postawione świadomie
**Model jako składnik, nie jako pobranie.** Wagi są wpiekane w obraz kontenera; kontener inferencji nie jest wystawiony na zewnątrz i pracuje w sieci wewnętrznej. Kryterium: uruchomienie bez dostępu do internetu i bez zależności od cudzego hosta wag — usługa nie może przestać działać dlatego, że ktoś inny zdjął plik.
**Licencja jako granica projektowa.** Dobór modelu ograniczają warunki licencji, nie tylko wyniki celności; model o świetnych wynikach i licencji nie do pogodzenia z zamkniętym wdrożeniem klienta jest dla tego produktu bezużyteczny. Ta granica jest przyjęta świadomie i wcześnie, nie po fakcie.
**Materiały zakazane poza zakresem.** Wykrywanie CSAM jest jawnie wyłączone z zakresu: to odrębny, ściśle regulowany ekosystem oparty na dopasowaniu skrótów i obowiązkach zgłoszeniowych, a nie zadanie dla własnego klasyfikatora. Nazwanie tej granicy wprost jest częścią produktu, nie zastrzeżeniem drobnym drukiem.
**Status:** wdrożone (granice obowiązujące).

**Status kierunku.** Reżim działania — zero retencji, wynik liczbowy zamiast werdyktu, fail-closed, wdrożenie samodzielne u klienta — jest wdrożony i działa. Wyników własnych pomiarów modelu nie ma i nie będzie, dopóki nie powstanie benchmark opisany w kierunku 5. Najbliższy krok: kolejka przypadków granicznych z człowiekiem w pętli, z jawnie mierzonym udziałem przypadków przekazanych do decyzji ręcznej.

---
---

# 🇩🇪 DEUTSCHE FASSUNG

## Koch Laboratory — Bildmoderation ohne Speicherung der Bilder

Die Ausgangsfrage lautete: Was genau kauft jemand, der Inhaltsmoderation kauft — wo doch der Klassifikator selbst kostenlos ist und jeder Entwickler ihn an einem Wochenende einpackt? Die Antwort, zu der wir gelangt sind, verschiebt das ganze Problem von der Treffsicherheit des Modells hin zum **Betriebsregime**: Aufbewahrung, Fehlerverhalten und der Ort, an dem die Entscheidung fällt. Diese Festlegungen präjudiziert die Modellwahl nicht — und sie sind hier der Gegenstand.

**Methodik.** Problem → Hypothese → falsifizierbares Kriterium → Festlegung mit Begründung. Status offen ausgewiesen: „umgesetzt" heißt in Betrieb, „Projektarbeit" heißt ohne Messergebnis, „verworfen" heißt geprüft und mit angegebenem Grund aufgegeben.

### 1. Richtung 1 — Moderation ohne Bildaufbewahrung
**Forschungsfrage.** Lässt sich visuelle Inhaltsmoderation betreiben, ohne ein einziges moderiertes Bild zu speichern — und dennoch eine Nachweiskette hinterlassen, die einer Aufsicht genügt?
**Warum schwierig.** Zwei Pflichten ziehen in entgegengesetzte Richtungen. Datenminimierung sagt: Speichere keine fremden Bilder, schon gar nicht die verdächtigen. Rechenschaftspflicht sagt: Weise nach, was wann geprüft wurde und welche Entscheidung fiel. Die naheliegende Lösung — „bewahren wir das Bild für den Streitfall auf" — macht den Moderationsanbieter zum Archiv der sensibelsten Inhalte seiner Kunden.
**Stand der Technik (veröffentlicht).** Cloud-Moderationsdienste speichern üblicherweise Inhaltsproben zur Modellentwicklung; Dokumentationspflichten aus dem DSA; Hash-Matching als eigenes Ökosystem für verbotenes Material.
**Erfolgskriterium.** Null Inhaltsspeicherung: Verarbeitung ausschließlich im Arbeitsspeicher, Protokoll begrenzt auf Metadaten (Zeit, Größe, Ergebnis, Entscheidung). Die Nachweiskette beschreibt die **Entscheidung**, nie den Inhalt.
**Ergebnis.** Im Rahmen des Kriteriums bestätigt: Das Bild wird zu keinem Zeitpunkt gespeichert, erfasst werden ausschließlich Metadaten des Moderationsereignisses. Ausdrückliche Randbedingung: Bei null Aufbewahrung lässt sich **später nicht mehr auf das strittige Bild zurückgreifen** — der Streit wird über die Entscheidungsaufzeichnung und über das beim Kunden verbliebene Material geführt. Wer ein Inhaltsarchiv braucht, braucht ein anderes Produkt.
**Status:** umgesetzt.

### 2. Richtung 2 — Zahlenwert statt Urteil, Schwelle beim Kunden
**Forschungsfrage.** Wer soll die Grenze zwischen „zugelassen" und „gesperrt" festlegen — der Anbieter des Klassifikators oder der Betreiber der Plattform?
**Warum schwierig.** Die Fehlerkosten sind asymmetrisch und hängen von einem Kontext ab, den der Anbieter nicht kennt: Eine Kinder-App nimmt hundert Fehlalarme in Kauf, bevor sie einen Durchrutscher hinnimmt, ein Erwachsenenforum umgekehrt. Nur ein Urteil zurückzugeben, verdeckt diese Entscheidung und schiebt die Verantwortung dem Anbieter zu, der die Daten für sie nicht hat.
**Stand der Technik (veröffentlicht).** Klassifikatoren, die ein Label zurückgeben; Moderationsschnittstellen, die Kategorielabels ohne Rohwerte liefern.
**Erfolgskriterium.** Der Rohwert (0.0–1.0) wird immer zurückgegeben; das Entscheidungsfeld wird ausschließlich gegen die vom Kunden gesetzte Schwelle berechnet und ausdrücklich als deren Ableitung gekennzeichnet.
**Ergebnis.** Bestätigt: Die Schnittstelle liefert Werte und eine an der Kundenschwelle berechnete Entscheidung. Offene Konsequenz: Eine ehrliche Schwellenwahl verlangt Daten über die Wertverteilung im **tatsächlichen** Verkehr des Kunden — die zu Beginn nicht existieren, siehe Richtung 5.
**Status:** umgesetzt.

### 3. Richtung 3 — Verhalten im Störfall: Schweigen oder Verweigerung
**Forschungsfrage.** Was soll ein Moderationsdienst tun, der im kritischen Ablauf des Kunden hängt, wenn die eigene Inferenz nicht mehr antwortet?
**Warum schwierig.** Beide Antworten sind teuer. „Durchlassen" (fail-open) hält den Betrieb des Kunden flüssig, verwandelt die Störung aber in eine stille Zustimmung zur Veröffentlichung ungeprüfter Inhalte — ohne jede Spur, dass etwas vorgefallen ist. „Verweigern" (fail-closed) stoppt den Ablauf und verlagert die Entscheidung im denkbar schlechtesten Moment zum Kunden.
**Stand der Technik (veröffentlicht).** Fail-open/fail-closed-Muster in Sicherheitssystemen; Degradationsstrategien bei Fremddiensten.
**Erfolgskriterium.** Eindeutiges, vor der Einführung dokumentiertes Verhalten — niemals stillschweigend.
**Ergebnis.** Festlegung: Bei nicht verfügbarer Inferenz antwortet der Dienst mit 503, und der Kunde entscheidet — meist Weiterleitung in eine manuelle Warteschlange. Die Störung ist in der Antwort sichtbar, nicht im Ergebnis versteckt. Randbedingung: Der Kunde muss diesen Fall bei sich behandeln; ein Dienst, der das vor der Einführung verschweigt, verkauft ihm verdecktes Risiko.
**Status:** umgesetzt und dokumentiert.

### 4. Richtung 4 — widerlegte Hypothese: reaktive Moderation als billigerer Ersatz des Scans
**Forschungsfrage.** Genügt es, Inhalte erst nach Nutzermeldungen zu prüfen, statt jeden Upload zu scannen — billiger, bei vergleichbarer Wirkung?
**Warum es verlockte.** Die Zahl der Anfragen sinkt um Größenordnungen, die Inferenzkosten wachsen nicht mehr mit dem Verkehr, und die Community zeigt genau jene Fälle an, die das Modell aus dem Bild allein ohnehin nicht versteht (harmloser Inhalt im falschen Kontext).
**Ergebnis: Hypothese widerlegt.** Aus zwei unabhängigen Gründen. Erstens lässt der Mechanismus Inhalte definitionsgemäß erst erscheinen und wartet dann auf Meldungen — bei gefährlichem oder rechtswidrigem Material ist das keine Pflichterfüllung, sondern dokumentiertes Unterlassen. Zweitens verlangt die reaktive Schicht, Verweise auf gemeldetes, noch ungeprüftes Material vorzuhalten — und das macht den Dienst zu einem **Register verdächtiger Inhalte**, also zum genauen Gegenteil von Richtung 1. Die Ersparnis war real; der Preis erwies sich als nicht hinnehmbar.
**Was davon bleibt.** Nutzermeldungen bleiben als **zweite Schicht über** dem proaktiven Scan erhalten (erneute Prüfung und manuelle Warteschlange nach Überschreiten einer Meldeschwelle), nie als dessen Ersatz. Die Trennung dieser beiden Rollen ist das wesentliche Ergebnis dieser Richtung.
**Status:** als Ersatz verworfen, als ergänzende Schicht erhalten (Projektarbeit).

### 5. Richtung 5 — was wir noch nicht gemessen haben
**Forschungsfrage.** Bringt ein auf tatsächlichem Verkehr nachtrainiertes Modell einen Vorsprung gegenüber dem rohen offenen Modell — und lässt sich dieser Vorsprung öffentlich zeigen, statt ihn zu behaupten?
**Warum schwierig.** Ein ehrlicher Benchmark verlangt Daten, die es bei null Aufbewahrung (Richtung 1) schlicht nicht gibt; jede Beschaffung muss einzeln mit dem Kunden vereinbart und rechtlich gesondert geregelt werden. Das ist ein echter Widerspruch zwischen zwei eigenen Grundsätzen, und er wird hier nicht geglättet.
**Erfolgskriterium.** Ein öffentlicher, wiederholbarer Benchmark „nachtrainiertes Modell vs. rohes offenes Modell" auf einem in seiner Herkunft beschriebenen Datensatz — samt negativer Ergebnisse, falls es keinen Vorsprung gibt.
**Ergebnis.** Keines — **es wurde keine Messung durchgeführt.** Im Einsatz ist heute ein fertiges offenes Modell, nach int8 quantisiert und ins Container-Image eingebacken; jede Behauptung eines Vorsprungs wäre eine durch nichts gedeckte Erklärung.
**Status:** Projektarbeit, Ergebnis unbekannt.

### 6. Richtung 6 — bewusst gesetzte Grenzen
**Modell als Bestandteil, nicht als Download.** Die Gewichte werden ins Container-Image eingebacken; der Inferenz-Container ist nicht nach außen exponiert und läuft im internen Netz. Kriterium: Start ohne Internetzugang und ohne Abhängigkeit von einem fremden Gewichte-Host — der Dienst darf nicht ausfallen, weil jemand anderes eine Datei zurückgezogen hat.
**Lizenz als Entwurfsgrenze.** Die Modellwahl begrenzen Lizenzbedingungen, nicht allein Genauigkeitswerte; ein Modell mit hervorragenden Zahlen, dessen Lizenz mit der geschlossenen Installation beim Kunden unvereinbar ist, ist für dieses Produkt unbrauchbar. Diese Grenze wurde bewusst und früh gezogen, nicht nachträglich.
**Verbotenes Material außerhalb des Umfangs.** Die Erkennung von Missbrauchsdarstellungen Minderjähriger ist ausdrücklich ausgeschlossen: ein eigenes, streng reguliertes Ökosystem aus Hash-Abgleich und Meldepflichten — keine Aufgabe für einen eigenen Klassifikator. Diese Grenze klar zu benennen ist Teil des Produkts, kein Kleingedrucktes.
**Status:** umgesetzt (geltende Grenzen).

**Status der Richtung.** Das Betriebsregime — null Aufbewahrung, Zahlenwert statt Urteil, fail-closed, Betrieb in eigener Infrastruktur des Kunden — ist umgesetzt und in Betrieb. Eigene Modellmessungen gibt es nicht und wird es nicht geben, solange der in Richtung 5 beschriebene Benchmark fehlt. Nächster Schritt: eine Warteschlange für Grenzfälle mit Mensch in der Schleife, mit ausgewiesenem Anteil der zur manuellen Entscheidung übergebenen Fälle.

---
---

# 🇬🇧 ENGLISH VERSION

## Koch Laboratory — image moderation without storing images

The opening question was: what exactly does someone buy when they buy content moderation — given that the classifier itself is free and any developer can wrap it in a weekend? The answer we arrived at moves the whole problem away from model accuracy and towards the **regime the model runs in**: retention, failure behaviour, and where the decision is taken. Those choices are not settled by the choice of model — and they are the subject here.

**Method.** Problem → hypothesis → falsifiable criterion → decision with its rationale. Statuses stated openly: "implemented" means running, "design work" means no measured result, "rejected" means tested and abandoned with the reason given.

### 1. Direction 1 — moderation with no image retention
**Research question.** Can visual content moderation be run without storing a single moderated image — while still leaving an evidential trail sufficient for a regulator?
**Why it is hard.** Two duties pull in opposite directions. Data minimisation says: do not keep other people's images, least of all the suspect ones. Accountability says: show what was checked, when, and what was decided. The obvious solution — "let's keep the image in case of a dispute" — turns the moderation vendor into an archive of its customers' most sensitive content.
**State of the art (published).** Cloud moderation services typically retain content samples for model development; documentation duties under the DSA; hash matching as a separate ecosystem for prohibited material.
**Success criterion.** Zero content storage: processing in memory only, the log limited to metadata (time, size, score, decision). The evidential trail describes the **decision**, never the content.
**Result.** Confirmed within the criterion: the image is not written at any stage; only metadata of the moderation event is recorded. Boundary condition stated openly: with zero retention **there is no going back to the disputed image** — a dispute is settled on the record of the decision and on whatever material remained with the customer. Anyone who needs a content archive needs a different product.
**Status:** implemented.

### 2. Direction 2 — a score instead of a verdict, the threshold on the customer's side
**Research question.** Who should set the line between "allowed" and "blocked" — the vendor of the classifier or the operator of the platform?
**Why it is hard.** The cost of a mistake is asymmetric and depends on a context the vendor does not know: a children's app will accept a hundred false alarms rather than one item slipping through; an adult forum the opposite. Returning only a verdict hides that decision and shifts responsibility to the vendor, who lacks the data to take it.
**State of the art (published).** Classifiers returning a label; moderation interfaces returning category labels without raw values.
**Success criterion.** The raw score (0.0–1.0) is always returned; the decision field is computed solely against the threshold set by the customer and explicitly marked as derived from it.
**Result.** Confirmed: the interface returns scores and a decision computed at the customer's threshold. An open consequence: setting that threshold honestly requires data on the score distribution in the customer's **actual** traffic, which does not exist at the start — see direction 5.
**Status:** implemented.

### 3. Direction 3 — behaviour under failure: silence or refusal
**Research question.** What should a moderation service sitting inside a customer's critical path do when its own inference stops responding?
**Why it is hard.** Both answers are expensive. "Let it through" (fail-open) keeps the customer's service flowing but converts an outage into silent consent to publish unchecked content — with no trace that anything happened. "Refuse" (fail-closed) stops the flow and hands the decision back to the customer at the worst possible moment.
**State of the art (published).** Fail-open/fail-closed patterns in security systems; degradation policies for third-party services.
**Success criterion.** Unambiguous behaviour, documented before adoption, never silent.
**Result.** The decision: when inference is unavailable the service returns 503 and the customer decides what to do — usually routing the case to a manual queue. The outage is visible in the response, not hidden inside a score. Boundary condition: the customer has to handle that case on their side; a service that does not admit this before adoption is selling them concealed risk.
**Status:** implemented and documented.

### 4. Direction 4 — a refuted hypothesis: reactive moderation as a cheaper substitute for scanning
**Research question.** Instead of checking every upload, is it enough to check content only after users report it — cheaper, at comparable effect?
**Why it was tempting.** The number of requests drops by orders of magnitude, inference cost stops growing with traffic, and the community points at exactly the cases a model cannot understand from the image alone (harmless content in the wrong context).
**Result: hypothesis refuted.** For two independent reasons. First, the mechanism by definition lets content appear and then waits for reports — with dangerous or illegal material that is not compliance, it is documented omission. Second, a reactive layer requires holding references to reported, still unverified material — which turns the service into a **register of suspect content**, the exact opposite of direction 1. The saving was real; the price turned out to be unacceptable.
**What survives.** User reports remain as a **second layer above** the proactive scan (re-check and a manual queue once a report threshold is crossed), never as its replacement. Separating those two roles is the principal result of this direction.
**Status:** rejected as a substitute, retained as a supplementary layer (design work).

### 5. Direction 5 — what we have not measured
**Research question.** Does a model tuned on real traffic outperform the raw open model — and can that advantage be demonstrated publicly rather than asserted?
**Why it is hard.** An honest benchmark requires data that, under zero retention (direction 1), simply does not exist; obtaining any of it must be agreed with the customer case by case and settled separately in legal terms. This is a genuine tension between two of our own principles, and it is not smoothed over here.
**Success criterion.** A public, repeatable benchmark of "tuned model vs raw open model" on a dataset described as to its provenance — including negative results if there is no advantage.
**Result.** None — **no measurement has been carried out.** What runs today is an off-the-shelf open model, quantised to int8 and baked into the container image; any claim of an advantage would be an assertion with nothing behind it.
**Status:** design work, result unknown.

### 6. Direction 6 — boundaries drawn deliberately
**The model as a component, not as a download.** The weights are baked into the container image; the inference container is not exposed and runs on an internal network. Criterion: it starts with no internet access and no dependency on somebody else's weight host — the service must not fail because another party withdrew a file.
**Licence as a design boundary.** Model choice is bounded by licence terms, not accuracy figures alone; a model with excellent numbers whose licence cannot be reconciled with a closed installation at the customer's site is useless for this product. That boundary was drawn deliberately and early, not after the fact.
**Prohibited material out of scope.** Detection of child sexual abuse material is explicitly excluded: it is a separate, tightly regulated ecosystem built on hash matching and reporting duties, not a task for an in-house classifier. Naming that boundary plainly is part of the product, not small print.
**Status:** implemented (boundaries in force).

**Status of the direction.** The operating regime — zero retention, a score instead of a verdict, fail-closed, self-hosted operation at the customer's site — is implemented and running. There are no measurements of our own model, and there will be none until the benchmark described in direction 5 exists. Next step: a queue of borderline cases with a human in the loop, with the share of cases handed to manual decision measured openly.
