Zusammenfassung

  • Fassung 01 eines individuellen Internet-Drafts ergänzt einen Audit-Eintrag für kumulative Ausgabenlimits: verbrauchte und reservierte Beträge, die aktuelle Anfrage und die vom Entscheidungsdienst gelesene Zustandsversion.
  • Eine verlorene Werkzeugantwort gibt eine Reservierung nicht frei. Die Wiederholung derselben Anfrage nutzt ihren bestehenden Platz; eine andere Anfrage mit veraltetem Saldo kann das delegierte Limit überschreiten.

Keine Antwort, kein neues Geld

Ein Agent beauftragt ein kostenpflichtiges Werkzeug. Die Antwort bleibt aus. Wer nun das Budget einfach wieder freigibt, setzt darauf, dass die Arbeit nicht stattgefunden hat. Genau diese Wette verbietet die Buchungslogik in Sankalp Gildas neuer Entwurfsfassung: Der genehmigte Betrag bleibt reserviert, bis ein Datensatz zur selben Anfrage den beobachteten Effekt festhält.

Die Fassung wurde am 27. Oktober angekündigt; der IETF Datatracker führt sie als individuellen Internet-Draft. Es geht um einen vorgeschlagenen Datensatz, nicht um einen berichteten Bezahlvorfall. Gegenüber Fassung 00 ist Abschnitt 5.9 neu. Er zwingt zur Frage, welche früheren Zusagen eine Entscheidung in ihrem Saldo tatsächlich berücksichtigt hat.

Bei einer Obergrenze reicht es nicht, jede Zahlung isoliert zu prüfen. Bereits ausgegebene Beträge und genehmigte, aber noch nicht abgeschlossene Aufträge beanspruchen denselben Rahmen. Das neue consumption-state soll daher das Limitdokument per Hash binden, Einheit und Obergrenze nennen sowie consumed, reserved, requested, die gehaltenen Anfragen und stateRevision auflisten. Die Revisionsnummer zeigt, welchen Buchungsstand der Entscheidungsdienst gelesen hat. Ein „frischer“ Zeitstempel kann eine früher genehmigte, aber noch offene Ausgabe trotzdem übersehen.

Wiederholung oder neue Rechnung?

Das Rechenbeispiel des Entwurfs setzt das Limit bei 50.000 Pence an. 30.000 sind verbraucht, 12.000 für einen früheren Auftrag gehalten. Kommt derselbe Auftrag mit demselben Anfragedigest erneut, bleiben insgesamt 42.000 belegt. Der verlorene Antwortzettel erzeugt keine zweite 12.000er Belastung. Ein anderer Auftrag über 12.000 ergäbe dagegen 54.000 und müsste abgelehnt werden. Diese Zahlen sind Testwerte des Texts, keine beobachteten Transaktionen.

Eine offene Reservierung endet nur mit einem passenden Wirkungsnachweis. Zeigt ein späterer Datensatz für dieselbe Anfrage occurred, wird der Betrag verbraucht. Zeigt er none, darf er freigegeben werden. Schweigen des Werkzeugs lässt die Frage offen. Das kann eine legitime Ausgabe vorübergehend blockieren, wenn tatsächlich nichts passierte. Eine voreilige Freigabe könnte aber eine zweite Ausgabe auf Geld stützen, dessen erste Verwendung ungeklärt ist.

Die eigentliche Prüfung beginnt über mehrere Datensätze hinweg. Eine zweite Genehmigung könnte noch die stateRevision von vor der ersten Reservierung lesen. Ihre Rechnung wäre in sich schlüssig und dennoch unvollständig. Der Entwurf verlangt, die Einträge unter demselben Limitdokument nach Zustandsrevision zu ordnen: Jede frühere offene Genehmigung muss später als gehalten oder verbraucht auftauchen, bis sie ordentlich abgeschlossen ist. Fehlt sie, wird das Fenster einer doppelten Inanspruchnahme sichtbar. Eine Freigabe ohne none-Nachweis fällt ebenfalls auf.

Auch ein Datensatz, der eine Genehmigung oberhalb der Obergrenze meldet, gilt als wohlgeformt. Ein Auditformat, das solche Zeilen als ungültig aussortierte, wäre ein besonders höflicher Komplize des Fehlers. Es muss den Fehlentscheid beschreiben können. Die Unterschrift unter einem konsistenten Eintrag belegt allerdings nicht automatisch, dass sämtliche relevanten Einträge geliefert wurden oder die behauptete Beobachtung stimmt.

Der Saldo hat einen Verantwortlichen

Das Limit stammt aus der Delegation. Der Entscheidungsdienst liest einen Buchungsstand, das Werkzeug handelt, ein Beobachter hält den Effekt fest, ein Verwahrer legt die Unterlagen vor. Wer über die Einhaltung des Limits urteilt, braucht die Übergänge zwischen diesen Rollen. Er muss sehen, ob die nächste Entscheidung die alte Reservierung kannte und wer die Auflösung bezeugte.

Die Vorlage liefert dafür Felder und Vergleichsregeln. Der Betreiber eines solchen Systems müsste zusätzlich festlegen, wer den Zustandsstand schreibt und wer die Reihe vorlegt, wenn eine Genehmigung bestritten wird. Ein Timeout ist kein Haushaltsbeschluss. Er macht die offene Verpflichtung dringender, nicht kleiner.

Originalunterlagen