Reported three times across three sessions, two days apart, and it
survived a whole UI rebuild: "i cant see whos support i accept".
It was not styling. The move button's label was format!("{c:?}"), so the
player read `RespondToSupport { response: AcceptBond }` — Rust struct
syntax with no name in it. And the command does not carry the
counterparty, so nothing rendering it alone could have said who; it comes
off the view, as whoever played Support at this seat.
Four more seat-panel fields had the same defect, including `support
AcceptBond` — the one the report names. CB-WP-0020 fixed exactly this for
selections and left its four neighbours as they were.
command_label has no catch-all arm, and that earned its keep before any
test ran: GroundChoice::RejectReverse and SupportResponse::BreakRivalry
both failed to compile — two moves that would have shipped as struct
dumps. An offer the view cannot see is said to be unseen rather than given
an invented name.
The finding underneath: the coverage probe that exists to prove every view
field reaches the PLAYER was matching "player: Some(PlayerId(1))" and
"members: [PlayerId(1)". It was certifying the defect as coverage and
would have gone red had anyone fixed it. Second confirmation of
CB-WP-0024's finding, from the sharper side: a probe naming Debug output
does not merely fail to protect, it pins the defect in place.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
edab11c0e4
commit
c2a7e40b67
6 changed files with 495 additions and 16 deletions
|
|
@ -89,6 +89,18 @@ pub fn view(viewer: Option<PlayerId>) -> GroundView {
|
|||
}),
|
||||
),
|
||||
(p2, SelectionView::Hidden),
|
||||
// CB-WP-0034: P3 offered P2 their Support, revealed. The
|
||||
// fixture now carries the case the report was about, so the
|
||||
// coverage probe for `support_responses` can name a SEAT
|
||||
// rather than a response with nobody attached to it.
|
||||
(
|
||||
p3,
|
||||
SelectionView::Shown(Selection {
|
||||
action: Action::Support,
|
||||
target: Some(p2),
|
||||
problem: None,
|
||||
}),
|
||||
),
|
||||
]),
|
||||
ground_modes: BTreeMap::from([(p3, GroundMode::Gr)]),
|
||||
ground_choices: BTreeMap::from([(p3, GroundChoice::ProtectProblem { problem: 7 })]),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue