Skip to main content
Two levels of rules apply to a deck, on purpose. Shape is what every save must pass: the right types, the enums, the bounds, and the rules that tie one setting to another, such as a pair look needing several answers per person. A body that breaks shape answers 400 and fix names the field. Readiness is the rest: a question, enough answers, a range that makes sense. A deck can be saved without it, because a person builds a deck in pieces. A room cannot start without it.

ready and problems

get_deck, get_outline and every write that changes a deck answer with the readiness check, run for you. get_step and list_decks do not.
step is the step index, overlay the card on that slide when it is a card, path where inside the step, and message the same sentence the presenter sees on the Present button. Fix what problems names before handing the deck over.

warnings

warnings sit next to problems and never stop a room. They name what will look wrong on the big screen, such as a card too small to read or a card on top of another card or a text box. On a team without Pro they also name a card whose join link is stored off, since hiding it is a Pro setting and the room and the screenshot show it anyway. Whether a card covers the text printed on the slide’s page itself, only a picture can tell, so get_screenshot adds coversPageText. A deck with warnings can go on stage. A careful agent clears them anyway.

The rules

The list per widget, generated from the code, is in the reference.

Where it runs

The same function runs in three places, so the message an agent reads and the message a presenter reads are the same words about the same poll: in get_deck, get_outline and every deck write, on the editor’s Present button, and at the door of a room.
An agent does not need to keep its own copy of these rules. Read problems and warnings, fix what they name, read again.