Issue #3621579: Make the tugboat seed run again, and stop it describing a site that no longer exists
The seed died before it finished, in three ways, and then described a site that no longer exists.
BookingAsk was called without being imported in a file that declares no namespace, so the name resolved to the global \BookingAsk. A slot tariff allocates a quota and has no capacity field, so both capacity keys were dropped silently and every seeded allocation was left unbounded. And book() and BookingAsk::fromQuantity() both take the resource tariff a booking is asked against, not the slot tariff carrying its quota, so passing the latter was a TypeError.
The guide page told reviewers there is no admin UI and that one lands in yoyaku_ui. Yoyaku UI ships, so the seed installs it and the page opens on /admin/booking, keeping JSON:API alongside for reading the entities raw. That list also pointed at /jsonapi/yoyaku/yoyaku, which is not an entity type; the bookings are yoyaku_booking.
Verified
Ran the seed the way the preview build does (drush php:script .tugboat/setup.php) on a fresh standard site. It completes, every slot tariff carries its quota and passes validate(), and all five JSON:API paths the guide links answer 200 with rows.
Rebuilding the preview around the workflow and payment modules is separate and not attempted here.
AI-Generated: Yes (Claude Code was used to help draft this merge request and to write the fix. I reviewed it and ran the seed against a real site before posting.)