Aufgabe
Aus einem Freitextnamen einen Katalogeintrag machen: Hersteller, Modell, Gewicht in Gramm, ein bis drei Belegadressen, und ein Satz dazu, wie sicher das ist. Das Gewicht ist der Kern, denn die App rechnet damit. Ein falsches Gewicht ist schlimmer als ein fehlendes.
Der Bot läuft auf dem eigenen Server, zweimal am Tag per Zeitplan, und ruft die Verwaltungsschnittstelle der App auf. Die App selbst liegt bei einem Hoster, dessen Kommandozeile eine alte PHP-Version hat, deshalb der Umweg über HTTP. Je Lauf fünf Kandidaten, sortiert danach, wie klar der Name ein Produkt bezeichnet. Je Kandidat ein Modellaufruf mit Websuche, höchstens drei Suchen, festes Ausgabeschema, neunzig Sekunden Zeitlimit.
Vorfrage
- JAWeg unbekannt? Innerhalb eines Kandidaten ja. Ob „Jetboil Flash“ mit einer Suche erledigt ist und „der grüne Kocher von Aldi“ mit drei nicht, weiß vorher niemand. Deshalb darf das Modell hier entscheiden, wie oft es sucht. Der Stapel drumherum ist ein Workflow.
- JAErgebnis prüfbar? Ja. Ein Gewicht gegen die Herstellerseite zu prüfen dauert Sekunden, und die Belegadressen stehen am Vorschlag.
- JAFehler umkehrbar? Ja, solange der Vorschlag im Posteingang bleibt. Unten steht, wo das zweimal nicht galt.
- JANutzen trägt? Ja. Zehn Kandidaten am Tag, jeder eine Minute Handarbeit gespart, für Bruchteile eines Cents je Suche.
Bauform
Wo die Umkehrbarkeit gerissen war
Bedingung 3 aus der Vorfrage, zweimal an einem Tag.
Ein Ratgebertext wurde als Datei direkt ins Webverzeichnis gelegt, statt als Seite in die Redaktion. Dort war er im Backend unsichtbar, und beim nächsten Druck auf den Veröffentlichen-Knopf ging er mit, unredigiert. Zurückgenommen am selben Tag. Regel seitdem: Texte leben in der Redaktion, nie als Datei daneben. Ein Freigabeschritt schützt nur, was durch ihn hindurch muss.
Annehmen setzte den Status sofort auf „angenommen“ und öffnete den Editor. Wer dort abbrach, hatte trotzdem einen angenommenen Eintrag. Die Rücknahme gab es nicht. Der Knopf hieß Annehmen und meinte Übernehmen. Das ist die Vorauswahl aus Station 06 des Durchstichs in anderer Gestalt: ein Schritt, der aussieht wie prüfen und wirkt wie durchwinken.
Der Dienst, der Änderungen auf den Server bringt, lief seit jeher ohne Wirkung: ein Rechte-Eintrag auf Nutzerebene stach die allgemeinen Rechte aus, und die üblichen Rechtebefehle heilten ihn nicht. Keine Fehlermeldung. Kein Modell beteiligt, aber dasselbe Muster wie überall auf dieser Seite: das stille Versagen ist das teure.
Messlatte
Grenzen
Ja, doppelt: Annehmen im Posteingang, dann Veröffentlichen. Zwischen beiden liegt die Bearbeitung.
Teilweise. Drei Suchen je Kandidat, fünf Kandidaten je Lauf, zwei Läufe je Tag. Das begrenzt die Schritte, nicht die Token und nicht das Geld. Der Bot läuft nicht über die Schleuse, also ohne Tagesbudget. Bei zehn Aufrufen am Tag ist das eine Lücke, kein Risiko.
Dünn. Ein Protokoll je Lauf, das der nächste Lauf leert. Am Vorschlag selbst bleiben Belege und Sicherheitssatz. Wer wissen will, warum der Bot letzte Woche ein Gewicht vorgeschlagen hat, das ich abgelehnt habe, findet nichts mehr.
Keine im Modellaufruf. Der Bot sieht Produktnamen, keine Nutzer. Die App selbst kommt ohne Konto, ohne Tracking und ohne Cookies aus.
Quellen
outdoorkitchen/admin/lib.php, Zeilen 1303 bis 1411. Zeitplan: build/outdoorkitchen-gear-research-cron.sh.
Vorfälle vom 19.08.2026: 05_Projects/outdoorkitchen.md.