AGM_rewrite-4 · 27. August 2026 · Abschluss der Phase 3

Zehn Entscheidungen — fünf halten eine Aufgabe auf

Phase 3 ist gebaut. Ein einziger Punkt fehlt: W-31, der gemeinsame Ausgabeweg für Druck und Export. Er hat vor dem Bauen angehalten, weil fünf Fragen offen sind — und eine davon ist ein Widerspruch zwischen den beiden Prüfmodellen, den der Lauf nicht selbst auflösen darf. Die zweite Hälfte der Karten läuft nebenher: Sie hält nichts auf, aber jede Antwort ändert einen Vertrag.

Ketten
10durch
Wachen
505grün
Karten
10zu entscheiden
Aufgehalten
1Aufgabe (W-31)

Die fünf, die W-31 aufhalten

R-18 blockiert W-31 Vertrag

Ein gemeinsamer Ausgabeweg für alle sieben Druck- und Exportstrecken — oder sieben einzelne?

Die Entscheidungsakte führt diese Frage unter der Überschrift „entschieden am 26.08." — und darunter steht ausschliesslich die Frage. Die Aufgabe W-31 verlangt „festgelegtes Format, Zeichensatz und Trennzeichen", beruft sich dabei auf diese Entscheidung und findet sie nicht. Beide Prüfmodelle haben die Bauart inzwischen geklärt; was fehlt, ist die Richtungsentscheidung darunter. Nebenbei: es sind sieben Strecken, nicht sechs — die Aufgabe zählt falsch.

Warum A

Beide Modelle sind unabhängig auf dieselbe Bauart gekommen. Ein generisches „POST /exports" geht allerdings nicht: Der Zugangsvertrag lässt je Route genau eine Berechtigung zu, und ein Export des Plattform-Panels und einer des Kuratoren-Panels sind zwei verschiedene. Der gemeinsame Teil ist deshalb der Vertrag, nicht die Route.

Naht-Review W-31 vom 27.08., beide Köpfe · Fundstelle des Lochs in der Akte: Codex, Befund C5 · Zählung der Strecken: je Marker belegt in .kette/befunde-W-31.md

R-64 blockiert W-31 Widerspruch Sicherheit

Kommen Feldinhalte roh heraus — oder mit Schutz gegen Formeln in Tabellenprogrammen?

Ein Exportfeld, dessen Inhalt mit =, +, - oder @ beginnt, wird von Excel und LibreOffice als Formel ausgeführt, sobald jemand die Datei öffnet. Der übliche Schutz stellt ein Hochkomma davor. Genau das verletzt aber die Wache, die in der Aufgabe steht: „ein Export mit Umlauten und Trennzeichen im Feldinhalt kommt unverändert wieder heraus."

Codex

Die beiden Zusagen sind nicht gleichzeitig erfüllbar. Entweder Rohdaten mit dokumentiertem Risiko oder ein festes Safe-CSV-Format mit eigener Wache — aber die Wache „unverändert" muss dann umformuliert werden.

Gemini

Die Maskierung ist zwingend Teil dieses Vertrags, weil sie eine formale strukturelle Sicherheitseigenschaft der Ausgabe ist. Sie gehört nicht zur Darstellung, sondern zum Format.

Warum A

Codex hat mit dem Widerspruch recht, Gemini mit der Sache. Ein Export ist eine Datei, die jemand anders öffnet — die Gefahr trifft nicht das System, sondern den Empfänger. Die Wache stammt aus der Aufgabenformulierung dieses Projekts, nicht aus einer Anforderung von aussen; sie lässt sich präzisieren, ohne etwas aufzugeben. Das ist die Karte, bei der die Antwort am meisten kostet, wenn sie falsch ist.

Naht-Review W-31 vom 27.08. · erster echter Widerspruch der beiden Köpfe seit R-61 · nach Projektregel R-45 wird für einen Widerspruch nicht angehalten, aber jeder wird vorgelegt

R-67 blockiert W-31 Vertrag

Ab welcher Größe wird ein Export zum Auftrag — und woran wird sie gemessen?

Die Aufgabe sagt: „oberhalb einer festzulegenden Größe wird der Export ein Auftrag". Der Rechtekatalog kennt aber nur ein statisches Merkmal „löst einen Auftrag aus". Setzt man es, ist jeder Export ein Auftrag — auch der über drei Zeilen. Lässt man es weg, greift für den grossen Fall weder die Idempotenzwache noch das Auftragsmodell. Beide Modelle halten „Zeilen" als Messwert für untauglich: Für ein PDF ist es sinnlos, für eine CSV kein Größenmaß.

