openjdk version "21.0.11" 2026-04-21 LTS
OpenJDK Runtime Environment Corretto-21.0.11.10.1 (build 21.0.11+10-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.11.10.1 (build 21.0.11+10-LTS, mixed mode, sharing)
javac 21.0.11
PASS blank equipment id -> IllegalArgumentException
PASS null request id -> IllegalArgumentException
PASS zero-length interval -> IllegalArgumentException
PASS reversed interval -> IllegalArgumentException
PASS missing start -> NullPointerException
PASS missing end -> NullPointerException
PASS missing request identity -> NullPointerException
PASS missing equipment identity -> NullPointerException
PASS missing period -> NullPointerException
PASS reference booking 0
PASS interval [5,10) against [10,20): CONFIRMED
PASS reference booking 1
PASS interval [20,25) against [10,20): CONFIRMED
PASS reference booking 2
PASS interval [0,5) against [10,20): CONFIRMED
PASS reference booking 3
PASS interval [25,30) against [10,20): CONFIRMED
PASS reference booking 4
PASS interval [5,11) against [10,20): OVERLAP_REJECTED
PASS reference booking 5
PASS interval [19,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 6
PASS interval [12,18) against [10,20): OVERLAP_REJECTED
PASS reference booking 7
PASS interval [5,25) against [10,20): OVERLAP_REJECTED
PASS reference booking 8
PASS interval [10,20) against [10,20): OVERLAP_REJECTED
PASS reference booking 9
PASS interval [10,15) against [10,20): OVERLAP_REJECTED
PASS reference booking 10
PASS interval [15,20) against [10,20): OVERLAP_REJECTED
PASS initial request confirmed
PASS same payload retry returns original outcome
PASS changed interval under reused id rejected -> IllegalArgumentException
PASS changed equipment under reused id rejected -> IllegalArgumentException
PASS failed changed payload leaves original booking active
PASS different equipment accepts same interval
PASS unknown cancellation changes nothing
PASS rejected request has no booking to cancel
PASS cancellation releases original booking
PASS repeated cancellation reports no active booking
PASS retry after cancellation retains original outcome
PASS rejected outcome remains stable after availability changes
PASS rejected request id cannot change payload -> IllegalArgumentException
PASS new request uses released interval; old retry did not rebook
PASS replacement booking protects released interval again
PASS null request rejected -> NullPointerException
PASS null cancellation rejected -> NullPointerException
PASS total=48
PASS reserve confirmed
PASS factory quote persisted
PASS snapshot restore round trip
PASS escaped entity cannot mutate committed snapshot
PASS reload observes committed retirement
PASS global replay precedes current eligibility clock and maintenance
OBSERVED changed equipment under same id: requestId reused with different payload
PASS changed equipment under same id
OBSERVED changed price revision under same id: requestId reused with different payload
PASS changed price revision under same id
PASS retired denies new request
PASS cancel confirmed
PASS repeat cancel false
PASS unknown cancel false
PASS cancel preserves contract and confirmed history
PASS only actual reserve and cancel publish
PASS fresh confirmation
PASS overlap rejected
PASS rejected history survives release
PASS new identity uses released interval
PASS half-open adjacent accepted
PASS invalid period stored
PASS unknown equipment stored
PASS maintenance restriction BLOCKED
PASS maintenance restriction REVIEW_REQUIRED
OBSERVED maintenance technical failure does not consume request: port unavailable
PASS maintenance technical failure does not consume request
PASS port failure leaves no receipt
OBSERVED before commit failure: before commit
PASS before commit failure
PASS rollback covers calendar receipt contract
PASS fresh repository can retry rolled-back request
OBSERVED cancel commit failure: cancel before commit
PASS cancel commit failure
PASS cancel rollback retains active commitment
OBSERVED after commit before publish failure: after commit
PASS after commit before publish failure
PASS commit survives publication gap
PASS history replay does not repair lost event
OBSERVED publisher exception: publisher unavailable
PASS publisher exception
PASS publisher failure also retains committed state
OBSERVED nested transaction rejected: nested transaction unsupported
PASS nested transaction rejected
TRACE reserve=CONFIRMED cancel=true history=CONFIRMED active=false events=[Event[kind=ReservationConfirmed, requestId=RequestId[value=r1]], Event[kind=ReservationCancelled, requestId=RequestId[value=r1]]]
RESULT chapter27 checks=36
PASS trajectory ACTIVE/RELEASED/1-3600
TRACE 1 [INVALID_PERIOD, INVALID_PERIOD, true, INVALID_PERIOD, INVALID_PERIOD, false]
PASS trajectory ACTIVE/RELEASED/7200-10800
TRACE 2 [OVERLAP_REJECTED, OVERLAP_REJECTED, true, OVERLAP_REJECTED, CONFIRMED, false]
PASS trajectory ACTIVE/RELEASED/10800-14400
TRACE 3 [CONFIRMED, CONFIRMED, true, CONFIRMED, OVERLAP_REJECTED, true]
PASS trajectory ACTIVE/RELEASED/7200-200000
TRACE 4 [INVALID_PERIOD, INVALID_PERIOD, true, INVALID_PERIOD, INVALID_PERIOD, false]
PASS trajectory ACTIVE/BLOCKED/1-3600
TRACE 5 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/BLOCKED/7200-10800
TRACE 6 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/BLOCKED/10800-14400
TRACE 7 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/BLOCKED/7200-200000
TRACE 8 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/REVIEW_REQUIRED/1-3600
TRACE 9 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/REVIEW_REQUIRED/7200-10800
TRACE 10 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/REVIEW_REQUIRED/10800-14400
TRACE 11 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory ACTIVE/REVIEW_REQUIRED/7200-200000
TRACE 12 [MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, true, MAINTENANCE_RESTRICTED, MAINTENANCE_RESTRICTED, false]
PASS trajectory INSPECTION_REQUIRED/RELEASED/1-3600
TRACE 13 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/RELEASED/7200-10800
TRACE 14 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/RELEASED/10800-14400
TRACE 15 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/RELEASED/7200-200000
TRACE 16 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/BLOCKED/1-3600
TRACE 17 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/BLOCKED/7200-10800
TRACE 18 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/BLOCKED/10800-14400
TRACE 19 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/BLOCKED/7200-200000
TRACE 20 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/REVIEW_REQUIRED/1-3600
TRACE 21 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/REVIEW_REQUIRED/7200-10800
TRACE 22 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/REVIEW_REQUIRED/10800-14400
TRACE 23 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory INSPECTION_REQUIRED/REVIEW_REQUIRED/7200-200000
TRACE 24 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/RELEASED/1-3600
TRACE 25 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/RELEASED/7200-10800
TRACE 26 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/RELEASED/10800-14400
TRACE 27 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/RELEASED/7200-200000
TRACE 28 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/BLOCKED/1-3600
TRACE 29 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/BLOCKED/7200-10800
TRACE 30 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/BLOCKED/10800-14400
TRACE 31 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/BLOCKED/7200-200000
TRACE 32 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/REVIEW_REQUIRED/1-3600
TRACE 33 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/REVIEW_REQUIRED/7200-10800
TRACE 34 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/REVIEW_REQUIRED/10800-14400
TRACE 35 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory RETIRED/REVIEW_REQUIRED/7200-200000
TRACE 36 [INELIGIBLE, INELIGIBLE, true, INELIGIBLE, INELIGIBLE, false]
PASS trajectory UNKNOWN/RELEASED/1-3600
TRACE 37 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/RELEASED/7200-10800
TRACE 38 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/RELEASED/10800-14400
TRACE 39 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/RELEASED/7200-200000
TRACE 40 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/BLOCKED/1-3600
TRACE 41 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/BLOCKED/7200-10800
TRACE 42 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/BLOCKED/10800-14400
TRACE 43 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/BLOCKED/7200-200000
TRACE 44 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/REVIEW_REQUIRED/1-3600
TRACE 45 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/REVIEW_REQUIRED/7200-10800
TRACE 46 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/REVIEW_REQUIRED/10800-14400
TRACE 47 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS trajectory UNKNOWN/REVIEW_REQUIRED/7200-200000
TRACE 48 [UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, true, UNKNOWN_EQUIPMENT, UNKNOWN_EQUIPMENT, false]
PASS available before promise
PASS stale query cannot authorize reservation
PASS ACTIVE and RELEASED insufficient for requested window
PASS same equipment different window available
PASS cancel releases commitment despite retained receipt
PASS available now cannot change past refusal
PASS new request can use free window
OBSERVED naiveAvailable=true qualified=true timeValid=true committed=true available=false
RESULT chapter28 scenarios=48 checks=55 equalOutcomeSnapshotEventTrajectories=true
