workflow diff
  before                  1.0.0.0  sha256:b310b9dc037b8195...
  after                   1.2.1.3  sha256:e01c03b8157eda8f...
  bump class              S F E
  P-12 evolution-safety   not checked [deferred-to-phase-1]
                          the bump class names moved counters, never safety

topology
  + node join_waitlist
  ~ node availability_check — its edges moved; the node itself persists
  ~ node check_booking — its edges moved; the node itself persists
  + finish wiring join_waitlist -> END
  + edge availability_check -> join_waitlist [conditional 'waitlist'] guard route_availability
  + edge check_booking -> join_waitlist [conditional 'waitlist'] guard route_booking

contracts
  values shown            canonical JSON — what the digest saw, never the source
  + node contract join_waitlist {"effect":["external","network"],"input":["availability","traveler_id"],"output":["booking_status"]}

state schema
  + key seat_preference: str (optional=true)
  - key itinerary: str
  ~ key availability: type str -> list[str]