Warum A

Ein Export, der zu gross wird, darf nicht als Fehler beim Aufrufer landen — der kann nichts daran ändern. Die Umschaltung in den Auftragsmodus ist die einzige Antwort, die dem Nutzer etwas übrig lässt. Die drei Zahlen sind Startwerte und werden gemessen, nicht geglaubt.

Naht-Review W-31, beide Köpfe einig in der Diagnose · Codex zusätzlich: die Datei muss vor der direkten Auslieferung vollständig fertig sein, sonst reisst die Grenze mitten im Herunterladen

R-66 blockiert W-31 Vertrag wirkt auf W-33

Bekommt ein Auftrag eine vierte Bezugsart „die Plattform selbst"?

Jeder Auftrag muss sagen, wofür er lief — Exponat, Tour oder Mandant. Das war eine Entscheidung aus der Kostenzurechnung (W-33) und hat sich bewährt. Der Export des API-Verbrauchs aller Mandanten hat aber keines von dreien: Er gehört keinem Museum. Heute weist der Vertrag ihn deshalb ab.

Warum A

Beide Modelle einig. Die Alternative wäre, dem plattformweiten Export einen Mandanten unterzuschieben — und damit die Zurechnung zu verfälschen, um die die ganze Kostenrechnung gebaut ist.

Naht-Review W-31, Befund B1, beide Köpfe unabhängig · betrifft rückwirkend die bereits gebaute Kostenzurechnung W-33

R-65 blockiert W-31 Rechte

Bekommt der Rechtekatalog eine eigene Angabe „protokollpflichtig" neben „schreibend"?

Heute hängt die Protokollpflicht allein daran, ob eine Aktion Daten ändert. Ein Export ändert nichts — und ist trotzdem ein Datenabfluss. Im Altsystem ist genau das die erhobene Lücke: „kein Protokoll über ausgeführte Exporte; kein Schutz vor Massendownload mandantenübergreifender Daten."

Warum A

Beide Modelle haben unabhängig wörtlich denselben Vorschlag gemacht, bis auf den Namen des Feldes. Das ist das stärkste Signal, das dieses Verfahren erzeugen kann.

Naht-Review W-31, Befund B2, beide Köpfe · Altsystembeleg: specs/shared/audit-log.md:121-124 und die Feature-Matrix zu ADM-API-002

Die fünf, die mitlaufen

R-71 Widerspruch Struktur

Bekommt jede Aktion und jede Route einen verpflichtenden Fachbereich?

Zwei Dinge sollen nicht gebaut werden: die Benachrichtigungsglocke und die serverseitige Speicherung von Hilfetexten. Das ist jetzt als Datensatz festgehalten, samt Grund und Beleg — denn eine Fähigkeit, die es nicht gibt, sieht im Code aus wie eine vergessene. Genau so kamen zwei verbotene Aktionen in den Katalog, die diese Kette wieder entfernt hat. Die Frage ist, ob das reicht.

Codex

Eine Wortstammliste ist ein zusätzlicher Rauchmelder, aber kein Nachweis. Eine Benachrichtigung, die „inbox", „feed" oder „activity" heisst, kommt durch. Tragfähig ist nur ein geschlossener Fachbereich, dessen erlaubte Werte die Nicht-Features gar nicht enthalten.

Gemini

Eine Wortstamm-Liste ist der einzig tragfähige Weg — analog zu den bereits vorhandenen Listen für Geheimnisfelder. Wird das Feature umbenannt, fängt der lexikalische Filter es trotzdem, während eine starre Namensprüfung umgangen würde.

Warum A

Codex hat den stärkeren Einwand, und er ist im Bau berücksichtigt: Die Liste heisst „Verbotsworte" und wird im Kommentar und in einer Wache ausdrücklich als Rauchmelder bezeichnet, nicht als Beweis. Was gegen das sofortige Einführen spricht, ist nicht der Aufwand, sondern die Reihenfolge: Eine geschlossene Menge von Fachbereichen ist selbst eine Zusage, und die stünde heute vor der Fachlichkeit, die sie beschreiben soll.

Naht-Review W-27 vom 27.08., Widerspruch D2 · der Katalog wird nie kleiner — je später, desto teurer wird B

