Permissions travel with the thread
Each row carries the permission scope of its source. When an answer is woven, rows outside your scope are dropped before any total is computed.
Why not a separate model
Copying permissions into a second system means they drift. Reading them from the source keeps one truth.


