Files
mdg-filius/tools/ticket-oracle
julian.kiedaischandClaude Opus 5.5 416d5fdea3 feat: F5.6c measured and accepted on test-filius; tickets up to 5 s ahead of F's clock
test-filius refused every ticket as from the future: its clock was 886 ms
behind the dashboard's machine, with NTP still 8 ms (one ticket in 125, as a
ticket carries whole seconds). F now takes a ticket signed up to 5 s ahead
(TICKET_AHEAD_SECONDS); itsdangerous refuses one second, and the oracle
keeps that on record.

tools/live measures and accepts on a live F, with fresh projects each run:
m3 (200 rooms of the largest example with pings: probe p95 37 ms), m4 (63 KB
document; dragging makes an update per pointer move, 59/s), m5 (an hour
through the proxy), acceptance (two browsers, 14 checks, passed three times)
and clock (F's clock against ours).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 19:22:22 +00:00
..

Orakel für die Eintrittskarte

Das Dashboard signiert die Eintrittskarte für Server F mit itsdangerous (URLSafeTimedSerializer, Salz mdg-filius-ticket, 60 s), Server F prüft sie in Node (packages/server/src/ticket.ts). Dieses Orakel lässt itsdangerous selbst Karten ausstellen — bei fester Uhr — und hält fest, was es beim Lesen zu einem Zeitpunkt antwortet: die Nutzlast, abgelaufen oder falsch signiert.

./run.sh   # schreibt packages/server/test/tickets.python.json

Braucht Python 3; itsdangerous kommt in der Version des Dashboards (backend/requirements.txt) in ein eigenes .venv.

Fälle: gewöhnliche Karte (schon sie ist zlib-gepackt), Lesestufe, Umlaute und Emoji, lange Namen, genau 60 s alt, 61 s alt, aus der Zukunft, fremdes Geheimnis, Scratchs Salz, eine veränderte Nutzlast, ohne Signatur, Unsinn, leer, eine Liste statt eines Objekts (ungepackt), Karten ohne Stufe, mit unbekannter Stufe, mit einem Projekt, das keine UUID ist, ohne Namen, nur mit den Pflichtfeldern.