Composition rules

genui/rules.js enforces every rule and returns a list of violations. If a tree has any, the renderer shows plain text instead. Each rule has a passing and a failing example, both validated live.