Lass technische Fehler als eigene Ergebnisse sichtbar bleiben.
Ein Auswerter soll erklären, ob seine Zahl gültig ist. Unser Vertrag kennt valid_zero und valid_nonzero für erfolgreiche Zählungen, no_steps für einen fehlenden Ablauf, invalid_input für einen verletzten Ereignis- oder Identitätsvertrag, source_unavailable für eine fehlende Quelle und evaluation_failed für einen Fehler während der Rechnung. Bei einem Fehler steht count auf None, nicht auf 0. Prüfe die leere Schrittfolge, bevor du ihr erstes Element liest. Speichere Status, Ursache und Gültigkeitsbereich gemeinsam. Eine umbenannte Ereignisart darf eine bekannte Eingabeverletzung nicht still in eine Erfolgsnull verwandeln. Der folgende Rechenkern setzt bereits validierte Mengen aus demselben Identitätsraum voraus; die äußere Eingabe- und Quellenprüfung muss die übrigen Fehlerzustände davor liefern.
Ein Beispiel
Musterergebnisse: gültige Suche ohne Treffer={status:valid_zero,count:0}. Keine Schritte={status:no_steps,count:None}. Nicht erreichbare Tabelle={status:source_unavailable,count:None}. Ein Ausfall der Quelle verändert den letzten gültigen Wert nicht zu null; die Anzeige kann den älteren Wert mit seinem Zeitpunkt und den aktuellen Messfehler getrennt zeigen.
Python 3.11 · Lehrbeispiel
# Rechenkern für bereits validierte, kompatible Kennungsmengen.
def count_common(steps):
if not steps:
return {"status": "no_steps", "count": None}
common = set(steps[0])
for step in steps[1:]:
common &= set(step)
count = len(common)
return {"status": "valid_nonzero" if count else "valid_zero", "count": count}
print(count_common([]))
print(count_common([{"lauf-1"}, {"lauf-2"}]))
Erwartete Ausgabe
{'status': 'no_steps', 'count': None}
{'status': 'valid_zero', 'count': 0}