test(panel): Q5 names the successor frame it orders against

`!messages.is_empty()` could be satisfied by any unrelated semantic
message, so the row asserted an ordering against a frame it never
confirmed was there. It now requires the unwritten messages to contain
InstanceMessage::PanelFrame(PanelFramePayload::Absent) --- the successor
frame whose own transition raised the release.

The assertion bites: suppressing that payload while keeping the
cancellation fails the row, where the emptiness check would not have
noticed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
Levi Neuwirth 2026-08-21 14:26:32 +02:00
parent 85946bf9b6
commit 6142acc203
No known key found for this signature in database
1 changed files with 10 additions and 3 deletions

View File

@ -8813,9 +8813,16 @@ mod tests {
merely both arriving"
);
assert!(
!messages.is_empty(),
"fixture: projection really did produce the successor frame \
whose own transition required that release"
messages.iter().any(|message| matches!(
message,
InstanceMessage::PanelFrame(pmacs_protocol::panel::PanelFramePayload::Absent)
)),
"fixture: the unwritten messages must contain THE SUCCESSOR \
FRAME --- the `Absent` payload whose own transition raised \
the release. A non-empty vec proves nothing: any unrelated \
semantic message would satisfy it, and the row would then \
assert an ordering against a frame that was never there. \
Got {messages:?}"
);
assert!(
!states[&fid].has_pending_release(),