"Your places have moved so that you can sit together." is said when the engine rearranges places it chose itself. On the booking page a booker asks for a QUANTITY and names no place: every place they hold is the engine's own choice. Swapping some of those choices for others changes nothing the booker ever expressed, so there is nothing to tell them, and the sentence tells them something false about their own gesture on top: they asked to give a place back, not to sit together.
The case the maintainer met. A place is given back. Giving back the one that would have left another on its own is avoided, so the engine gives back a different one of its own choices and closes the party up. Purely internal bookkeeping, decided by the engine on both counts, and reported as though the booker had asked for a favour.
What it should do: say nothing. A notice is for an outcome that differs from what was asked, not for how the engine reached the outcome asked for. Silence here is not hiding anything either: the page and the plan both redraw the places from the answer, so a booker who cares where they are sitting is looking at the current places already.
What must still be said, so this is not read as a licence to go quiet:
- Fewer places held than were asked for. The control would otherwise show a number nobody holds.
- The party could not be seated together, or not in one row. That is a fact about the outcome rather than about the route to it, and the booker cannot see it from a count.
- Something the booker DID name was affected: an area they chose that filled up, or a place they picked on the plan. A chosen place is never moved today, which is exactly why the rest of this is safe.
Where it comes from. VenuePlacementProvider raises that one sentence in two places, on a placement whose proposal gave up a place and on a consolidation, and OfferClaim runs the consolidation after EVERY change a claim makes, a reduction included. So the sentence follows any internal rearrangement, whatever caused it.
The codebase already draws this line elsewhere. On the seat map, releasing a place where giving back the clicked one would strand another answers "We gave back one of your end places instead, so yours stay side by side. A single empty place is rarely booked." There the booker DID name a place, so the substitution is news and is worth a sentence. That is the distinction to apply: the map speaks because a choice of the booker's was overridden, and the booking page should stay quiet because none was.
Not reproduced from two obvious geometries, recorded so nobody repeats them: on the map, releasing the first place of a run of three substitutes an end and says the right thing; on the booking page, stepping a party of six down to two in a six-place row peels from the end and says nothing at all.
Reported by the maintainer while testing #3618086: Leave a notice alone when the answer repeats itself, so a redraw stops reading as news.
AI-Generated: Yes (Claude Code was used to help draft this issue summary and to reproduce the surrounding paths in kernel fixtures, from a discussion with the maintainer who set out the rule above. I reviewed it before posting; there is no code on this issue yet.)
Issue fork yoyaku-3618112
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
mably commentedComment #4
mably commentedComment #6
mably commented