Propagate taint across the call graph
A function is only as trusted as the least-trusted value it returns — and that flows transitively across files. Decorate your boundaries and producers; the engine works out everything in between by following the calls. The boundary-integrity rule family holds a validator to actually being able to reject input — a boundary that cannot say "no" is just relabelling untrusted data.