R-69 Vertrag Besucher

Sperrt „Audio blockieren" auch das Abspielen in der Besucher-App — oder nur das Erzeugen?

Der Schalter ist die Kostenbremse des Betreibers, wenn ein Museum nicht zahlt. Im Altsystem sagt der Kommentar am Feld etwas anderes als der Code tut: Der Kommentar spricht vom „Ausspielen von Audios in der Visitor-PWA", geprüft wird es aber ausschliesslich beim Erzeugen — an zwei Stellen. Gebaut ist die belegte Hälfte.

Warum A

Der Code des Altsystems ist der einzige Beleg, den es gibt — der Kommentar ist in diesem Projekt schon mehrfach als unzuverlässig nachgewiesen worden. Dazu die Sache selbst: Eine Kostenbremse soll Kosten bremsen, nicht Besucher bestrafen.

Erhebung zur Kette W-26 · Kommentar gegen Code: types/tenant.ts:16 gegen audio.service.ts:47-48 und audio.handler.ts:283-284

R-70 Betrieb

Eine Frist für zwischengespeicherte Zahlen von Fremdanbietern — oder zwei?

Das Plattform-Panel zeigt zwei Sorten Zahlen von aussen: den Zustand der Anbieter (erreichbar, Limit erreicht) und das Restguthaben. Das Altsystem hält den Zustand fünf Minuten vor, das Guthaben zehn. Im Vertrag steht bisher nur die Fünf.

Warum A

Die zwei Fristen des Altsystems sind kein Zufall: Ein Anbieterausfall soll schnell auffallen, ein Kontostand ändert sich zwischen zwei Abbuchungen nicht. Der Vertrag nimmt die Frist bereits als Parameter entgegen — beide Wege sind heute gleich billig, später nicht mehr.

Erhebung zur Kette W-26 · provider-health.service.ts:32 gegen provider-credits.routes.ts:15

R-68 Oberfläche

Braucht eine gesperrte Mandantensperre einen Grund über den Zustand hinaus?

Ist ein Museum gesperrt oder geschlossen, soll das Kuratoren-Panel das benennen und nicht als Störung zeigen. Gebaut ist: Der benannte Grund ist der Zustand — „gesperrt" oder „geschlossen". So steht es auch im Wortlaut der Wache. Ein zusätzlicher Grund („Zahlungsrückstand") wäre eine geschlossene Auswahlliste, und dafür ist genau ein Wert belegt.

Warum A

Die Entwürfe zeigen für den Mandantenzustand ausschliesslich den Wert „aktiv" und benennen die Lücke selbst. Was nicht belegt ist, kommt nicht in den Vertrag — und der Weg zurück ist offen: Eine Gründemenge lässt sich später ergänzen, eine erfundene wieder loszuwerden ist schwerer.

Kette W-26 vom 27.08. · Lücke benannt in db-inventory/01-tenants-liste.md:38-39 · einziger belegter Grund: der „Mahnwesen-Hebel" am Altsystemfeld

D-1 Widerspruch Vertrag

Sagt eine Antwort selbst, ob ihr zwischengespeicherter Stand veraltet ist?

Die Anbieterkarten tragen einen Zeitpunkt: „zuletzt geprüft um 12:20". Ob das noch frisch ist, muss jemand ausrechnen. Die Frage ist, wer — und die beiden Prüfmodelle antworten entgegengesetzt. Gebaut ist bereits die strengere Lesart; diese Karte fragt, ob sie bleibt.

Codex

Ein gespeicherter Wahrheitswert über Aktualität wird zwischen zwei Antworten falsch, ohne dass ihn jemand neu berechnet. Die Oberfläche soll aus dem Zeitpunkt und dem zentral festgelegten Intervall ableiten.

Gemini

Ein serverseitiges Kennzeichen wäre robuster. Sonst lässt eine Oberfläche die Rechnung weg und zeigt einen veralteten Stand als aktuell an.

Warum A

Codex' Einwand ist technisch zwingend: Ein „veraltet: nein" altert selbst. Geminis Sorge ist trotzdem berechtigt und beantwortet — die Rechnung liegt als Vertragsfunktion vor, statt in jeder Oberfläche als fest eingetippte Fünf.

Naht-Review W-26 vom 27.08., Widerspruch D1 · nach Projektregel R-45 mit der strengeren Lesart gebaut und hier vorgelegt

0 von 0 beantwortet