Three things I left out of the permission intersection demo, on purpose

The demo repo proves the model in fifteen lines. Here's exactly what breaks if you ship those fifteen lines as-is, and what each fix actually looks like.