
How bricks store meaning, not markup
One schema per brick, and no class names in the content.
A page is a draft, in review, approved or rejected. The state is one value for all languages, so one review covers the English and the German page.
Moves are listed, not inferred. An author sends a draft or a rejected page to review, or takes it back. A reviewer approves or rejects it, with a note. A move that is not on the list is refused for everyone, the admin included.
Each move notifies the next people in line: reviewers when a page enters review, approvers when it is approved, authors when it is rejected. The notice is written in the same transaction as the save, so a save that fails sends nothing.

The guard asks what you may do, never who you are.
